2009-10-28 4 views
1

아래 프로그램은 내 프로그램이며 windbg를 사용하여 WaitForSingleObject() 호출에서 프로세스가 차단 될 때 호출 스택을 얻으려고합니다. 이상한 일은 프로세스가 블로킹 할 때, windbg는 아주 이상한 스택만을 출력합니다. I는 while(1) 행의 주석 경우 다음 WinDBG에서 프로세스가 함수에 _tmain 차단 인식 할 수 WaitForSingleObject()와 매우 이상한 windbg 동작


// 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; 
} 

wow64cpu!TurboDispatchJumpAddressEnd+0x690 
wow64cpu!TurboDispatchJumpAddressEnd+0x484 
wow64!Wow64SystemServiceEx+0x1ce 
wow64!Wow64LdrpInitialize+0x429 
ntdll!RtlResetRtlTranslations+0x1b08 
ntdll!RtlResetRtlTranslations+0xc63 
ntdll!LdrInitializeThunk+0xe
참고.

감사합니다. Bin

+1

64 비트 OS에서 실행되는 Wow64 32 비트 프로세스 인 것처럼 보입니다. 64 비트 Windbg를 32 비트 Windbg가 아닌 프로세스에 연결하십시오. –

+1

고마워, 정말 문제 야! 32 비트 스위치 명령을 실행 한 후 백 트레이스가 올바르게되었습니다! ! wow64exts.sw –

답변

1

64 비트 OS에서 실행되는 Wow64 32 비트 프로세스입니다. 64 비트 Windbg를 32 비트 Windbg가 아닌 프로세스에 연결하십시오.