PuTTY 在退出时崩溃并需要重新启动计算机

fel*_*the 5 ssh windows-7 crash putty ssh-tunnel

当程序试图退出时,PuTTY 崩溃。当它崩溃时,窗口将冻结并且无论如何都不会关闭。强制关闭不起作用,任务管理器也不起作用。pskill来自 pstools(使用管理员命令提示符)没有效果——它说进程已被终止,但它仍然存在。除了计算机重新启动之外,没有什么可以使窗口消失。

这已经发生了几个星期,可能是由最近的 Windows 更新引起的,但这只是一个猜测。它不会每次都发生,但可能是 50% 的时间。无论是通过键入“exit”或“logout”调用的手动退出,还是由于计算机进入睡眠状态而自行退出时,它都会崩溃。

它仅在我使用端口隧道时发生。我总是打开几个 PuTTY 窗口,唯一一个崩溃的是一个端口隧道打开的窗口。

在最近一次崩溃之前,我打开了 PuTTY 日志以查看其内容。最后一行是“服务器发送命令退出状态 0”,这看起来很正常。

服务器退出状态 0

这是我的端口隧道设置的屏幕截图,以防万一:

端口隧道 D9090

这是 Windows 错误框,它将错误类型标识为“AppHangB1”:

在此处输入图片说明

谷歌给了我零结果。搜索这种类型的崩溃告诉我,它通常是由有问题的驱动程序引起的,所以这是一种可能的途径,如果有人知道我应该尝试更新/回滚什么。

我将 PuTTY 更新到最新版本没有效果。我没有尝试更新远程计算机(我控制的)或我的路由器,但我希望它们都与这种似乎与 Windows 本身有关的崩溃无关。

Windows 7的


更新

我运行了建议的调试工具,它生成了内存转储并对其进行了分析。这是相当多的信息,所以我粘贴到一个jsfiddle 中,你可以在这里看到。我引用了下面的摘要,但请参阅该页面以获取完整报告,因为其中包含大量信息。

说明:在 putty.exe__PID__7768__Date__08_14_2018__Time_02_26_52PM__311__Manual Dump.dmp 中线程 0 拥有的 0x041916d8 处检测到可能阻塞或泄漏的临界区

此锁的影响:25.00% 的线程被阻塞(线程 2)

以下函数正试图进入这个临界区

mswsock!SockAsyncSelectCompletion+2a

此关键部分涉及以下模块:

C:\WINDOWS\System32\mswsock.dll来自微软公司


3周后更新

已经将近一个月没有崩溃了,在这段时间里又有了另一个 Windows 更新。时间太巧合了;我认为这一定是由夏季(可能是 7 月)的 Windows 更新引起的,并在 8 月的更新中修复。

har*_*ymc 2

在 PuTTY 的配置设置中,“退出时关闭窗口”的设置可能会导致问题,因此请尝试测试其其他可用设置。

您还可以尝试替代免费产品,其中之一: KiTTYMobaXtermBitvise

如果其中一种替代方案适合您,那么首先您就有了解决该问题的方法。其次,问题本身可能是PuTTY与远程计算机的通信协议存在一些问题,您应该将问题报告给开发人员。

但是,如果所有替代方案都不适合您,那么问题可能不在您这边。您应该检查远程计算机上 SSH 服务器的设置,尝试对其进行调试,如果您希望我们查看,请将跟踪日志发布到此处。如果您无法控制远程计算机,请将问题报告给其管理员。