每当用户报告错误时,例如

System.Runtime.InteropServices.SEHException - 外部组件引发的异常?

作为一名程序员,我可以做些什么来确定原因吗?

设想 :一位用户(使用我公司编写的程序)报告了此错误。这可能是也可能不是一次性错误。他们提到,上个月,电脑已经两次“停止工作”。我从经验中学到,不要太字面地理解这个描述,因为这通常意味着与计算机相关的某人没有按预期工作。他们无法向我提供更多详细信息,我也找不到任何记录的错误。因此,可能是也可能不是这个错误。

从堆栈跟踪来看,实际的错误是在构造一个不直接调用任何互操作代码的类时出现的,但可能由于该对象可能是数据绑定到 DevExpress 网格的列表的一部分而变得复杂。

该错误被未处理的异常例程“捕获”,该例程通常会关闭程序,但可以选择忽略并继续。如果他们选择忽略该错误,则程序会继续工作,但下次运行该例程时会再次出现错误。然而,关闭并重新启动我们的应用程序后,它没有再次发生。

所讨论的计算机似乎没有受到压力。它运行的是 Vista Business,拥有 2GB 内存,根据任务管理器的数据,我们的应用程序只使用了大约一半的内存,而我们的应用程序只有大约 200Mb。

还有另一条信息可能相关,也可能不相关。同一程序的另一部分使用第三方组件,该组件实际上是本机 dll 的 dotnet 包装器,并且该组件确实存在一个已知问题,您偶尔会遇到

尝试读取或写入受保护的内存。这通常表明其他内存已损坏

组件制造商表示,这个问题已在我们内部使用的最新版本组件中得到修复,但尚未提供给客户。

鉴于错误的后果很低(不会丢失任何工作,重新启动程序并返回到原来位置最多只需要一分钟),并且考虑到客户很快就会获得新版本(更新后的第三个版本) party 组件),我显然可以祈祷并希望错误不会再次发生。

但我还能做些什么吗?

有帮助吗?

解决方案

是。这个错误是未映射到.NET错误结构化异常。这也可能是您的DataGrid映射抛出一个机异常,这是未捕获的。

您能告诉什么异常被看的 ExternalException.ErrorCode 财产。我会检查你的堆栈跟踪,如果它绑在DevExpress的网格,将问题报告给他们。

其他提示

我与当我的节目第一次使用本机DLL包装,被抛出的SEHException类似的问题。原来,该包装的原生DLL不见了。唯一的例外是在没有办法解决这很有帮助。到底是什么做帮助下在后台运行procmon中,并检查是否加载所有必要的DLL时发生了错误。

如果您遇到本文所述的问题:

asp.net mvc 调试器抛出 SEHException

那么解决方案是:

如果您有 Trusteer 的任何应用程序(例如 rapport 或其他任何东西),只需卸载并重新启动您的系统,它就会正常工作...在这里找到了这个解决方案:

http://forums.asp.net/t/1704958.aspx/8/10?Re+SEHException+抛出+when+I+run+the+application

  

在零组件厂商说,这已被固定在其组件的最新版本,我们正在使用的内部,但是这已经给客户呢。

请问组件制造商如何测试客户越来越问题是,他们说,他们已经固定在其最新版本的问题,没有/部署其最新版本客户之前。

我所遇到的此错误时,应用程序驻留在网络共享,并且该装置(笔记本电脑,平板电脑,...)变成从网络而应用程序是在使用中断开。在我的情况,这是由于Surface平板走出去的无线覆盖范围。安装好后,WAP没有问题。

只是另一个信息... 今天有一个Windows 2012 R2 x64的TS系统,如果应用程序是从UNC /网络路径开始对这一问题。这个问题发生的所有终端服务器用户一个应用程序。 执行应用程序在本地工作没有问题。重新启动后,它再次开始工作 - 在SEHException的抛出已经构造函数初始化和TargetInvocationException

我的机器配置:

操作系统:视窗10版1703(x64)的

我在调试在Visual Studio 2017年社区版我的C#.NET项目面临过这样的错误。余物通过进行P个调用本机方法/调用上的C ++组件装载在运行时。我遇到由OP报告的非常相同的错误。

我意识到的Visual Studio用而这不是计算机的管理员的用户帐户启动。然后我重新启动下,这是本机的管理员不同的用户帐户的Visual Studio。就这样。我的问题得到了解决,我没有再次面对这个问题。

有一点要注意的是,这是正在对C ++组件调用的方法是应该写一些东西在注册表中。我没去调试C ++代码做一些RCA,但我看到一种可能性,即由于管理权限的要求写在Windows 10操作系统注册表整个事情失败。所以,早些时候的Visual Studio是在其没有足够的计算机管理权限的用户帐户运行,则本地电话都没有。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top