WaitForSingleObject()非常奇怪的windbg行为
-
06-07-2019 - |
题
下面是我的程序,我试图在使用windbg在WaitForSingleObject()调用中阻止进程时获取调用堆栈。奇怪的是,当进程阻塞时,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
函数中的进程阻塞。
感谢。 滨
解决方案
看起来这是在64位操作系统上运行的Wow64 32位进程。确保将64位Windbg连接到进程,而不是32位Windbg。
不隶属于 StackOverflow