【发布时间】:2023-03-24 23:04:01
【问题描述】:
根据我们的一位用户的报告,我在 VirtualBox 虚拟机上安装了一个干净的 Win7 x64,并尝试在那里运行我们的 WPF .NET Core 3.0 应用程序。每次我使用通用 C# 异常代码 (e0434352) 关闭它而没有任何堆栈跟踪时,它肯定会崩溃。事件查看器显示丢失的堆栈跟踪(“堆栈:”,之后没有任何内容)。
我试过在 WinDbg 下运行它,但我得到的只是:
(4e0.608): C++ EH exception - code e06d7363 (first chance)
ModLoad: 000007fe`fb8a0000 000007fe`fb8cc000 C:\Windows\system32\POWRPROF.DLL
(4e0.ab4): Unknown exception - code 0000071a (first chance)
ModLoad: 000007fe`fc860000 000007fe`fc8b7000 C:\Windows\system32\apphelp.dll
ModLoad: 000007fe`edd20000 000007fe`eddbc000 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscoreei.dll
关于如何进一步调试它的任何想法? 每次我关闭程序时都会重现崩溃。在我尝试关闭它之前,程序本身运行良好。
更新: (回答cmets)
- 我们使用的是 win-x64 独立部署;
- 我们的应用处理所有首次机会异常并记录它们,在关闭之前没有(日志看起来像关闭正常);
- 我们的应用有一个使用相同技术堆栈(WPF .NET Core 3.0 win-x64 自包含应用)编写的更新程序,它可以正常关闭;
- 刚刚在另一台装有 Win7 x64 的机器(这次是真机)上对其进行了测试 - 也崩溃了;
- 在该虚拟机上安装了 Visual Studio,在我关闭它后程序仍然崩溃,但即使我从 VS 以调试模式启动应用程序,Visual Studio 也不会捕获任何内容。
!线程输出:
!pe 输出:
k 输出:
【问题讨论】:
-
事件查看器中还有其他错误吗?应用程序是否有异常处理和日志记录?
-
您可以尝试 GETLASTWINDOW32 错误,但不要认为它会提供更多信息。通常,当代码运行并返回异常时,这意味着堆栈未对齐。通常,如果子程序和主函数声明的返回变量不同(子程序返回 long 而 main 需要 int)。如果你使用 x86 和 AnyCPU 会失败吗?
-
事件查看器中有两个“应用程序错误”和两个“NET 运行时”错误,两个错误看起来一样,没有堆栈跟踪和相同的异常代码。
-
编辑了我的问题以回答所有问题。
标签: c# wpf .net-core crash windbg