问题标签 [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.

0 投票
2 回答
119 浏览

exception - 为什么会有这么多错误“AccessViolationException”?

在我的计算机使用过程中,我看到了许多错误,其中很多似乎是访问冲突异常调用到不可读内存或 0x00000000/0xFFFFFFFF。

什么样的编程错误会导致这种情况?当出现严重问题时,是否故意让程序崩溃?

0 投票
2 回答
732 浏览

c# - 序列化结构数组的结构时出现AccessViolationException?

我有一个顺序结构,我想将其序列化为一个文件,这似乎微不足道。但是,此结构由 2 个其他类型结构的数组组成。主要结构定义如下...

我可以完全按照预期创建这些结构。但是,当尝试使用以下方法进行序列化(这在网上似乎很流行)时,我得到了一个 AccessViolationException:

我假设这是因为结构没有准确定义数组的大小,所以它不能事先明确确定大小?似乎因为它无法获得它,所以它没有为结构分配适量的空间,并且在将结构转换为指针时最终太短了。我不确定这一点。为什么会发生这种情况以及可能的替代方案是什么?

编辑:抛出错误的行是

0 投票
6 回答
1085 浏览

c++ - 未捕获 WM_PAINT 中的访问冲突

为了测试这个问题,我编写了一个最小的 Windows 应用程序。如果我在处理程序中强制访问冲突,则WM_PAINT此异常永远不会到达调试器。如果在没有调试器的情况下启动,访问冲突也不会出现。通常你应该得到 Windows 错误报告对话框。

深入挖掘似乎 user32.dll 中的某些内容捕获了所有传入的异常。这是正常行为吗?我能以某种方式控制它吗?捕获所有异常不是安全风险吗?至少它很烦人。

这适用于 Vista 64 上的 32 位和 64 位应用程序。在 XP 上,异常似乎按预期处理。其他windows消息也有同样的问题。也许他们所有人?

WM_PAINT处理程序:

0 投票
3 回答
1060 浏览

c++ - 遍历hash_map时的AV?

_transaction 是我的类的私有成员变量,声明为:

在清理期间,我试图遍历此列表并释放任何仍未释放的对象。但是,我在这里的for线上得到了一个 AV:

回复:ltstr是什么?

堆栈在 begin() 方法中显示它。有任何想法吗?

0 投票
3 回答
2324 浏览

asp.net - .Net 2.0:帮助排除 System.AccessViolationException。100% 托管代码

这与我之前的问题有点重复,尽管我的问题的目标现在完全不同了。

我不时地每周一次,仅在我的开发机器中,在我制作的网络应用程序中出现 System.AccessViolationException。

由于我的机器有一些不能很好地工作的东西(比如不时出现蓝屏),我之前假设它可能是内存故障。运行 memtest 24 小时后,我很确定它不是......

所以,情况就是这样:这是一个 wep 应用程序,VB.Net 2.0,100% 托管代码,不使用 COM、Interop 或类似的东西。它在 Windows Server 2008 SP2 机器上运行。
我正在做的唯一“奇怪”的事情是在应用程序启动时启动我自己的 3 个线程,这些线程在 appdomain 内执行“类似 cron”的操作,而且这个应用程序正在处理的大多数请求都是异步处理的,其中许多它们保持打开状态长达 30 秒没有响应。(我正在做彗星长轮询)。

另外,我已经在这个代码上工作了大约一年,而且大约一个月前才开始这样做。在我最近更改的整个 Web 应用程序上,我想不出任何重大或重要的更改。我几乎完全在 Javascript 前端工作。


当异常发生时,我会收到一个典型的弹出窗口,询问我是否要调试。当我这样做时,我看到所有 ASP.Net 线程加上我的 3 个线程。
我的 3 个线程正在调用 Sleep(),这是正常的。所有其他 ASP.Net 线程根本没有调用堆栈。
在 Visual Studio 告诉我出现异常的线程中,我什么也没看到。

所以我不确定错误发生在哪里,甚至不知道它是否每次都发生在同一个地方。

我能在“应用程序”事件日志中找到一个线索:

在那之后,另一个事件是这样的:


我用谷歌搜索了 MgdIndicateCompletion ,但找不到任何真正有用的东西......

大约一个月前发生了变化,现在我想起来了,就是我在我的开发机器上从 Server 2003 x86 迁移到了 Server 2008 x64(因此,从 IIS6 迁移到 IIS7)。也许这就是原因,但我仍然不知道该怎么做......

我的意思是,这会将问题完全排除在我的代码库之外,对吗?


更新:如此处所建议将应用程序池集成转为“经典”似乎可以解决此问题。不过,我仍在寻找一个体面的解决方案,或者至少是一个解释。

0 投票
4 回答
1877 浏览

c++ - std::set::erase 上的访问冲突读取位置

我最近在我的应用程序中发现了以下崩溃:

m_players声明为:

Visual Studio 显示为“0xC0000005:访问冲突写入位置 0x0000000000000024”。

编译器:Visual Studio 2008。

拆卸:000000014007AA3B mov rcx,qword ptr [this](崩溃)

所以我假设我们因为糟糕的“this”而死去,因为它是在那个函数中第一次访问这个。但是因为我看了本地人/汽车,这似乎不是一个坏指针。

很高兴得到一个提示。

0 投票
1 回答
4412 浏览

wpf - 在 WPF 中跟踪 AccessViolationException

我编写了一个 WPF 应用程序,它使用许多 Frame 控件来查看相机源。部署后,它非常随机地崩溃(从 2 小时到 16 小时以上),我在事件日志中连续看到这些:

System.AccessViolationException:试图读取或写入受保护的内存。这通常表明其他内存已损坏。在 MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg) 在 System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame) 在 System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame) 在 System.Windows.Threading.Dispatcher.Run () 在 System.Windows.Application.RunDispatcher(Object ignore) 在 System.Windows.Application.RunInternal(Window 窗口) 在 System.Windows.Application.Run(Window 窗口) 在 System.Windows.Application.Run() 在 Status_Station_client .MainClass.Main()

错误应用程序状态站client.exe,版本1.0.0.0,戳4ad0faa5,错误模块msvfw32.dll,版本5.1.2600.2180,戳41109753,调试?0,故障地址0x00002642。

关于如何追踪这一点的任何想法?网页确实包含 ActiveX 控件,所以第一个猜测是那里有问题。

我无法在调试模式下跟踪它。我想尝试的另一件事是从导航调用中吞下异常,但我不确定这是否是明智之举:

编辑:这里有更多的源代码,我很困惑错误在哪里(即抛出异常的位置)

矩阵视图.cs:

帧定时器.cs:

0 投票
8 回答
3393 浏览

c - 查看释放的内存会导致访问冲突吗?

访问(只读)释放的内存是否会导致访问冲突,如果是,在什么情况下?

0 投票
4 回答
5497 浏览

c++ - Delphi:从外部 DLL (C++) 调用函数后访问冲突

有一个用 C++ 编写并编译为 DLL 的函数,我想在我的 Delphi 应用程序中使用它。

刮板.cpp:

刮板.h:

这就是我在Delphi 应用程序中声明函数的方式:

该功能有效,但是当它完成时,我收到调试器故障通知:项目 ... 出现错误消息:''在 0x0012f773 的访问冲突:写入地址 0xffffffc0'。进程停止。使用 Step 或 Run 继续。

如果我在 Scraper.cpp 和 Scraper.h 中添加__stdcall(后SCRAPER_API bool),则 Delphi 应用程序根本无法启动:过程入口点 ScraperGetWinList 无法位于动态链接库 Scraper.dll 中。

0 投票
2 回答
1572 浏览

c# - System.AccessViolationException 与动态代理生成

我们正在使用 PostSharp 注入缓存功能,我们只在使用它时才看到这个问题。当我们使用 Spring 时,问题似乎消失了。

任何帮助将不胜感激,因为这个问题很难复制。我在下面包含了堆栈跟踪: