2015-02-06 4 views
0

WinDbg에서 프로세스의 메모리 덤프, 특히 스레드 중 하나의 호출 스택을 분석합니다. 호출 스택의 출력은 다음과 같습니다.스레드의 호출 스택이 동일한 함수 호출로 가득 차 있습니다. - curl_inet_ntop()

0:008> kb 
RetAddr   : Args to Child               : Call Site 
00000000`0089e0d4 : 0369f3dc`0089e0c0 00000001`00000000 ffffffff`0097541c 00000000`0369e494 : TestService!Curl_inet_ntop+0x714 
00000000`0089e0d4 : 0097541c`00000000 0369e4a4`00000000 00000000`00000000 00000089`00000000 : TestService!Curl_inet_ntop+0x714 
00000000`0089e0d4 : 00000003`00000000 00000000`00000000 00000017`00000000 00000000`00000000 : TestService!Curl_inet_ntop+0x714 
00000000`0089e0d4 : 00000000`00000000 00000002`00000000 00000001`0097541c 010669d0`0369e4f8 : TestService!Curl_inet_ntop+0x714 
00000000`0089e0d4 : 00973376`00000000 775b1b47`00973379 01060000`01060000 010dba60`01060000 : TestService!Curl_inet_ntop+0x714 
00000000`0089e0d4 : 775b5bb8`0369e544 0000077f`01060000 010dba68`775b1ace 0000a4b0`000007ff : TestService!Curl_inet_ntop+0x714 
00000000`0089e0d4 : 01060000`010dba60 01060054`00000000 0000a4b0`0000a4b0 7757f7f1`0369e598 : TestService!Curl_inet_ntop+0x714 
00000000`0089e0d4 : 00000800`01060000 01060000`00000000 00000000`010dba60 000007ff`0111ba70 : TestService!Curl_inet_ntop+0x714 
00000000`0089e0d4 : 01060000`000024af 00000000`010dba60 00000000`8b0024af 010ce9e0`01060000 : TestService!Curl_inet_ntop+0x714 
00000000`0089e0d4 : 010dba60`00000000 00000003`01060000 00000000`00000000 0000000a`00000000 : TestService!Curl_inet_ntop+0x714 
00000000`0089e0d4 : 00000003`00000000 00000000`00000000 0000005f`00000000 00000003`00000000 : TestService!Curl_inet_ntop+0x714 
00000000`0089e0d4 : 00000000`00000000 00000030`00000000 00000003`00000000 00000000`00000000 : TestService!Curl_inet_ntop+0x714 
00000000`0089e0d4 : 00000001`00000000 00000001`00000000 00000000`00000000 00977ae4`00000000 : TestService!Curl_inet_ntop+0x714 
00000000`0089e0d4 : 00000001`0369e640 00000000`00000000 017897f8`00000000 0369e644`00000000 : TestService!Curl_inet_ntop+0x714 
00000000`0089e0d4 : 00000000`ffffffff 00000000`775b1e12 77565191`0369f2f4 fffffffe`7837cb7b : TestService!Curl_inet_ntop+0x714 

이 출력은 동일한 호출이 100 개 이상 포함 된 전체 스택의 일부일뿐입니다.

누군가이 전화 스택에서 무슨 일이 일어나는지 설명 할 수 있습니까? 이 스레드가 반복적으로 같은 함수 curl_inet_ntop()을 호출합니까?

+0

어떤 버전이나 컬이 사용되고 있는지 알고 계십니까? –

+0

나는 그것이 7.35.0 버전이라고 믿는다. – ykay

+1

나에게는 그것이 '컬 (curl)'을 전혀 호출하지 않는 것으로 보인다. 'Curl_inet_ntop'은 스스로를 호출하는'TestService'의 재귀 적 메소드처럼 보입니다. 'curl'이 DLL이면'curl! something'이 스택에 있어야합니다 (물론 소스 코드로 사용되는 경우가 아닙니다). –

답변

2

실제로 대답은 아니지만 설명을하기에는 너무 길다. ko 다 9999 스택에 몇 가지 다른 호출이 있는지 확인하려면 다음을 수행하십시오. 이 실패 할 경우, @rsp이 StackBase 및 StackLimit 사이 인 경우 다! TEB 확인 지금

0:000> !teb 
TEB at 000007fffffde000 
    ExceptionList:  0000000000000000 
    StackBase:   0000000000130000 
    StackLimit:   000000000010e000 

0:000> r @rsp 
rsp=000000000012d7b8 

당신은 지금

0:000> dqs @rsp 0000000000130000 <- StackBase 

잠재적 인 반환 주소를 파악하는 것을 시도 할 수 을 수행 할 수 있습니다 ub는 유효한 반송 주소인지 여부를 밝히는 데 유용합니다.

0:000> kc 2 
Call Site 
ntdll!NtWaitForSingleObject 
ntdll!RtlReportExceptionEx 
0:000> dqs @rsp L3 
00000000`0012d7b8 00000000`77983072 ntdll!RtlReportExceptionEx+0x1d2 
00000000`0012d7c0 00000000`00000000 
00000000`0012d7c8 00000000`004ba81a TB5OTx64+0xca81a 
0:000> ub 00`77983072 
ntdll!RtlReportExceptionEx+0x1bc: 
00000000`7798305c f8    clc 
00000000`7798305d 0000   add  byte ptr [rax],al 
00000000`7798305f 00483b   add  byte ptr [rax+3Bh],cl 
00000000`77983062 df74394d  fbstp tbyte ptr [rcx+rdi+4Dh] 
00000000`77983066 8bc6   mov  eax,esi 
00000000`77983068 b201   mov  dl,1 
00000000`7798306a 488bcb   mov  rcx,rbx 
00000000`7798306d e87ee2f8ff  call ntdll!NtWaitForSingleObject  (00000000`779112f0) 
관련 문제