ฉันกำลังเผชิญกับปัญหาที่แปลกประหลาดซึ่งฉันไม่สามารถแก้ไขได้ ฉันค้นพบเมื่อเร็ว ๆ นี้ว่า Win 8.1 Update 1 ของฉัน (ด้วยการอัปเดตทั้งหมดผ่าน WSUS ออฟไลน์) เริ่มกิน CPU ทั้งหมดเมื่อเปิดหน้าต่าง "อุปกรณ์และเครื่องพิมพ์"
มีความล่าช้าประมาณ 5-10 'จนกว่าอุปกรณ์จะปรากฏขึ้นอย่างไรก็ตาม CPU ยังคงหมุนต่อไปแม้ว่าจะมีการแสดงไอคอนเป็นเวลาประมาณ 5-10 นาที
ไฟล์ Xperf (ขอบคุณ @ magicandre1981 สำหรับคำแนะนำ) โพสต์ในDropbox - ซิปขนาด 24MB แยกออกเป็น 145MB
เมื่อมองผ่านกระบวนการสำรวจ Sysinternals ดูเหมือนว่าปัญหาเกิดจากการMultiByteToUnicodeN
โทร (น่าเสียดายที่ฉันไม่สามารถโพสต์ภาพได้):
ntdll.dl!RtlMultiByteToUnicodeN+0x1cf0
ntdll.dl!RtlMultiByteToUnicodeN+0x1cf0
ntdll.dl!RtlMultiByteToUnicodeN+0x1cf0
ntdll.dl!RtlMultiByteToUnicodeN+0x1cf0
ntdll.dl!RtlMultiByteToUnicodeN+0x1cf0
SHCORE.dll!GetScaleFactorForDevice+0x1d4
FunDisc.dll!DllCanUnloadNow+0x2e8
SHCORE.dll!GetScaleFactorForDevice+0x1d4
SHCORE.dll!GetScaleFactorForDevice+0x1d4
windows.immersiveshell.serviceprovider.dll!
SHCORE.dll!GetScaleFactorForDevice+0x1d4
SHCORE.dll!GetScaleFactorForDevice+0x1d4
SHCORE.dll!GetScaleFactorForDevice+0x1d4
SHCORE.dll!GetScaleFactorForDevice+0x1d4
Explorer.EXE
แนวคิดใดที่จะแก้ไขปัญหานี้ ฉันอาจรอ 20 'หรือมากกว่านั้นหรือต้องฆ่าภารกิจนักสำรวจ ฉันได้ลองติดตั้งอุปกรณ์ทั้งหมดใหม่เพื่อไม่ให้มีประโยชน์ ด้วยเหตุผลบางประการการแสดงผลหน้าต่างนี้ทำให้การแปล unicode กิน CPU ทั้งหมด
อัปเดตด้วยสัญลักษณ์
จากความคิดเห็นที่ได้รับฉันได้ติดตั้งสัญลักษณ์การค้าปลีกสำหรับ windows 8.1 และเครื่องมือชี้กระบวนการ (ตามที่อธิบายในโพสต์นี้ไปแล้ว แต่ผลลัพธ์ดูเหมือนจะเหมือนกันมากฉันดูที่สแต็กสำหรับเธรดและดูเหมือนว่า ใช้เวลาส่วนใหญ่ในการซิงโครไนซ์กับวัตถุเดียว:
ntoskrnl.exe!KeSynchronizeExecution+0x2246
ntoskrnl.exe!KeRemoveQueueEx+0x108e
ntoskrnl.exe!KeRemoveQueueEx+0xae9
ntoskrnl.exe!KeWaitForSingleObject+0x22a
ntoskrnl.exe!KeSetBasePriorityThread+0x4ec
ntoskrnl.exe!KeRemoveQueueEx+0x281d
ntoskrnl.exe!KiCheckForKernelApcDelivery+0x23
ntoskrnl.exe!SeQuerySessionIdToken+0x1b99
ntoskrnl.exe!SeQuerySessionIdToken+0x15f9
ntoskrnl.exe!SeQuerySessionIdToken+0x1440
ntoskrnl.exe!FsRtlAllocateExtraCreateParameter+0x744e
ntoskrnl.exe!FsRtlAllocateExtraCreateParameter+0x52c4
ntoskrnl.exe!FsRtlAllocateExtraCreateParameter+0x13c8
ntoskrnl.exe!FsRtlAllocateExtraCreateParameter+0x10da
ntoskrnl.exe!IoDeleteAllDependencyRelations+0x14d0
ntoskrnl.exe!FsRtlAllocateExtraCreateParameter+0xa96
ntoskrnl.exe!FsRtlAllocateExtraCreateParameter+0x898
ntoskrnl.exe!ObReferenceObjectByHandleWithTag+0xe92
ntoskrnl.exe!NtDeviceIoControlFile+0x56
ntoskrnl.exe!setjmpex+0x34b3
ntdll.dll!NtDeviceIoControlFile+0xa
KERNELBASE.dll!GetModuleHandleExA+0xb6
KERNEL32.DLL!DeviceIoControl+0x80
cfgmgr32.dll!SwMemFree+0x6a7
KERNELBASE.dll!SetKernelObjectSecurity+0xc1
ntdll.dll!RtlAcquireSRWLockExclusive+0x31e
ntdll.dll!RtlMultiByteToUnicodeN+0x20a3
KERNEL32.DLL!BaseThreadInitThunk+0xd
ntdll.dll!RtlUserThreadStart+0x1d
นี่เป็นอีกสแต็กจากหนึ่งในหัวข้อเริ่มต้น ( SHCORE.dll!GetScaleFactorForDevice
):
ntoskrnl.exe!KeSynchronizeExecution+0x2246
ntoskrnl.exe!KeRemoveQueueEx+0x108e
ntoskrnl.exe!KeRemoveQueueEx+0xae9
ntoskrnl.exe!KeWaitForSingleObject+0x22a
ntoskrnl.exe!KeSetBasePriorityThread+0x4ec
ntoskrnl.exe!KeRemoveQueueEx+0x281d
ntoskrnl.exe!KiCheckForKernelApcDelivery+0x23
win32k.sys+0x12aaea
win32k.sys+0x6d10d
win32k.sys+0xca699
win32k.sys+0x35a9f
win32k.sys+0x2a514
win32k.sys+0x138e28
win32k.sys+0x19fa8
win32k.sys+0x4921e
ntoskrnl.exe!setjmpex+0x34b3
USER32.dll!WindowFromPhysicalPoint+0x1a
USER32.dll!CallWindowProcW+0x2bf
USER32.dll!SendMessageW+0x111
UxTheme.dll!DrawThemeParentBackgroundEx+0x18f
Comctl32.dll!ImageList_GetIconSize+0xee3
Comctl32.dll!ImageList_GetIconSize+0x1107
Comctl32.dll!DrawScrollBar+0x12bf
USER32.dll!DispatchMessageW+0x154
USER32.dll!CallWindowProcW+0x132
Comctl32.dll!DefSubclassProc+0xb2
Comctl32.dll!DefSubclassProc+0x77
explorerframe.dll!Ordinal111+0x655d
Comctl32.dll!DPA_GetPtr+0x282
Comctl32.dll!DPA_GetPtr+0x152
USER32.dll!DispatchMessageW+0x154
USER32.dll!OffsetRect+0x172
USER32.dll!OffsetRect+0x22d
ntdll.dll!KiUserCallbackDispatcher+0x1f
USER32.dll!WindowFromPhysicalPoint+0x1a
USER32.dll!CallWindowProcW+0x2bf
USER32.dll!SendMessageW+0x111
UxTheme.dll!DrawThemeParentBackgroundEx+0x1a6
explorerframe.dll!Ordinal111+0xabef
explorerframe.dll!Ordinal111+0x6ae5
USER32.dll!DispatchMessageW+0x154
USER32.dll!OffsetRect+0x172
USER32.dll!OffsetRect+0x22d
ntdll.dll!KiUserCallbackDispatcher+0x1f
USER32.dll!WindowFromPhysicalPoint+0x1a
USER32.dll!CallWindowProcW+0x2bf
USER32.dll!SendMessageW+0x111
UxTheme.dll!DrawThemeParentBackgroundEx+0x1a6
explorerframe.dll!Ordinal111+0xaa52
Comctl32.dll!DPA_GetPtr+0x282
Comctl32.dll!DPA_GetPtr+0x152
USER32.dll!GetWindowLongPtrA+0x265
USER32.dll!OffsetRect+0x172
USER32.dll!OffsetRect+0x22d
ntdll.dll!KiUserCallbackDispatcher+0x1f
USER32.dll!SendMessageW+0x1aa
USER32.dll!SendMessageW+0x1bc
explorerframe.dll!Ordinal111+0x546e
explorerframe.dll!Ordinal111+0x10568
explorerframe.dll!Ordinal111+0x11d50
explorerframe.dll!Ordinal111+0x11d00
explorerframe.dll!Ordinal111+0xeee3
SHELL32.dll!SHGetKnownFolderPathWorker+0x84c
SHELL32.dll!SHGetKnownFolderPathWorker+0xa23
SHCORE.dll!GetScaleFactorForDevice+0x333
KERNEL32.DLL!BaseThreadInitThunk+0xd
ntdll.dll!RtlUserThreadStart+0x1d
โปรดทราบว่าใช้เวลาประมาณ 30 นิ้วในขณะนี้ - มีเวลาในการติดตั้งสัญลักษณ์อ่านโพสต์ทำการวินิจฉัยและโพสต์กลับและยังมีซีพียูทำงานอยู่
การอัพเดทครั้งที่สองสำหรับสัญลักษณ์
ขอบคุณ @kinokijuf ฉันใช้ Windows Defender Debug.dll และมีข้อมูลที่แม่นยำยิ่งขึ้น เธรดตอนนี้มีลักษณะดังนี้:
ntdll.dll!TppWorkerThread
ntdll.dll!TppWorkerThread
ntdll.dll!TppWorkerThread
ntdll.dll!TppWorkerThread
ntdll.dll!TppWorkerThread
SHCORE.dll!Microsoft::WRL::FtmBase::MarshalInterface+0x1c
SHCORE.dll!Microsoft::WRL::FtmBase::MarshalInterface+0x1c
FunDisc.dll!CNotificationQUeue::ThreadProc
SHCORE.dll!Microsoft::WRL::FtmBase::MarshalInterface+0x1c
windows.immersiveshell.serviceprovicer.dll!CImmersiveShellController::s_ImmersiveShellComponentsThreadProc
Explorer.EXE!wWinMainCRTStartup
ในขณะที่เธรดระดับบนสุดยังคงแสดงความขัดแย้งของเธรด / ล็อคอยู่:
ntoskrnl.exe!KiSwapContext+0x76
ntoskrnl.exe!KiSwapThread+0x14e
ntoskrnl.exe!KiCommitThreadWait+0x129
ntoskrnl.exe!KeWaitForSingleObject+0x22a
ntoskrnl.exe!KiSchedulerApc+0x74
ntoskrnl.exe!KiDeliverApc+0x1fd
ntoskrnl.exe!KiSwapThread+0x2da
ntoskrnl.exe!KiCommitThreadWait+0x129
ntoskrnl.exe!KeRemoveQueueEx+0x27b
ntoskrnl.exe!IoRemoveIoCompletion+0x8a
ntoskrnl.exe!NtWaitForWorkViaWorkerFactory+0x30a
ntoskrnl.exe!KiSystemServiceCopyEnd+0x13
ntdll.dll!NtWaitForWorkViaWorkerFactory+0xa
ntdll.dll!TppWorkerThread+0x286
KERNEL32.DLL!BaseThreadInitThunk+0xd
ntdll.dll!RtlUserThreadStart+0x1d
ขอบคุณ
Ordinal111
กองติดตามที่ถูกต้องจะไม่แสดงการทำงานเช่น