Приложения висят на случайных файлах

528
SR_

Я испытываю зависания приложений каждый день, несколько раз в день, в течение нескольких дней, в моей системе Windows 7. Эта система стабильна в течение 4 лет, поэтому происходит что-то новое.

Основным симптомом было то, что Thunderbird замерз при запуске и стал непригодным для использования. Я подумал, что это проблема с Thunderbird, и в итоге создал новый профиль, потому что моему профилю больше 10 лет.

Почему я подумал о профиле? Потому что я обнаружил, что не могу удалить некоторые .msfфайлы без перезагрузки. Попытка сделать это заморозила Проводник, который должен был быть перезапущен.
С новым профилем Thunderbird продолжал зависать, но реже, поэтому я смог читать почту и быстро составлять ответ.

Вчера я редактировал .hmtlфайл с помощью gvim и одновременно загружал его в Firefox, чтобы посмотреть на результат.
Через час работы снова замерзло. Любой процесс, пытающийся манипулировать .hmtlфайлом, был заморожен. Убийство и Firefox, и gvim не помогло.

При использовании проводника процессов (НЕ запущен от имени администратора) не удалось показать .hmtlфайл с функцией поиска дескриптора. Handle.exe тоже не смог. Перезагрузка разблокирует файл, который не поврежден. У меня есть chkdsk /Bдва устройства ( C:это SSD, D:это HDD), так как .msfфайл был включен D:и .hmtlвключен C:.

Я заподозрил поиск Windows и очистил свою базу данных.
Я попытался отключить поиск Windows, мой антивирус (Avast) и два инструмента синхронизации / резервного копирования, работающие в качестве службы.

Не снимать блокировки.

Я нашел это интересное использование windbg: зависший процесс в Windows: есть ли способ узнать почему?

Я прикрепил процесс Thunderbird, который в данный момент зависает, и теперь я вижу это:

FAULTING_IP:  ntdll!DbgBreakPoint+0 00000000`7772cc90 cc int 3  EXCEPTION_RECORD: ffffffffffffffff -- (.exr 0xffffffffffffffff) ExceptionAddress: 000000007772cc90 (ntdll!DbgBreakPoint) ExceptionCode: 80000003 (Break instruction exception) ExceptionFlags: 00000000 NumberParameters: 1 Parameter[0]: 0000000000000000  FAULTING_THREAD: 0000000000000000  BUGCHECK_STR: HANG  PROCESS_NAME: thunderbird.exe  ERROR_CODE: (NTSTATUS) 0xcfffffff - <Unable to get error code text>  EXCEPTION_CODE: (NTSTATUS) 0xcfffffff - <Unable to get error code text>  EXCEPTION_PARAMETER1: 0000000000000000  NTGLOBALFLAG: 0  APPLICATION_VERIFIER_FLAGS: 0  DERIVED_WAIT_CHAIN:   Dl Eid Cid WaitType -- --- ------- -------------------------- 56 74c.1a04 Speculated (Triage) --> 0 74c.12b4 File IO   WAIT_CHAIN_COMMAND: ~56s;k;;~0s;k;;  BLOCKING_THREAD: 00000000000012b4  DEFAULT_BUCKET_ID: APPLICATION_HANG_BlockedOn_FileIO  PRIMARY_PROBLEM_CLASS: APPLICATION_HANG_BlockedOn_FileIO  LAST_CONTROL_TRANSFER: from 00000000751dc1ff to 000000007772df0a  STACK_TEXT:  00000000`0024ddd8 00000000`751dc1ff : 00000000`003becdc 00000000`003becf4 00000000`005847e0   000000ba`00340201 : ntdll!ZwCreateFile+0xa 00000000`0024dde0 00000000`751cd18f : 00000000`003becdc 00000000`00000000 00000000`00000000   00000000`00000060 : wow64!whNtCreateFile+0x10f 00000000`0024deb0 00000000`75152776 : 00000000`77360745 00000000`751c0023 00000000`00000246   00000000`003bf2f8 : wow64!Wow64SystemServiceEx+0xd7 00000000`0024e770 00000000`751cd286 : 00000000`00000000 00000000`75151920 ffffffff`fc5f0000   00000000`7770dfc1 : wow64cpu!TurboDispatchJumpAddressEnd+0x2d 00000000`0024e830 00000000`751cc69e : 00000000`00000000 00000000`00000000 00000000`751c4b10   00000000`7ffe0030 : wow64!RunCpuSimulation+0xa 00000000`0024e880 00000000`777216a6 : 00000000`00584330 00000000`00000000 00000000`7780e670   00000000`777e1950 : wow64!Wow64LdrpInitialize+0x42a 00000000`0024edd0 00000000`7777d150 : 00000000`00000000 00000000`77720db1 00000000`0024f380   00000000`00000000 : ntdll!LdrpInitializeProcess+0x17e3 00000000`0024f2c0 00000000`7770b63e : 00000000`0024f380 00000000`00000000 00000000`fffdf000   00000000`00000000 : ntdll! ?? ::FNODOBFM::`string'+0x25b20 00000000`0024f330 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000   00000000`00000000 : ntdll!LdrInitializeThunk+0xe   FOLLOWUP_IP:  wow64!whNtCreateFile+10f 00000000`751dc1ff 448bd8 mov r11d,eax  SYMBOL_STACK_INDEX: 1  SYMBOL_NAME: wow64!whNtCreateFile+10f  FOLLOWUP_NAME: MachineOwner  MODULE_NAME: wow64  IMAGE_NAME: wow64.dll  DEBUG_FLR_IMAGE_TIMESTAMP: 562593aa  STACK_COMMAND: ~0s ; kb  BUCKET_ID: X64_HANG_wow64!whNtCreateFile+10f  FAILURE_BUCKET_ID: APPLICATION_HANG_BlockedOn_FileIO_cfffffff_wow64.dll!whNtCreateFile  WATSON_STAGEONE_URL: http://watson.microsoft.com/0004cc90.htm?Retriage=1  Followup: MachineOwner --------- 

Итак, хорошо, я был совершенно уверен, что Thunderbird блокирует IO, и теперь это подтверждается. Согласно документации API, этот вызов может быть открытием существующего файла. Я попытался вывести аргумент, в котором имя файла (насколько я понимаю) воспроизводится случайным образом с помощью этой команды: "dt ntdll! _OBJECT_ATTRIBUTES 00000000`005847e0", но я не знаком с windbg и соглашениями о вызовах, поэтому до сих пор не смог копаться в структуре.

Так что я могу делать дальше?

РЕДАКТИРОВАТЬ:
После изменения моей WinDbg на версию x86, как предложено, мои дампы стали анализируемыми.
Заморозки исчезли, как это всегда происходит, когда вы концентрируетесь на проблеме: она ненадолго исчезает, чтобы избежать решения, до этой ночи, когда Canon DPP замерзла во время пакетной обработки файлов RAW.
Вот след:

FAULTING_IP:  ntdll!DbgBreakPoint+0 7736000c cc int 3  EXCEPTION_RECORD: ffffffff -- (.exr 0xffffffffffffffff) ExceptionAddress: 7736000c (ntdll!DbgBreakPoint) ExceptionCode: 80000003 (Break instruction exception) ExceptionFlags: 00000000 NumberParameters: 1 Parameter[0]: 00000000  FAULTING_THREAD: 00000000  BUGCHECK_STR: HANG  PROCESS_NAME: DPPBatch.exe  ERROR_CODE: (NTSTATUS) 0xcfffffff - <Unable to get error code text>  EXCEPTION_CODE: (NTSTATUS) 0xcfffffff - <Unable to get error code text>  EXCEPTION_PARAMETER1: 00000000  MOD_LIST: <ANALYSIS/>  NTGLOBALFLAG: 0  APPLICATION_VERIFIER_FLAGS: 0  DERIVED_WAIT_CHAIN:   Dl Eid Cid WaitType -- --- ------- -------------------------- 1 1b88.1ff4 Speculated (Triage) --> 0 1b88.1948 File IO   WAIT_CHAIN_COMMAND: ~1s;k;;~0s;k;;  BLOCKING_THREAD: 00001948  DEFAULT_BUCKET_ID: APPLICATION_HANG_BlockedOn_FileIO  PRIMARY_PROBLEM_CLASS: APPLICATION_HANG_BlockedOn_FileIO  LAST_CONTROL_TRANSFER: from 74e8c5fd to 77370106  STACK_TEXT:  0018ed8c 74e8c5fd 0018ee28 80100080 0018edcc ntdll!ZwCreateFile+0x12 0018ee30 76e53f56 00000060 80100080 00000001 KERNELBASE!CreateFileW+0x35e 0018ee5c 76e553b4 0058e300 80000000 00000001 kernel32!CreateFileWImplementation+0x69 0018ee8c 100dbf8e 01f4ed98 80000000 00000001 kernel32!CreateFileA+0x37 WARNING: Stack unwind information not available. Following frames may be wrong. 0018eeb8 10002275 01f40000 00000000 10002294 DPPDLL!GNZ_getFilenameFromScriptFile+0x3e 0018eef8 0018ef7c 01f4ed98 00000000 0018ef7c DPPDLL!UCSCloseProfile+0xea5 0018eefc 01f4ed98 00000000 0018ef7c 01f4fc20 0x18ef7c 0018ef7c 00000000 00000000 00000000 00000000 0x1f4ed98 FOLLOWUP_IP:  DPPDLL!GNZ_getFilenameFromScriptFile+3e 100dbf8e 8bf8 mov edi,eax  SYMBOL_STACK_INDEX: 4  SYMBOL_NAME: dppdll!GNZ_getFilenameFromScriptFile+3e  FOLLOWUP_NAME: MachineOwner  MODULE_NAME: DPPDLL  IMAGE_NAME: DPPDLL.dll  DEBUG_FLR_IMAGE_TIMESTAMP: 52251a6c  STACK_COMMAND: ~0s ; kb  BUCKET_ID: HANG_dppdll!GNZ_getFilenameFromScriptFile+3e  FAILURE_BUCKET_ID: APPLICATION_HANG_BlockedOn_FileIO_cfffffff_DPPDLL.dll!GNZ_getFilenameFromScriptFile  WATSON_STAGEONE_URL: http://watson.microsoft.com/0001000c.htm?Retriage=1  Followup: MachineOwner --------- 

Я легко нашел соответствующий файл на моем диске D : D:\Sauvegarde\Tirages\photos\20151214 - totale D70\\GNZC0E116282C365.vbf. Это зависает процесс после 2 часов работы. Я использовал компьютер в это время. Это определенно выглядит как повреждение файловой системы или ошибка драйвера устройства, поэтому я снова запусту chkdsk.
Тем временем я попытался запустить ProcessExplorer для поиска процессов ввода-вывода, ожидающих файла, это сработало. Но я вспомнил, что он должен быть запущен от имени администратора, поэтому я закрыл его и щелкнул правой кнопкой мыши на значке и ... потребовалось, скажем, 5 минут, чтобы всплыть (я не ожидал, что он появится, это удивило меня). Еще раз, согласно Process Explorer, ни один дескриптор не связан с файлом блокировки (я искал «vbf»).

Ну, я думаю, что на мой вопрос об отладчике есть ответ (наличие двух версий WinDbg), и моя проблема все еще должна быть решена, но я не уверен, что это правильное место, чтобы получить помощь по нему.

1
Похоже, проблема с вредоносным ПО. Вы сканировали на наличие вредоносных программ? LPChip 8 лет назад 0
@LPChip, что заставляет вас так думать? Я обычно не запускаю сторонние сканеры, так как не доверяю им, и это может повредить мой компьютер. Но давайте попробуем: я только что запустил HijackThis, и отчет мне не помогает. Аваст ничего не находит. SFC / SCANNOW не счастлив, но не был раньше. SR_ 8 лет назад 0
wow64 показывает, что это 64-битный дамп 32-битного процесса. Используйте ProcessExplorer или 32-битное Taskmgr для создания дампа. укажите на сервер символов thunderbird (srv * D: \ symbols \ * http: //symbols.mozilla.org/thunderbird) и запустите **! analysis -v -hang ** в windbg (версия для x86) magicandre1981 8 лет назад 0
@ magicandre1981 Большое спасибо! Теперь я могу копаться в стеке и находить свои биты ... да! На этот раз файл является одним из моих INBOX.msf. Хум, щелкни по нему правой кнопкой в ​​проводнике. Бум, висит исследователь. Я запускаю Process Explorer от имени администратора, нахожу маркеры и ... нет в списке, черт побери :( SR_ 8 лет назад 0
запустите ** chkdsk / f ** возможно у вас проблемы с файловой системой NTFS magicandre1981 8 лет назад 0
@ magicandre1981 chkdsk / B подразумевает / F (через / R) SR_ 8 лет назад 0
ты пробовал chkdsk? Он обнаруживает проблемы NTFS? magicandre1981 8 лет назад 0
@ magicandre1981 Да, я сделал chkdsk: «У меня есть chkdsk / B мои два устройства». Он не обнаружил ничего плохого. SR_ 8 лет назад 0
хорошо, захватить новый (на этот раз 32-битный) дамп и проанализировать его magicandre1981 8 лет назад 0
@ magicandre1981 Отредактировал сообщение соответственно. Даже если я все еще сталкиваюсь с проблемой, я не уверен, что superuser.com является подходящим местом для продолжения этого обсуждения, на первоначальный вопрос был дан ответ. SR_ 8 лет назад 0
Хум, еще один поводок. После перезагрузки DPPBatch завершился с ошибкой (в переводе здесь) «недостаточно места на диске». Я помню, как Thunderbird сообщал о точно такой же ошибке при сжатии папок IMAP. У меня много свободного места. Так что это не проблема. Может быть, я должен спросить, с чем это может быть связано в новом вопросе? Чтение документации по NTFS дает мне много информации, с которой я не знаю, что делать. SR_ 8 лет назад 0
Возможно, стоит создать дамп процесса с помощью Procdump с помощью ключей: `procdump -ma -mk processname` Это создаст вам и стеки пользовательского режима, и режимы ядра. См. Https://channel9.msdn.com/Shows/Defrag-Tools/Defrag-Tools-178-Sysinternals-ProcDump-v90 о том, как с этим работать. В противном случае вывод fltmc.exe в командной строке администратора может быть интересен, чтобы увидеть, какие другие фильтры файловой системы установлены. HelpingHand 6 лет назад 0

0 ответов на вопрос