Очень странное поведение windbg с WaitForSingleObject()
-
06-07-2019 - |
Вопрос
Ниже приведена моя программа, и я пытаюсь получить стек вызовов, когда процесс заблокирован при вызове WaitForSingleObject() с использованием windbg.Странная вещь заключается в том, что когда процесс блокируется, windbg выводит только очень странный стек.
wow64cpu!TurboDispatchJumpAddressEnd+0x690 wow64cpu!TurboDispatchJumpAddressEnd+0x484 wow64!Wow64SystemServiceEx+0x1ce wow64!Wow64LdrpInitialize+0x429 ntdll!RtlResetRtlTranslations+0x1b08 ntdll!RtlResetRtlTranslations+0xc63 ntdll!LdrInitializeThunk+0xe
// process2.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "windows.h"
HANDLE g_hWriteEvent;
int _tmain(int argc, _TCHAR* argv[])
{
g_hWriteEvent = OpenEvent(
EVENT_ALL_ACCESS,
FALSE,
TEXT("WriteEvent")
);
if (g_hWriteEvent == NULL) {
printf("OpenEvent error (%d)\n", GetLastError());
return 0;
}
// while (1);
WaitForSingleObject(g_hWriteEvent, INFINITE);
return 0;
}
Обратите внимание, что если я раскомментирую while(1)
строка, то windbg может распознать, что процесс блокируется в _tmain
функция.
Спасибо.Bin
Решение
Похоже, что это 32-разрядный процесс Wow64, работающий на 64-разрядной ОС.Убедитесь, что вы подключили к процессу 64-разрядный Windbg, а не 32-разрядный Windbg.
Не связан с StackOverflow