views:

176

answers:

1

Below is my program and I am trying to get the call stack when the process is blocked in WaitForSingleObject() call using windbg. The strange thing is when the process is blocking, windbg only prints out very strange stack.

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;

}


Note that if I uncomment the while(1) line then the windbg can recognize the process is blocking in _tmain function.

Thanks. Bin

A: 

Looks like that is a Wow64 32 bit process running on 64 bit OS. Make sure you attach the 64 bit Windbg to the process, not the 32 bit Windbg.

Remus Rusanu