WaitForSingleObject()的windbg行为非常奇怪

WaitForSingleObject()的windbg行为非常奇怪,windbg,waitforsingleobject,Windbg,Waitforsingleobject,下面是我的程序,当进程在使用windbg的WaitForSingleObject()调用中被阻塞时,我正在尝试获取调用堆栈。奇怪的是,当进程阻塞时,windbg只打印出非常奇怪的堆栈 wow64cpu!TurboDispatchJumpAddressEnd+0x690 wow64cpu!TurboDispatchJumpAddressEnd+0x484 wow64!Wow64SystemServiceEx+0x1ce wow64!Wow64LdrpInitialize+0x429 ntdll!R

下面是我的程序,当进程在使用windbg的WaitForSingleObject()调用中被阻塞时,我正在尝试获取调用堆栈。奇怪的是,当进程阻塞时,windbg只打印出非常奇怪的堆栈

wow64cpu!TurboDispatchJumpAddressEnd+0x690 wow64cpu!TurboDispatchJumpAddressEnd+0x484 wow64!Wow64SystemServiceEx+0x1ce wow64!Wow64LdrpInitialize+0x429 ntdll!RtlResetRtlTranslations+0x1b08 ntdll!RtlResetRtlTranslations+0xc63 ntdll!LdrInitializeThunk+0xe
请注意,如果我取消注释
while(1)
行,windbg可以识别
\u tmain
函数中的进程阻塞

谢谢。
Bin看起来像是一个运行在64位操作系统上的Wow64 32位进程。确保将64位Windbg连接到进程,而不是32位Windbg。

看起来这是一个在64位操作系统上运行的Wow64 32位进程。请确保将64位Windbg连接到进程,而不是32位Windbg。谢谢,这确实是问题所在!在我发出32位switch命令后,回溯现在很好!wow64exts.sw
// 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;
}