更新

更新

當程式嘗試退出時,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 月更新中修復。

答案1

在 PuTTY 的配置設定中,「退出時關閉視窗」的設定可能會導致問題,因此請嘗試測試其其他可用設定。

您也可以嘗試替代免費產品,其中之一: 貓咪, MobaXterm, 或者 比特維斯

如果其中一種替代方案適合您,那麼首先您就有了解決該問題的方法。其次,問題本身可能是PuTTY與遠端電腦的通訊協定存在一些問題,您應該將問題報告給開發人員。

但是,如果所有替代方案都不適合您,那麼問題可能不在您這邊。您應該檢查遠端電腦上 SSH 伺服器的設置,嘗試對其進行偵錯,如果您希望我們查看,請將追蹤日誌發佈到此處。如果您無法控制遠端計算機,請將問題報告給其管理員。

答案2

PuTTY 在退出時崩潰並需要重新啟動計算機

當程式嘗試退出時,PuTTY 崩潰。當它崩潰時,視窗將凍結並且無論如何都不會關閉。強制關閉不起作用,任務管理器不起作用。 pstools 中的 pskill(使用管理員命令提示字元)沒有任何效果——它表示該進程已終止,但它仍然存在。除了重新啟動電腦之外,沒有什麼可以使視窗消失

我稱之為“掛起”而不是“崩潰”。崩潰意味著執行繼續要么返回錯誤訊息(很好),要么在嚴重的內存損壞的情況下,會出現暫停(通常很短,有時有點長,很少有看門狗),並且執行將繼續,但出現BSOD 或重新啟動(不好)。

隨著一聲“掛”無論等待多少時間似乎都不會促成你的進步,但如果您的任務切換器不受影響並且可以切換到其他線程,則其他線程可能會繼續正常運行。

很可能發生的情況是 PuTTY 產生了一個 VPN 子程式以便建立隧道,並且流程有問題;它尚未返回到 PuTTY,因此 PuTTY 已掛起。

另一個進程可以開啟一個臨時檔案或一個連接埠; PuTTY 的終止可能我們可以關閉子例程,但可能不會從子程序中刪除對檔案或連接埠的任何鎖定。

如何確定- 到底是怎麼回事?

閱讀有關該錯誤的 Microsoft 社群網頁,標題為:“Windows 資源管理器 7 沒有回應 - “apphangb1 explorer.exe”錯誤「 它說:

安德烈·齊格勒

建立 Windows 資源管理器的掛起轉儲:

http://www.msfn.org/board/topic/130005-creating-memory-dumps/

將故障轉儲壓縮為 7z 或 RAR 並將其上傳到您的 SkyDrive 並在此處發布連結。

建立轉儲,但您可以自己分析它,或在搜尋所有 SE 網站以查找重複問題後詢問我們:「如何使用 .DMP 檔案?」。

透過該連結進入網頁:「創建記憶體轉儲「 它說:

來自掛起(未崩潰)的應用程式/進程的記憶體轉儲:

  1. 建立一個名為 c:\adplus 的目錄

  2. 開啟命令提示字元並變更到安裝偵錯工具的目錄。預設情況下,這是“C:\Program Files\Windows 偵錯工具”

  3. 在命令提示字元中鍵入以下命令:

cscript adplus.vbs -hang -pn appname -quiet -o c:\adplus

(其中「appname」是掛起的應用程式的 .exe 名稱)

  1. 偵錯器完成後(這可能需要一些時間),命令提示字元視窗將關閉,並且 C:\adplus 資料夾中將包含可分析的資料。

來自崩潰(未掛起)的應用程式/進程的記憶體轉儲:

  1. 建立一個名為 c:\adplus 的目錄

  2. 開啟命令提示字元並變更到安裝偵錯工具的目錄。預設情況下,這是“C:\Program Files\Windows 偵錯工具”

  3. 在命令提示字元中鍵入以下命令:

cscript adplus.vbs -crash -pn appname -quiet -o c:\adplus

(其中「appname」是崩潰的應用程式的 .exe 名稱)

  1. 一旦您在步驟 3 中附加的應用程式最終崩潰,偵錯器將建立該進程的一個或多個 .dmp 檔案。偵錯器完成後(這可能需要一些時間),命令提示字元視窗將關閉,並且 C:\adplus 資料夾中將包含可分析的資料。

請參閱此 Microsoft 支援網頁:“調試診斷工具 v1.2 現已推出" 其中描述了 DebugDiag 工具的用法。

它討論了:

  • 產生記憶體轉儲:

    • 進程崩潰

    • 進程掛起或效能下降

若要偵錯進程掛起或效能降低,請使用下列方法之一:

  1. 建立績效規則。效能規則可以基於效能計數器或 HTTP 回應時間。後者特定於 Web 伺服器或基於 HTTP 的 Web 服務。效能計數器規則可讓您在一個或多個效能計數器超過指定閾值時擷取一系列連續的使用者轉儲。 HTTP 回應時間規則可讓您在達到設定的逾時時使用 ETW(特定於 IIS Web 伺服器)或 WinHTTP(「ping」任何類型的 Web 伺服器或基於 HTTP 的 Web 服務)來擷取使用者轉儲。

  2. 透過右鍵點擊進程視圖中的進程名稱並選擇「建立轉儲系列」選項,可以在緩慢或掛起狀態期間建立手動記憶體轉儲系列。

    然後,使用 CrashHangAnalysis.asp 和/或 PerfAnalysis.asp 分析產生的 .dmp 檔案(見下文)。

    • 記憶體或句柄使用情況
  • 分析記憶體轉儲:

    DebugDiag 最強大的功能之一是能夠分析記憶體轉儲並產生顯示分析結果的報告文件,以及解決已識別問題的建議。

    DebugDiag 使用「分析腳本」來分析記憶體轉儲。 DebugDiag 1.2 附帶了 5 個分析腳本,如下所示:

    • 崩潰/掛起分析器 - CrashHangAnalysis.asp

    • 記憶體壓力分析器 - DotNetMemoryAnalysis-BETA.asp

    • 記憶體壓力分析器 - MemoryAnalysis.asp

    • 效能分析器 - PerfAnalysis.asp

    • SharePoint 分析器 - SharePointAnalysis.asp」。

無論出現什麼問題,您都可以找到確切的位置並找出哪個進程出現問題並進行偵錯。如果您對這些工具的使用有疑問,請隨時檢查並提出新問題。

答案3

聽起來您可能遇到了 winsock 過濾器問題,並且您的應用程式正在鎖定某種驅動程式/IO 問題。

在管理命令提示字元中嘗試:netsh winsock reset然後重新啟動,看看是否有影響。

在我的腦海中,還有一些其他可以嘗試的事情:

  • 刪除所有未使用的 VPN 軟體。

  • 解除安裝(並重新安裝)網路卡驅動程式。

  • 更新網卡驅動程式。

  • 如果您最近卸載了防毒產品,則可能會留下網路過濾器驅動程式。如果是這樣,您可能需要找到適當安全產品的刪除工具並執行它。

答案4

嘗試執行兩次掃描:

掃描1

  1. 以管理員身分執行CMD
  2. 輸入SFC /scannow並按 Enter 鍵
  3. 掃描完成後cbs.log開啟%windir%\logs\cbs\cbs.log
  4. 尋找cannot repair並複製未修復的文件。
  5. 找到未修復的檔案(如果有)後,使用安裝磁碟存取替換檔案。跟隨這些方向用於取得替換檔案。

掃描 2(最後的手段)

  1. 以管理員身分執行CMD
  2. 輸入Chkdsk /f /r並按 Enter 鍵
  3. 您將看到一條有關要鎖定的磁碟區的訊息。按y,然後輸入。
  4. 重新啟動你的電腦
  5. 掃描將需要一段時間。等待掃描完成。
  6. 重新啟動後,轉到Event Viewer > Windows > Application Log,然後查找Winninet.
  7. 查看掃描結果。

我在以下位置找到了答案微軟社群

相關內容