Вопрос

Ниже приведена моя программа, и я пытаюсь получить стек вызовов, когда процесс заблокирован при вызове 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top