
PuTTY вылетает, когда программа пытается выйти. Когда она вылетает, окно зависает и не закрывается ни при каких обстоятельствах. Принудительное закрытие не сработает, диспетчер задач не сработает. pskill
из pstools (с использованием командной строки администратора) не дает эффекта — он сообщает, что процесс был завершен, но он остается. Ничто не заставит окно исчезнуть, кроме перезагрузки компьютера.
Это происходит уже несколько недель, возможно, из-за недавнего обновления Windows, но это всего лишь предположение. Это происходит не каждый раз, но, возможно, в 50% случаев. Сбой происходит независимо от того, вызван ли он ручным выходом, вызванным вводом "exit" или "logout", или когда он сам выходит из-за того, что компьютер перешел в спящий режим.
Это происходит только тогда, когда я использую туннелирование портов.У меня всегда открыто несколько окон PuTTY, и единственное, которое вылетает, — это то, в котором открыт туннель порта.
Перед самым последним сбоем я открыл журнал PuTTY, чтобы посмотреть, что он сказал. Последняя строка была "Server sent command exit status 0", что кажется нормальным.
Вот скриншот моих настроек туннелирования портов, если это важно:
Вот окно с ошибкой Windows, в котором тип ошибки указан как «AppHangB1»:
Google не дал мне никаких результатов. Поиски этого типа сбоя сказали мне, что он часто вызывается глючным драйвером, так что это один из возможных путей, если кто-то знает, что мне следует попробовать обновить/откатить.
Я обновил PuTTY до последней версии, но безрезультатно. Я не пробовал обновлять удаленный компьютер (который я контролирую) или свой маршрутизатор, но надеюсь, что ни один из них не связан с этим типом сбоя, который, похоже, связан с самой Windows.
Windows 7
Обновлять
Я запустил предложенные инструменты отладки, которые сгенерировали дамп памяти и его анализ. Это довольно много информации, поэтому я вставил вjsfiddle вы можете увидеть здесь. Я процитировал краткое содержание ниже, но, пожалуйста, посетите эту страницу для полного отчета, поскольку там довольно много информации.
Описание:Обнаружена возможная блокировка или утечка критической секции по адресу 0x041916d8, принадлежащей потоку 0 в putty.exe__PID__7768__Date__08_14_2018__Time_02_26_52PM__311__Manual Dump.dmp
Влияние этой блокировки: 25,00% потоков заблокировано (Потоки 2)
Следующие функции пытаются войти в эту критическую секцию
mswsock!SockAsyncSelectCompletion+2a
В этом критическом разделе задействованы следующие модули:
C:\WINDOWS\System32\mswsock.dllот корпорации Microsoft
Обновление 3 недели спустя
Прошел почти месяц без сбоев, и за это время вышло еще одно обновление Windows. Время слишком уж случайное; я думаю, что это было вызвано обновлением Windows летом, возможно, в июле, и исправлено в обновлении за август.
решение1
В настройках конфигурации PuTTY параметр «Закрывать окно при выходе» может быть причиной проблемы, поэтому попробуйте протестировать другие доступные настройки.
Вы также можете попробовать альтернативный бесплатный продукт, один из: Китти, MobaXterm, или Битвайз.
Если один из вариантов вам подходит, то, во-первых, у вас есть обходной путь для проблемы. Во-вторых, сама проблема тогда, вероятно, заключается в какой-то сложности в протоколе связи PuTTY с удаленным компьютером, и вам следует сообщить о проблеме разработчикам.
Однако если ни один из вариантов не сработал, то проблема, вероятно, не на вашей стороне. Вам следует проверить настройки сервера SSH на удаленном компьютере, попробовать отладить его и разместить здесь журналы трассировки, если вы хотите, чтобы мы посмотрели. Если у вас нет контроля над удаленным компьютером, сообщите о проблеме его администратору.
решение2
PuTTY аварийно завершает работу при выходе и требует перезагрузки компьютера
PuTTY вылетает, когда программа пытается выйти. Когда она вылетает, окно зависает и не закрывается ни при каких обстоятельствах. Принудительное закрытие не сработает, диспетчер задач не сработает. pskill из pstools (используя командную строку администратора) не дает никакого эффекта — он сообщает, что процесс был завершен, но он остается. Ничто не заставит окно исчезнуть, кроме перезагрузки компьютера
Я называю это "зависанием", а не "крахом". Крах означает, чтоказнь продолжаетсялибо возвращает сообщение об ошибке (приятно), либо в случае серьезного повреждения памяти происходит пауза (обычно короткая, иногда довольно длительная, редко сторожевой таймер), а выполнение продолжается с BSOD или перезагрузкой (неприятно).
С "зависанием"никакое время ожидания не будет способствовать вашему прогрессу, хотя другие потоки могут продолжать работать в обычном режиме, если ваш переключатель задач не затронут и может переключаться на них.
Вполне возможно, что произошло следующее: PuTTY создал подпрограмму VPN для туннелирования, ичтовозникла проблема в процессе; он не вернулся в PuTTY, поэтому PuTTY завис.
Другой процесс может иметь открытый временный файл или порт; завершение PuTTYмощьхорошо закроем подпрограмму, но, вероятно, не снимем блокировку файлов или портов из подпрограмм.
Как узнать наверняка- Что происходит?
Читаю веб-страницу сообщества Microsoft об этой ошибке под названием: «Windows Explorer 7 не отвечает — ошибка «apphangb1 explorer.exe»" там написано:
"Андре.Циглер
Создайте дамп зависания проводника Windows:
http://www.msfn.org/board/topic/130005-creating-memory-dumps/
сожмите аварийный дамп в формате 7z или RAR, загрузите его на свой SkyDrive и опубликуйте ссылку здесь.
Создайте дамп, но вы можете проанализировать его самостоятельно, или после поиска дублирующегося вопроса на всех сайтах SE задайте нам вопрос: «Как работать с файлом .DMP?».
Перейдя по этой ссылке на веб-страницу: "Создание дампов памяти" там написано:
"Дамп памяти из приложения/процесса, который ЗАВИСИТ (не аварийно завершает работу):
Создайте каталог с именем c:\adplus
Откройте командную строку и перейдите в каталог, в который вы установили инструменты отладки. По умолчанию это "C:\Program Files\Debugging Tools for Windows"
Введите в командной строке следующую команду:
cscript adplus.vbs -hang -pn appname -quiet -o c:\adplus
(где «appname» — это имя .exe-файла зависшего приложения)
- После завершения работы отладчика (это может занять некоторое время) окна командной строки закроются, и в папке C:\adplus появятся данные, которые можно будет проанализировать.
Дамп памяти из приложения/процесса, который АВАРИЙНО завершает работу (не зависает):
Создайте каталог с именем c:\adplus
Откройте командную строку и перейдите в каталог, в который вы установили инструменты отладки. По умолчанию это "C:\Program Files\Debugging Tools for Windows"
Введите в командной строке следующую команду:
cscript adplus.vbs -crash -pn appname -quiet -o c:\adplus
(где «appname» — это имя .exe-файла приложения, в работе которого произошел сбой)
- После того, как приложение, к которому вы присоединились на шаге 3, в конечном итоге даст сбой, отладчик создаст файл (или файлы) .dmp процесса. После того, как отладчик завершит работу (это может занять некоторое время), окно(а) командной строки закроются, и у вас в папке C:\adplus появятся данные, которые можно будет проанализировать.
См. эту веб-страницу поддержки Microsoft: "Инструмент диагностики отладки версии 1.2 уже доступен" где описывается использование инструмента DebugDiag.
В нем обсуждаются:
Создание дампов памяти:
Сбои процесса
Процесс зависает или низкая производительность
Для устранения зависания процесса или снижения производительности используйте один из следующих способов:
Создайте правило производительности. Правило производительности может быть основано на счетчиках производительности или времени отклика HTTP. Последнее относится к веб-серверам или веб-службам на основе HTTP. Правило счетчиков производительности позволяет захватывать ряд последовательных пользовательских дампов, когда один или несколько счетчиков производительности превышают указанные пороговые значения. Правило времени отклика HTTP позволяет использовать ETW (относится к веб-серверу IIS) или WinHTTP (для «пингования» любого типа веб-сервера или веб-службы на основе HTTP) для захвата пользовательских дампов при достижении настроенного тайм-аута.
Создайте серию дампов памяти вручную во время медленного или зависшего состояния, щелкнув правой кнопкой мыши имя процесса в представлении процессов и выбрав опцию «Создать серию дампов».
Затем проанализируйте полученные файлы .dmp с помощью CrashHangAnalysis.asp и/или PerfAnalysis.asp (см. ниже).
- Использование памяти или дескриптора
Анализ дампов памяти:
Одной из самых мощных функций DebugDiag является возможность анализировать дампы памяти и создавать файл отчета, отображающий анализ, а также рекомендации по устранению выявленных проблем.
DebugDiag использует «Скрипты анализа» для анализа дампов памяти. В DebugDiag 1.2 поставляется 5 скриптов анализа, как указано ниже:
Анализаторы сбоев/зависаний - CrashHangAnalysis.asp
Анализаторы нагрузки на память - DotNetMemoryAnalysis-BETA.asp
Анализаторы нагрузки на память - MemoryAnalysis.asp
Анализаторы производительности - PerfAnalysis.asp
Анализаторы SharePoint - SharePointAnalysis.asp".
Какой бы ни была проблема, вы можете найти точную точку и выяснить, какой процесс является неисправным, и отладить его. Если у вас есть вопрос об использовании этих инструментов, не стесняйтесь проверить и задать новый вопрос.
решение3
Похоже, у вас возникли проблемы с фильтрами WinSock, и ваше приложение зависает из-за какой-то проблемы с драйвером/вводом-выводом.
В административной командной строке попробуйте выполнить команду: netsh winsock reset
затем перезагрузите компьютер и посмотрите, поможет ли это.
Вот еще несколько идей, которые мне сразу пришли в голову:
Удалите все неиспользуемое программное обеспечение VPN.
Удалите (и переустановите) драйвер сетевой карты.
Обновите драйвер сетевой карты.
Если вы недавно удалили антивирусный продукт, возможно, остались драйверы сетевого фильтра. Если это так, вам может понадобиться найти инструмент удаления для соответствующего продукта безопасности и запустить его.
решение4
Попробуйте выполнить два сканирования:
Скан 1
- Запустите CMD от имени администратора.
- Введите
SFC /scannow
и нажмите Enter. - Когда сканирование будет завершено,
cbs.log
откройте%windir%\logs\cbs\cbs.log
- Найдите
cannot repair
и скопируйте файлы, которые не были восстановлены. - После того, как вы обнаружите не восстановленные файлы (если таковые имеются), используйте установочный диск для доступа к заменяющим файлам. Следуйте инструкциямэти направлениядля получения заменяющих файлов.
Сканирование 2 (последнее средство)
- Запустите CMD от имени администратора.
- Введите
Chkdsk /f /r
и нажмите Enter. - Вам будет показано сообщение о томе, который нужно заблокировать. Нажмите
y
и затем введите. - Перезагрузите компьютер
- Сканирование займет некоторое время. Дождитесь окончания сканирования.
- После перезагрузки перейдите
Event Viewer > Windows > Application Log
и найдитеWinninet
. - Посмотрите на результаты сканирования.
Я нашел ответ наСообщество Майкрософт.