gpt4 book ai didi

c# - 应用程序无缘无故卡住,没有死锁,无法附加到 Visual Studio 进行调试

转载 作者:太空宇宙 更新时间:2023-11-03 15:32:01 28 4
gpt4 key购买 nike

我有一个 C# .NET 4.6 控制台应用程序,它应该连续运行(数天/数月)。然而,在不确定的持续时间后,所有正在运行的线程都会无缘无故地卡住(CPU 使用率为 0%,内存不是特别高),并且尝试将应用程序附加到 Visual Studio 2015 实例进行调试将失败(按“暂停”将导致 Visual Studio 停止响应!)。

我检查了并行堆栈跟踪(通过进程资源管理器中的转储捕获)并没有发现任何死锁迹象(否则这将是明显的罪魁祸首)。

例如,这里有 2 个被卡住的并行堆栈(甚至不在我的代码中,而是在 DirectoryInfo.cs 核心库和 ServiceStack OrmLite 库中),即使它们完全没有理由被困成这样。

Parallel stacks

我之前已经注意到这种在代码的其他部分卡住的行为,所以看起来这些库确实是卡住的“受害者”并且不对此负责。即使存在我看不到的死锁,也不应阻止这些线程完成,因为它们没有等待任何事情。

最后,杀死进程并重新启动它总是能让之前卡住的操作成功运行。

对于可能导致这种奇怪行为的原因,您是否有任何线索/对于用于获得更多洞察力的工具有任何建议吗?

最佳答案

似乎两个线程在读取信息时都挂起(执行读取器从文件读取数据,枚举器试图从文件系统读取数据以获取目录信息)。文件系统在那个时间点是否可以访问?您是否能够访问正在读取的目录?

关于c# - 应用程序无缘无故卡住,没有死锁,无法附加到 Visual Studio 进行调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33495480/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com