Drwtsn32 log 분석
Drwtsn32 로그를 분석하다 보면 다수의 Thread 를 사용하는 Server Application 을 분석해야 하는 경우가 많이 있습니다. 하나의 Thread 만을 사용한다면 간단하게 문제 지점을 찾을 수 있지만 다수의 Thread 를 사용한다면 Drwtsn32 에서 각각의 Thread 를 Dump 를 만들어 기록하기 때문에 너무 많은 Thread 정보를 만나게 될 수 있습니다.
이때 간단하게 아래와 같이 ntdll!KiFastSystemCallRet() 이 스택의 최상단에 위치해 있다면 Drwtsn32 가 Thread 를 종료하면서 기록된 것으로 볼 수 있습니다.
WARNING: Stack unwind information not available. Following frames may be wrong.
0012fdd0 00441ffe 0012fe1c 00000000 00000000 ntdll!KiFastSystemCallRet
773a16d6 ff016aec e5e80875 5dffffa2 900004c2 TestServer+0x41ffe
8b55ff8b 00000000 00000000 00000000 00000000 0xff016aec
좀더 Thread 정보를 확인해 보면 다음과 같이 실제 문제를 일으키는 Thread 를 확인할 수 있습니다.
00472340 8a06 mov al,[esi]
00472342 46 inc esi
FAULT ->00472343 8a27 mov ah,[edi] ds:0023:00000d14=??
WARNING: Stack unwind information not available. Following frames may be wrong.
0328b4d0 0042d73c 00000d14 004ae08c 01727bc4 TestServer+0x72343
00ea2c20 002135a8 fffffffe 00000001 00000c70 TestServer+0x2d73c
00ea2c20 002135a8 fffffffe 00000001 00000c70 0x2135a8
00487154 0044aac0 0044ab10 0044ab30 0044ab00 0x2135a8
00449e40 00000038 082444f6 56097401 014bcde8 TestServer+0x4aac0
MAP 파일을 확인해 보면 _stricmp 의 첫번째 parameter 가 0xd14 로 접근할 수 없는 메모리인 것을 확인할 수 있습니다.
0001:00071320 _stricmp 00472320 f LIBCMT:stricmp.obj
int _stricmp(
const char *string1,
const char *string2
);
Comments
- Anonymous
November 17, 2008
The comment has been removed