造成 Chkdsk 中间消息死锁的原因可能是什么?

造成 Chkdsk 中间消息死锁的原因可能是什么?

可能导致以下 chkdsk 结果的原因:

chkdsk /b /f /v /scan c:

The type of the file system is NTFS.
Cannot lock current drive.

Chkdsk cannot run because the volume is in use by another
process.  Would you like to schedule this volume to be

尝试检查系统驱动器时,这是正常现象(系统会要求您重新安排下次重新启动)。该消息通常会继续显示

checked the next time the system restarts? (Y/N) Y

但在我的例子中,最后一行缺失了。Chkdsk 从不打印它,也不会响应用户输入,所以我无法安排自定义扫描。Chkdsk 似乎陷入了死锁。它没有等待任何资源,CPU 使用率为 0%,内存使用率只有 920KiB。
这是输入线程的堆栈跟踪:

ntoskrnl.exe!KeSynchronizeExecution+0x2106
ntoskrnl.exe!KeWaitForMultipleObjects+0x135e
ntoskrnl.exe!KeWaitForMultipleObjects+0xdd9
ntoskrnl.exe!KeWaitForMutexObject+0x373
ntoskrnl.exe!KeStallWhileFrozen+0x1feb
ntoskrnl.exe!KeIsAttachedProcess+0x229
ntoskrnl.exe!KeWaitForMultipleObjects+0x152f
ntoskrnl.exe!KeWaitForMultipleObjects+0xdd9
ntoskrnl.exe!KeWaitForMutexObject+0x373
ntoskrnl.exe!NtWaitForSingleObject+0xb2
ntoskrnl.exe!setjmpex+0x6553
ntdll.dll!ZwWaitForSingleObject+0xa
ifsutil.dll!BLOCK_CACHE::Initialize+0x2fe
KERNEL32.DLL!BaseThreadInitThunk+0x22
ntdll.dll!RtlUserThreadStart+0x34

下面是一个主线程:

ntoskrnl.exe!KeSynchronizeExecution+0x2106
ntoskrnl.exe!KeWaitForMultipleObjects+0x135e
ntoskrnl.exe!KeWaitForMultipleObjects+0xdd9
ntoskrnl.exe!KeWaitForMutexObject+0x373
ntoskrnl.exe!FsRtlInitializeOplock+0x3d1
ntoskrnl.exe!NtReadFile+0x664
ntoskrnl.exe!setjmpex+0x6553
ntdll.dll!ZwReadFile+0xa
KERNELBASE.dll!ReadFile+0x78
ulib.dll!KEYBOARD::EnableLineMode+0xc8
ulib.dll!PROGRAM::GetStandardOutput+0x18e
ulib.dll!STREAM::ReadLine+0x13d
ulib.dll!CHKDSK_MESSAGE::IsYesResponse+0x232
ulib.dll!CHKDSK_MESSAGE::IsYesResponse+0xbd
UNTFS.DLL!ChkdskEx+0x61e
chkdsk.exe+0x2c4f
chkdsk.exe+0x3e6c
KERNEL32.DLL!BaseThreadInitThunk+0x22
ntdll.dll!RtlUserThreadStart+0x34

相关内容