查找 System.AccessViolationException 的原因

2023-12-29

我们的应用程序遇到了奇怪的致命 System.AccessViolationException。当我们配置 AppDomain.CurrentDomain.UnhandledException 事件来记录异常时,我们会看到这些。

Exception: System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
   at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
   at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
   at System.Windows.Forms.Application.Run(Form mainForm)
   at Bootstrap.Run() in e:\build-dir\src\Bootstrap.cs:line 25

异常本身似乎不包含比消息更多的信息“尝试读取或写入受保护的内存。这通常表明其他内存已损坏。”

  • 我们现在可以采取哪些步骤来找出问题的原因?
  • 有没有办法确定导致崩溃的非法地址或指针值?
  • 我们能否找出导致问题的本机库代码?
  • 我们可以启用更多调试/跟踪吗?

UPDATE

  • 这是否是由于早期使用 WinForms API 的非线程安全造成的?

您所遇到的情况与“程序遇到问题,现在将关闭”完全相同,只不过它是由 .NET 运行时而不是操作系统捕获的。

查看堆栈跟踪,它不是由您的代码触发的,这让我认为它来自您正在使用的库或自定义控件生成的工作线程。

跟踪类似情况的唯一方法是在调试器下运行本机库,这应该在访问冲突上升到 CLR 层之前捕获它。这可能很容易也可能很困难。

如果本机代码是您自己的项目,那么最简单的设置方法是将 .NET 项目和 C++ 项目放在同一个解决方案中,并确保 .NET 项目引用 C++ 项目。如果您发布有关您的环境的更多详细信息,我也许可以提供更具体的建议。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找 System.AccessViolationException 的原因 的相关文章

  • 在现代 C++ 中,临时生命周期延长何时有用?

    在 C 中 您可以将函数的返回值 返回值 而不是引用 绑定到 const 引用 并且代码仍然有效 因为该临时对象的生命周期将延长到作用域末尾 例如 std string get string return abc void f const
  • 自定义异常与具有非常描述性消息的内置异常

    今天我遇到了一个有趣的情况 我有一个带有设置文件的小应用程序 该文件在文档中有详细记录 但如果该文件不存在 那会更好 抛出 filenotfoundException 并给出一条非常令人沮丧的消息设置文件不可用 或者创建一个名为 Setti
  • std::call_once 可重入且线程安全吗?

    std call once http en cppreference com w cpp thread call once是线程安全的 但它也是可重入的吗 我使用 VS2012 调试和发布 进行的测试表明 调用std call once从单
  • 检测到堆栈崩溃

    我正在执行我的 a out 文件 执行后 程序运行一段时间 然后退出并显示消息 stack smashing detected a out terminated Backtrace lib tls i686 cmov libc so 6 f
  • 在开关中使用“goto”?

    我看到了一个建议的编码标准 内容如下Never use goto unless in a switch statement fall through 我不跟 这个 例外 案例到底是什么样的 这证明了goto 此构造在 C 中是非法的 swi
  • Gwan C#,如何获取HTTP标头?

    我需要它来重写 url 以了解我正在处理哪个友好的 url 用于用户代理和其他东西 EDIT public class Gwan MethodImplAttribute MethodImplOptions InternalCall exte
  • 计算另一个表达式中的 C# 表达式

    我想在另一个表达式中使用一个表达式 Expression
  • 使用 LINQ 更新 IEnumerable 对象的简单方法

    假设我有一个这样的业务对象 class Employee public string name public int id public string desgination public int grade List
  • 访问 ascx 文件中的母版页控件

    我有一个母版页文件 其中包含 2 个面板控件中的 2 个菜单 我还使用控件来检查用户是否登录并获取用户类型 根据我想要显示 隐藏面板的类型 控件本身不在母版页中引用 而是通过 CMS 系统动态引用 我想在用户控件中使用findcontrol
  • C# 编译器不会优化不必要的强制转换

    前几天 在写答案的时候这个问题 https stackoverflow com questions 2208315 why is any slower than contains在这里 关于溢出 我对 C 编译器感到有点惊讶 它没有按照我的
  • 如何在三个 IEnumerable 上使用 Zip [重复]

    这个问题在这里已经有答案了 可能的重复 使用 Linq 从 3 个集合创建项目 https stackoverflow com questions 5284315 create items from 3 collections using
  • 搜索实体的所有字段

    我正在尝试在客户数据库上实现 多功能框 类型的搜索 其中单个查询应尝试匹配客户的任何属性 这是一些示例数据来说明我想要实现的目标 FirstName LastName PhoneNumber ZipCode Mary Jane 12345
  • 为什么 Cdecl 调用在“标准”P/Invoke 约定中经常不匹配?

    我正在开发一个相当大的代码库 其中 C 功能是从 C P Invoked 的 我们的代码库中有很多调用 例如 C extern C int stdcall InvokedFunction int 使用相应的 C DllImport CPlu
  • 英文日期差异

    接近重复 如何计算相对时间 https stackoverflow com questions 11 how do i calculate relative time 如何在 C 中计算某人的年龄 https stackoverflow c
  • 如何调试 .NET 运行时中的内部错误?

    我正在尝试调试一些处理大文件的工作 代码本身works 但 NET 运行时本身会报告零星错误 对于上下文 这里的处理是一个 1 5GB 文件 仅加载到内存中一次 在循环中处理和释放 故意尝试重现此否则不可预测的错误 我的测试片段基本上是 t
  • 在 .NET 中,多次调用 string.Replace() 是否比单次调用 Regex 方法效率低?

    我想替换字符串中大约 8 个字符 使用 Regex 方法或仅使用对 string Replace 的多次调用会更有效吗 我将替换可能出现的大约 7 个字符 全部替换为下划线 字符可以出现在字符串中的任何位置 并且不按特定顺序等 除非您确实需
  • 通过 Tab 键浏览 XML 文档字段

    In VB NET you can move through the fields in the XML member documentation with the Tab key 这在 C 中不起作用 还有其他方法吗 除了用鼠标将光标放在
  • LINQ 中的“from..where”或“FirstOrDefault”

    传统上 当我尝试从数据库中获取用户的数据时 我使用了以下方法 在某种程度上 DbUsers curUser context DbUsers FirstOrDefault x gt x u LoginName id string name c
  • INotifyPropertyChanged 和 propertyName

    我一直不确定它的含义propertyName实施时INotifyPropertyChanged 所以一般来说你实现INotifyPropertyChanged as public class Data INotifyPropertyChan
  • 结构化绑定的用例有哪些?

    C 17 标准引入了新的结构化绑定 http en cppreference com w cpp language structured binding功能 最初是proposed http www open std org jtc1 sc

随机推荐

  • vscode 无法打开弧度(Linux、Manjaro)

    打开 R 脚本并单击Run Source然后我得到 The terminal process home xxx miniconda3 bin radiant failed to launch exit code 1 以及终端窗口中的按摩 T
  • 动态方法名称(Objective-C)

    我有几种方法 如下所示 void methodA void methodB void methodC 它们的使用取决于某些条件 现在我想动态使用它们 我尝试了以下方法 NSString methodName if flag A method
  • 异常:android.view.InflateException:二进制 XML 文件行 #20:膨胀类 net.simonvt.datepicker.DatePicker 时出错

    我正在开发我正在使用的 Android 应用程序simonvtdatepicker 库因为向后兼容 但我在开发者控制台崩溃报告中看到有 3 个关于此相同错误的报告 但我在正在运行的设备中尝试过 所以这真的很奇怪 请支持这个为什么它如此奇怪并
  • 分发管理到期?

    目前我的 Distribution Managed 已过期 现在我的问题是我是否需要撤销它然后创建一个新的 我有点困惑 因为我在创建新证书下找不到该特定证书 那么我需要用它做什么呢 我已经创建了一个新的分发证书 但对分销管理的了解又如何呢
  • 如何将项目与弹性容器的开始和居中对齐? [复制]

    这个问题在这里已经有答案了 I have this plunker http plnkr co edit gZHmQJa4OlEJTksjLHYm p preview this plunker http plnkr co edit JFRN
  • 导入错误:没有名为 mako.template 的模块

    我的 foobar py 文件中的这行代码 from mako template import 结果是 导入错误 没有名为 mako template 的模块 我怎样才能解决这个问题 两个都help modules and repr mak
  • 如何在 BigQuery 标准 SQL 中获取数组的切片?

    在 BigQuery 中 我有一个表 其中包含path像这样的列 ID Path 1 foo bar baz 2 foo bar quux blat 我希望能够在正斜杠上分割路径 并选择一个或多个路径部分 然后重新连接它们 在 Postgr
  • Echo与Echo的区别[特殊字符]

    编写批处理文件时 我发现有些人使用Echo Echo Echo 等等 这些回显空行 那么这些之间有什么区别Echo Special Character 您可以使用许多不同的字符echo 之一 但对于一个人来说有很多要求good choice
  • React-Native 中的倒计时器

    我想在反应原生中加载屏幕时从 3 倒计时到 1 我用 setTimeOut 尝试过 但没有成功 我在这里做错了什么 我怎样才能实现这个目标 当屏幕加载时 我想以 1 秒的间隔显示 3 gt 2 gt 1 这是我的代码 constructor
  • 创建 SAML 断言并签署响应

    我有一个 Java Web 应用程序 我想为我的应用程序实现 SAML 单点登录 我有这个GitHub onelogin 程序 https github com onelogin java saml发送请求并获取响应 但它无法正常工作 我在
  • 如何使 IEnumerable 只读?

    为什么是列表list1Instance and p in the Main下面的代码的方法指向同一个集合 class Person public string FirstName string Empty public string Las
  • 将列添加到稀疏矩阵

    当我执行以下代码时 我得到一个稀疏矩阵 import numpy as np from scipy sparse import csr matrix row np array 0 0 1 2 2 2 col np array 0 2 2 0
  • 实体框架是否与 SQL Server 绑定?

    如果我想连接到 Oracle MySQL 甚至 MS Access 怎么办 不 它使用 ADO Net 提供程序 模型插入数据库提供程序以提供对任何第三方数据库的访问 可用列表第三方 EF 提供商在这里 http msdn microsof
  • 进入前台时的 UIRefreshControl 错误

    当我使用时我注意到一个小错误 但真的很烦人 UIRefreshControl在我的视图控制器中 当应用程序从后台返回时UIRefreshControl已经加载 看起来像这样 正如你所看到的 我使用了一个自定义导航控制器 它像 Faceboo
  • 为什么 Google 云端硬盘返回“无法解析内容范围标头。”?

    这是我的简单代码 用于恢复 可能 中断的 Google Drive 上传 Using message New ByteArrayContent New Byte message Headers ContentRange New Header
  • 从左到右表达式求值

    在 C 中 是否保证表达式从左到右计算 例如 myClass GetClass if myClass null myClass Property gt 0 continue 是否存在不符合规定的语言 您实际上指的是一种称为 短路逻辑表达式
  • 如何拥有与 OnPropertyChanged 一起使用的 UserControl 的可绑定属性

    我有一个带有一些公共属性的简单用户控件 WinForms 当我使用此控件时 我想将 DataSourceUpdateMode 设置为的数据绑定到这些属性属性改变时 数据源是一个实现 INotifyPropertyChanged 的 类 我知
  • 如何使用 Django 智能选择来过滤 ManyToManyField?

    class Course models Model course code models CharField max length 100 unique True title models CharField max length 200
  • 插入数据库时​​对密码进行哈希加密

    我正在为学校做一个应用程序 在将密码插入我的用户数据库时需要加密密码的帮助 我正在使用 C 编程语言进行编程 并且使用 MS server 2008 R2 来操作我的数据库 我正在考虑进行哈希加密 如果有人帮助我 我会很高兴 这是我将数据插
  • 查找 System.AccessViolationException 的原因

    我们的应用程序遇到了奇怪的致命 System AccessViolationException 当我们配置 AppDomain CurrentDomain UnhandledException 事件来记录异常时 我们会看到这些 Except