有问题的应用程序使用本机代码和托管代码。托管代码仅提供UI层,同时它与执行大量操作的本机dll链接。本机dll与其他一些静态dll链接。现在的问题是,当我运行应用程序时,它会以非确定性方式崩溃。当我在托管代码调试下调试应用程序时,它显示本机代码中的特定函数引发了“SEH”异常。堆栈跟踪只显示当前功能。我在SEH Exception中获得的错误代码是EFAIL。 然而,应用程序每次在本机调试器下运行正常。抛出SEH异常的函数是单线程的。它不使用任何其他线程中可以访问的资源。这种行为的可能原因是什么?我该如何在本机代码中检测异常的来源。调试器下的步进没有帮助,因为当应用程序在调试器下运行时,问题不会出现。
我正在使用visual studio 2012。
答案 0 :(得分:0)
您使用的是DirectX吗? 当DeviceContext从许多线程使用时发生SEH异常 同时,因为DeviceContext不是线程安全的。