首页 > 解决方案 > .NET Core 应用程序 CPU 挂起

问题描述

我正在尝试调试偶尔/随机发生的应用程序挂起。它似乎随机发生(尤其是在调试应用程序时)。这似乎是从我们升级到 .NET 5.0 开始的,但我不能肯定它是相关的。我们在 5.0.302 上运行。

发生这种情况时,Visual Studio 中的“暂停/中断”按钮不会导致应用程序执行中断(即使禁用了“仅我的代码”)。它只是超时并最终提示我终止应用程序)。

我尝试使用 dotnet trace 来收集 CPU 遥测,但它也挂了。

采取和探索进程转储还没有向我展示任何有用的信息。我只是在堆栈跟踪中核心 CLR 代码。

在 Process Explorer 中,我可以看到 CPU 的单个核心被无限期固定

我还在挂起进程的转储文件上使用了 WinDbg,并看到大量这样的线程: 在此处输入图像描述

此类线程的堆栈跟踪似乎没有表明太多有用的信息

这听起来有点像这个问题...... https://github.com/dotnet/runtime/issues/42375

但是将 TieredCompilation 添加到我的构建 csproj 似乎并不能解决我的问题

更新:这些是 wpr.exe 中 CPU 的罪魁祸首

在此处输入图像描述

标签: debugging.net-core.net-5coreclr

解决方案


我能想到的一件事是,Visual Studio 的版本应该支持 .NET Core 框架的特定 SDK 版本。

例如,Visual Studio 2019 (v16.10) 支持 .NET Core SDK 5.0.303,而 v16.11 支持 .NET Core 的 5.0.400 SDK 版本(昨天刚刚发布 - 根据此页面)。

我的理论是,如果您当前的 VS 版本是 v16.11,但您只安装了 5.0.303 SDK,则可能存在一些集成问题。


推荐阅读