问题标签 [access-violation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 使用 Delphi 的 C++ DLL 时的访问冲突
我在尝试使用 Delphi (Turbo Delphi 2006) 程序中用 C++ 编写的 DLL 时遇到了一个奇怪的问题。
当我从命令行运行 Delphi 程序(见下文)时,一切正常。另外,当我在没有调试的情况下从 Delphi 环境中运行它时(CTRL+SHIFT+F9),一切都很好。但是,当使用调试 (F9) 运行它时,我收到以下错误:
项目 Z:\test.exe 出现错误消息:“0x00403fdf 处的访问冲突:读取地址 0x00a14e74”。进程停止。使用 Step 或 Run 继续。
奇怪的是,错误发生在执行最后一个“结束”时。的代码。Delphi 的 CPU 显示说这是在 'UnsetExceptionHandler' 中的某个地方,在 'FinalizeUnits' 之前的四行,更具体地说,在
00403FDF 3901 cmp [ecx],eax
我在这里有点不知所措;Delphi 不是我的领域(我是编写 DLL 的人,现在我需要提供一个使用它的示例程序)。因此,非常感谢您对这个问题的任何帮助:)
这是德尔福代码:
dll.h
dll.cpp
c# - C# 中的 StgCreateStorageEx 给出 AccessViolationException
近一个星期以来,我一直试图弄清楚如何在 C# 中调用 StgCreateStorageEx,而我所要展示的只是 AccessViolationException 和头痛。
我什至不确定我应该如何声明该函数。我见过无数的网站以无数种不同的方式声明它。但这就是我目前拥有的:
我看到一些网站告诉我我需要在最后一个参数上使用 MarshalAs,并且我尝试过使用 IUnknown、Interface、LPStruct 和其他几个参数。唯一让我感到困惑的是编组器对数据类型的抱怨。我有一种可能是相关的感觉,但由于它只告诉我它不想要什么,我不知道它想要什么。
关于我如何调用函数:这开始时要简单得多。但是在得到内存违规后,我开始阅读并最终得出结论,确保 GC 没有把我搞砸的唯一方法是自己管理内存,因此你有这个烂摊子:
有人对如何理顺这种混乱并使其真正发挥作用有任何想法吗?
顺便说一句,这里的最终目标是能够将一个文件夹从 TreeView 拖到 Windows 资源管理器中,并让它将该文件夹及其所有内容写入到它放置的任何位置。关键是 TreeView 表示完全存储在数据库中的文件系统。我能找到的唯一方法是传递一个 IStorage,因此需要调用 StgCreateStorageEx。
sleep - 执行 Threading.Thread.Sleep 时出现 AccessViolationException
我们开发了一个在 Vb.Net 中具有密集线程使用(+-50 个线程)的应用程序。有时我们会在随机线程执行 Thread.Sleep() 时收到 AccessViolationException。
据我们所知,我们没有执行不安全的代码,因为我们所有的代码都是托管的。我们正在使用 DevExpress 控件,但我们不知道它们是否有非托管代码。
在这一点上,我不知道如何尝试调试和修复此错误。任何提示都会有所帮助。
提前致谢。
c - 使用 C 和内联汇编初学者问题
我只是在测试并尝试学习汇编程序如何与 C 一起工作。所以我浏览了一些教程,我发现了这个:
}
我遇到的问题是我无法运行它,我可以在 Microsoft Visual Studio 2008 的 main 方法中编译它,但是当我运行它时,它会产生这个错误:
Test.exe 中 0x00da3660 处的未处理异常:0xC0000005:访问冲突读取位置 0xffffffff。
在第二行,mov es,ax //lägg startadressen i es
难道程序是16位的,VS 2008编译成32位的程序?如果是这样,您可以强制 VS 2008 以不同方式编译它吗?
有谁知道一个好的内部汇编教程?
python - “WindowsError:异常:访问冲突...” - ctypes 问题
这是驻留在 DLL 中的 C 函数的原型:
在另一个线程中,我询问了如何正确地创建和发送必要的参数给这个函数。
这是线程: 如何使用 ctypes 包装这个具有多个参数的 C 函数?
所以我在上面的线程中使用了很好的信息,但是现在我收到了这个错误:WindowsError: exception: access violation writing 0x00001001
我不确定如何进行。我使用的是 Windows XP - 如果我登录到管理员帐户,会解决问题吗?或者这是 Python 的内存对象不可变的问题?
谢谢大家!
用相关的 Python 编辑:
编辑添加一些相关代码!我只是在编写一个简单的脚本来让设备的每个功能首先工作。我知道,变量 sizeTRACE 可以重复使用,但它现在只是测试代码并且设备没有连接,所以 GetSize() 返回零。乘以零会扼杀我的嗡嗡声,所以我现在将其强制为 1。如果不清楚,我很抱歉,并会尝试编辑这篇文章。
第二次编辑:建议插入设备,看看是否有帮助。我刚刚插入了 FROG,但我仍然遇到同样的错误。很奇怪,我也很无知。无论如何,再次感谢大家!
c# - 从 C++ 回调到 C# 函数的访问冲突异常/崩溃
所以我有一个我正在使用的本地 3rd 方 C++ 代码库(.lib 和 .hpp 文件),我曾经在 C++/CLI 中构建一个包装器,以便最终在 C# 中使用。
从调试模式切换到发布模式时,我遇到了一个特殊问题,即当回调的代码返回时,我得到一个访问冲突异常。
回调函数格式的原始 hpp 文件中的代码:
用于回调函数格式的 C++/CLI Wrapper 代码:(稍后我将解释为什么我声明了两个)
--很快,我声明第二个“UnManagedCallbackFunction”的原因是我试图在包装器中创建一个“中介”回调,因此链从 Native C++ > C# 更改为 Native C++ > C++/CLI Wrapper > C# 的版本...完全披露,问题仍然存在,它只是被推送到 C++/CLI Wrapper 现在在同一行(返回)。
最后,来自 C# 的崩溃代码:
所有对控制台的写入都已完成,然后我们在返回时看到可怕的崩溃:
helloworld.exe 中 0x04d1004c 处的未处理异常:0xC0000005:访问冲突读取位置 0x04d1004c。
如果我从这里进入调试器,我所看到的只是调用堆栈上的最后一个条目是:>“04d1004c()”,其值为:80805964
仅当您查看显示以下内容的控制台时,这才是有趣的:
现在,我知道在调试和发布之间,在微软世界中有些事情是完全不同的。我当然担心变量的字节填充和初始化,所以如果有什么我没有在这里提供,请告诉我,我会添加到(已经很长的)帖子中。我还认为托管代码可能不会释放所有所有权,然后本机 C++ 内容(我没有代码)可能会尝试删除或终止 pData 对象,从而使应用程序崩溃。
更全面的披露,在调试模式下一切正常(似乎)!
一个真正的头部划伤问题,将不胜感激任何帮助!
c# - VS2008 MySQL 连接器/NET AccessViolationException
数周以来,我一直在为 VS2008 或 MySQL Connector/NET 引发的无情错误而苦苦挣扎。
这些错误在与Visual Studio 的数据集设计器混淆时会随机出现,并且一旦启动,它就不会停止;它甚至会阻止保存XSD 文件。弹出窗口显示:
尝试读取或写入受保护的内存。这通常表明其他内存已损坏。
(AccessViolationException
显然是一个 )
话虽如此,它似乎不适用于臭名昭著的远程错误,因为我正在运行 .NET 3.5(并且无法安装修复程序)。我在网上做了相当多的研究,几乎总是归结为这个问题。
此外,有时,以下解决方案之一将暂时解决问题(在前一个失败时应用):
- 重启VS2008;
- 清洗VS溶液;
- 清理SVN工作副本;
- 重新结帐 SVN;
- 重新安装 MySQL Connector/NET(尝试 5.2.6 和 6.0.4);
- 重新安装VS2008。
(如果这被证明是相关的,我也在使用 AnhkSVN 2.1。)
你有没有经历过类似的事情?有修复或解决方法吗?
vb.net - System.AccessViolationException 会因为 RAM 故障而发生吗?
我有一个网站,我已经工作了大约一年了。最近,它开始时不时地抛出 System.AccessViolationException,在我的开发机器中,主要是当我离开机器时......
几周以来我没有对服务器代码进行任何更改,因为我一直在 100% 地处理 Javascript 部分,并且这个错误最近开始出现。
此外,我正在执行的代码是 100% 托管的。我没有做任何互操作,调用奇怪的 DLL,什么都没有。它是纯 VB.Net,所以我看不出我自己如何生成其中一个......
现在,我已经使用这台新机器几个月了,但它并没有 100% 正常工作。例如,每 2 或 3 天我就会出现蓝屏。我没有时间正确诊断它,但我怀疑我的 RAM 芯片可能有故障。
有故障的 RAM 是否有可能导致 AccessViolationException?
或者我有一个我应该研究的实际问题?(除了我的内存)
更新:
我真的无法找到错误发生的位置,真的。
我得到“未处理的异常,你想调试吗?” 对话框,当我附加调试器时,我有线程列表,其中有所有 ASP.Net 线程,3 我自己创建。
对于这 3 个,我有一个 Call Stack ,它们都在 Sleep() 调用中停止(这是可以预料的)。
对于所有其他线程,包括 VS 指出的问题之一,我没有调用堆栈。我也没有关于异常的详细信息。
所以我不知道它是否每次都在同一个地方发生。
至于memtest,是的,我会做这样的事情,我只是希望有一些时间尽快做,但同时我想知道这是否可以解释这个问题。
更新 2:
在事件日志中找到这个...
发生未处理的异常,进程终止。
有什么想法吗?
谢谢
丹尼尔
c++ - Ideas to debug and solve a very sporadic crash - appears to be an AV
I have a bug somewhere that is causing my app to just vanish without an error message or something like that. The app just dissapears from the screen and it's no longer listed on the Task Manager.
The app is a C++Builder app (CBuilder2007), and I have tried everything I have think of to try to catch this error. It happens very very seldom, it has never crashed on my machine and just once in the test machines we have in the office. With one of our customers it happens a little bit more frequent, but we haven't find a way to make it happen, or to find the circumstances where it happens. It is a heavy multithreaded app.
I have madExcept enabled in this app, but it doesn't catch anything. I have already added handlers using the set_terminate
and set_unexpected
RTL routines, without any luck.
The only info I have is from a "loader app" wrapper I did, to get the return code from the main app. It exits with the C0000005
code, which I believe means an Access Violation happened. The strange thing is that, as mentioned, there is not even the Windows error box or something like that.
The question would be: any ideas to try to catch this? As I don't even have a clue where this might be happening (I have a lot of logging around the app, but the "trail" before the app crashes hasn't lead to anywhere) my idea with the set_terminate
and set_unexpected
routines was to get a stack trace to try to see where the error was generated, but so far those routines aren't being called at all (at least the only time this has happened here in my office)
Thanks in advance
[Update 22.Sept.2009] Using AddVectoredHandlerException I was able to get a callstack from the crash, and now I can start trying to isolate and fix the bug. Thanks!!!
c++ - C++ 动态数组访问冲突
**** 抱歉,对于原始帖子中有关 numCars 的混淆感到抱歉。我修改了代码和原来的一致******
以下学术课程是原始问题的简化版本,但它侧重于我尚未解决的问题。这个问题有 2 个类和一个主要方法,这两个类由一个 Dealer 类和一个 Car 类组成。Dealer 类有一个私有的 Car* 指针,该指针在 Dealer 的构造函数中初始化为一个动态数组。调用 Dealer 的 addCar 方法时,main 方法出现错误。在 main 方法中,我有意将 Dealer 变量传递给 addCar(Dealer& d) 方法,以模仿原始应用程序的结构。然后 addCar 方法调用经销商的 addCar(const Car& car) 方法,当我执行 cars[numCars++]=car; 时发生访问冲突。你能解释一下为什么 cars[numCars++]=car 会导致访问冲突吗
:numCars(0) {cars = new Car[maxCars];}
setNumCars(int count){numCars = count;}