Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
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