<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.3.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>
<channel>
	<title>Comments on: Crash Dump Analysis Patterns (Part 133)</title>
	<link>https://www.dumpanalysis.org/blog/index.php/2011/03/20/crash-dump-analysis-patterns-part-133/</link>
	<description>Structural and Behavioral Patterns for Software Diagnostics, Forensics and Prognostics</description>
	<pubDate>Thu, 07 May 2026 00:19:31 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
		<item>
		<title>By: Dmitry Vostokov</title>
		<link>https://www.dumpanalysis.org/blog/index.php/2011/03/20/crash-dump-analysis-patterns-part-133/#comment-741723</link>
		<dc:creator>Dmitry Vostokov</dc:creator>
		<pubDate>Sun, 23 Oct 2016 08:47:48 +0000</pubDate>
		<guid>https://www.dumpanalysis.org/blog/index.php/2011/03/20/crash-dump-analysis-patterns-part-133/#comment-741723</guid>
		<description>Sometimes WinDbg commands show only limited number of frames. For example, !cs -l -o -s command may not show heap corruption as the cause of heap-loader deadlock if unhandled exception processing is too long. We need to double check stack traces with k commands. See also: http://www.dumpanalysis.org/blog/index.php/2008/05/27/10-common-mistakes-in-memory-analysis-part-1/</description>
		<content:encoded><![CDATA[<p>Sometimes WinDbg commands show only limited number of frames. For example, !cs -l -o -s command may not show heap corruption as the cause of heap-loader deadlock if unhandled exception processing is too long. We need to double check stack traces with k commands. See also: <a href="http://www.dumpanalysis.org/blog/index.php/2008/05/27/10-common-mistakes-in-memory-analysis-part-1/" rel="nofollow">http://www.dumpanalysis.org/blog/index.php/2008/05/27/10-common-mistakes-in-memory-analysis-part-1/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dmitry Vostokov</title>
		<link>https://www.dumpanalysis.org/blog/index.php/2011/03/20/crash-dump-analysis-patterns-part-133/#comment-741714</link>
		<dc:creator>Dmitry Vostokov</dc:creator>
		<pubDate>Wed, 14 Sep 2016 15:17:25 +0000</pubDate>
		<guid>https://www.dumpanalysis.org/blog/index.php/2011/03/20/crash-dump-analysis-patterns-part-133/#comment-741714</guid>
		<description>Some truncated stack traces originate from JIT Code:

00007ffa86d9952c: ntdll!RtlAllocateHeap+0x00000000000788fc
0000000058248d17: msvcr100!malloc+0x000000000000005b
0000000058248ddb: msvcr100!operator new+0x000000000000001f
00007ffa1f1a77f8: +0x00007ffa1f1a77f8

0:000&gt; ub 0x00007ffa1f1a77f8
00007ffa`1f1a77d5 488b4320        mov     rax,qword ptr [rbx+20h]
00007ffa`1f1a77d9 48895d18        mov     qword ptr [rbp+18h],rbx
00007ffa`1f1a77dd 488d1514000000  lea     rdx,[00007ffa`1f1a77f8]
00007ffa`1f1a77e4 48895530        mov     qword ptr [rbp+30h],rdx
00007ffa`1f1a77e8 c7410c00000000  mov     dword ptr [rcx+0Ch],0
00007ffa`1f1a77ef 488b4d40        mov     rcx,qword ptr [rbp+40h]
00007ffa`1f1a77f3 4533db          xor     r11d,r11d
00007ffa`1f1a77f6 ff10            call    qword ptr [rax]

0:000&gt; !IP2MD 0x00007ffa1f1a77f8
MethodDesc:   00007ffa1f292678
Method Name:  ModuleA.Foo(UInt64)
Class:        00007ffa1f204b90
MethodTable:  00007ffa1f204c08
mdToken:      0000000006000000
Module:       00007ffa1f203760
IsJitted:     yes
CodeAddr:     00007ffa1f1a7790
Transparency: Safe critical
*** ERROR: Module load completed but symbols could not be loaded for Company.Subsystem.Component.dll</description>
		<content:encoded><![CDATA[<p>Some truncated stack traces originate from JIT Code:</p>
<p>00007ffa86d9952c: ntdll!RtlAllocateHeap+0&#215;00000000000788fc<br />
0000000058248d17: msvcr100!malloc+0&#215;000000000000005b<br />
0000000058248ddb: msvcr100!operator new+0&#215;000000000000001f<br />
00007ffa1f1a77f8: +0&#215;00007ffa1f1a77f8</p>
<p>0:000> ub 0&#215;00007ffa1f1a77f8<br />
00007ffa`1f1a77d5 488b4320        mov     rax,qword ptr [rbx+20h]<br />
00007ffa`1f1a77d9 48895d18        mov     qword ptr [rbp+18h],rbx<br />
00007ffa`1f1a77dd 488d1514000000  lea     rdx,[00007ffa`1f1a77f8]<br />
00007ffa`1f1a77e4 48895530        mov     qword ptr [rbp+30h],rdx<br />
00007ffa`1f1a77e8 c7410c00000000  mov     dword ptr [rcx+0Ch],0<br />
00007ffa`1f1a77ef 488b4d40        mov     rcx,qword ptr [rbp+40h]<br />
00007ffa`1f1a77f3 4533db          xor     r11d,r11d<br />
00007ffa`1f1a77f6 ff10            call    qword ptr [rax]</p>
<p>0:000> !IP2MD 0&#215;00007ffa1f1a77f8<br />
MethodDesc:   00007ffa1f292678<br />
Method Name:  ModuleA.Foo(UInt64)<br />
Class:        00007ffa1f204b90<br />
MethodTable:  00007ffa1f204c08<br />
mdToken:      0000000006000000<br />
Module:       00007ffa1f203760<br />
IsJitted:     yes<br />
CodeAddr:     00007ffa1f1a7790<br />
Transparency: Safe critical<br />
*** ERROR: Module load completed but symbols could not be loaded for Company.Subsystem.Component.dll</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dmitry Vostokov</title>
		<link>https://www.dumpanalysis.org/blog/index.php/2011/03/20/crash-dump-analysis-patterns-part-133/#comment-741701</link>
		<dc:creator>Dmitry Vostokov</dc:creator>
		<pubDate>Tue, 03 May 2016 21:27:37 +0000</pubDate>
		<guid>https://www.dumpanalysis.org/blog/index.php/2011/03/20/crash-dump-analysis-patterns-part-133/#comment-741701</guid>
		<description>&lt;p align="left"&gt;Here's another example of Truncated Stack Trace from x64 Windows 10 after NULL code pointer was called.

&lt;p align="left"&gt;0:003&gt; kL
 # Child-SP          RetAddr           Call Site
00 0000005b`056ae1f8 00007ffa`e2f2916f ntdll!NtWaitForMultipleObjects+0xa
01 0000005b`056ae200 00007ffa`e2f2906e KERNELBASE!WaitForMultipleObjectsEx+0xef
02 0000005b`056ae500 00007ffa`e3b5155c KERNELBASE!WaitForMultipleObjects+0xe
03 0000005b`056ae540 00007ffa`e3b51088 kernel32!WerpReportFaultInternal+0x494
04 0000005b`056aeab0 00007ffa`e2f503ad kernel32!WerpReportFault+0x48
05 0000005b`056aeae0 00007ffa`e5c58cd2 KERNELBASE!UnhandledExceptionFilter+0x1fd
06 0000005b`056aebe0 00007ffa`e5c44296 ntdll!RtlUserThreadStart$filt$0+0x3e
07 0000005b`056aec20 00007ffa`e5c5666d ntdll!_C_specific_handler+0x96
08 0000005b`056aec90 00007ffa`e5bd3c00 ntdll!RtlpExecuteHandlerForException+0xd
09 0000005b`056aecc0 00007ffa`e5c5577a ntdll!RtlDispatchException+0x370
0a 0000005b`056af3c0 00000000`00000000 ntdll!KiUserExceptionDispatch+0x3a

&lt;p align="left"&gt;Here we can look at the trap frame RSP address and recover the return address:

&lt;p align="left"&gt;0:003&gt; dt _KTRAP_FRAME RSP 0000005b`056af7e8
ntdll!_KTRAP_FRAME
   +0x180 Rsp : 0x0000005b`056afad8

&lt;p align="left"&gt;0:003&gt; dps 0x0000005b`056afad8 L1
0000005b`056afad8  00007ff7`f6381266 ApplicationM!thread_two+0x16

&lt;p align="left"&gt;0:003&gt; ub 00007ff7`f6381266 
[...]
ApplicationM!thread_two:
00007ff7`f6381250 48894c2408      mov     qword ptr [rsp+8],rcx
00007ff7`f6381255 4883ec38        sub     rsp,38h
00007ff7`f6381259 48c744242000000000 mov   qword ptr [rsp+20h],0
00007ff7`f6381262 ff542420        call    qword ptr [rsp+20h]

&lt;p align="left"&gt;and reconstruct the bottom of the stack trace:

&lt;p align="left"&gt;0:003&gt; k L=0x0000005b`056afad8 
 # Child-SP          RetAddr           Call Site
00 0000005b`056afad8 00007ff7`f6381266 ntdll!NtWaitForMultipleObjects+0xa
01 0000005b`056afae0 00007ff7`f6382bd1 ApplicationM!thread_two+0x16
02 (Inline Function) --------`-------- ApplicationM!invoke_thread_procedure+0xe
03 0000005b`056afb20 00007ffa`e3b42d92 ApplicationM!thread_start&lt;void (__cdecl*)(void * __ptr64)&gt;+0x5d
04 0000005b`056afb50 00007ffa`e5bc9f64 kernel32!BaseThreadInitThunk+0x22
05 0000005b`056afb80 00000000`00000000 ntdll!RtlUserThreadStart+0x34

&lt;p align="left"&gt;and then construct Glued Stack Trace:

&lt;p align="left"&gt;0000005b`056ae1f8 00007ffa`e2f2916f ntdll!NtWaitForMultipleObjects+0xa
0000005b`056ae200 00007ffa`e2f2906e KERNELBASE!WaitForMultipleObjectsEx+0xef
0000005b`056ae500 00007ffa`e3b5155c KERNELBASE!WaitForMultipleObjects+0xe
0000005b`056ae540 00007ffa`e3b51088 kernel32!WerpReportFaultInternal+0x494
0000005b`056aeab0 00007ffa`e2f503ad kernel32!WerpReportFault+0x48
0000005b`056aeae0 00007ffa`e5c58cd2 KERNELBASE!UnhandledExceptionFilter+0x1fd
0000005b`056aebe0 00007ffa`e5c44296 ntdll!RtlUserThreadStart$filt$0+0x3e
0000005b`056aec20 00007ffa`e5c5666d ntdll!_C_specific_handler+0x96
0000005b`056aec90 00007ffa`e5bd3c00 ntdll!RtlpExecuteHandlerForException+0xd
0000005b`056aecc0 00007ffa`e5c5577a ntdll!RtlDispatchException+0x370
0000005b`056af3c0 00000000`00000000 ntdll!KiUserExceptionDispatch+0x3a
0000005b`056afae0 00007ff7`f6382bd1 ApplicationM!thread_two+0x16
(Inline Function) --------`-------- ApplicationM!invoke_thread_procedure+0xe
0000005b`056afb20 00007ffa`e3b42d92 ApplicationM!thread_start&lt;void (__cdecl*)(void * __ptr64)&gt;+0x5d
0000005b`056afb50 00007ffa`e5bc9f64 kernel32!BaseThreadInitThunk+0x22
0000005b`056afb80 00000000`00000000 ntdll!RtlUserThreadStart+0x34</description>
		<content:encoded><![CDATA[<p align="left">Here&#8217;s another example of Truncated Stack Trace from x64 Windows 10 after NULL code pointer was called.</p>
<p align="left">0:003> kL<br />
 # Child-SP          RetAddr           Call Site<br />
00 0000005b`056ae1f8 00007ffa`e2f2916f ntdll!NtWaitForMultipleObjects+0xa<br />
01 0000005b`056ae200 00007ffa`e2f2906e KERNELBASE!WaitForMultipleObjectsEx+0xef<br />
02 0000005b`056ae500 00007ffa`e3b5155c KERNELBASE!WaitForMultipleObjects+0xe<br />
03 0000005b`056ae540 00007ffa`e3b51088 kernel32!WerpReportFaultInternal+0&#215;494<br />
04 0000005b`056aeab0 00007ffa`e2f503ad kernel32!WerpReportFault+0&#215;48<br />
05 0000005b`056aeae0 00007ffa`e5c58cd2 KERNELBASE!UnhandledExceptionFilter+0&#215;1fd<br />
06 0000005b`056aebe0 00007ffa`e5c44296 ntdll!RtlUserThreadStart$filt$0+0&#215;3e<br />
07 0000005b`056aec20 00007ffa`e5c5666d ntdll!_C_specific_handler+0&#215;96<br />
08 0000005b`056aec90 00007ffa`e5bd3c00 ntdll!RtlpExecuteHandlerForException+0xd<br />
09 0000005b`056aecc0 00007ffa`e5c5577a ntdll!RtlDispatchException+0&#215;370<br />
0a 0000005b`056af3c0 00000000`00000000 ntdll!KiUserExceptionDispatch+0&#215;3a</p>
<p align="left">Here we can look at the trap frame RSP address and recover the return address:</p>
<p align="left">0:003> dt _KTRAP_FRAME RSP 0000005b`056af7e8<br />
ntdll!_KTRAP_FRAME<br />
   +0&#215;180 Rsp : 0&#215;0000005b`056afad8</p>
<p align="left">0:003> dps 0&#215;0000005b`056afad8 L1<br />
0000005b`056afad8  00007ff7`f6381266 ApplicationM!thread_two+0&#215;16</p>
<p align="left">0:003> ub 00007ff7`f6381266<br />
[&#8230;]<br />
ApplicationM!thread_two:<br />
00007ff7`f6381250 48894c2408      mov     qword ptr [rsp+8],rcx<br />
00007ff7`f6381255 4883ec38        sub     rsp,38h<br />
00007ff7`f6381259 48c744242000000000 mov   qword ptr [rsp+20h],0<br />
00007ff7`f6381262 ff542420        call    qword ptr [rsp+20h]</p>
<p align="left">and reconstruct the bottom of the stack trace:</p>
<p align="left">0:003> k L=0&#215;0000005b`056afad8<br />
 # Child-SP          RetAddr           Call Site<br />
00 0000005b`056afad8 00007ff7`f6381266 ntdll!NtWaitForMultipleObjects+0xa<br />
01 0000005b`056afae0 00007ff7`f6382bd1 ApplicationM!thread_two+0&#215;16<br />
02 (Inline Function) &#8212;&#8212;&#8211;`&#8212;&#8212;&#8211; ApplicationM!invoke_thread_procedure+0xe<br />
03 0000005b`056afb20 00007ffa`e3b42d92 ApplicationM!thread_start<void (__cdecl*)(void * __ptr64)>+0&#215;5d<br />
04 0000005b`056afb50 00007ffa`e5bc9f64 kernel32!BaseThreadInitThunk+0&#215;22<br />
05 0000005b`056afb80 00000000`00000000 ntdll!RtlUserThreadStart+0&#215;34</p>
<p align="left">and then construct Glued Stack Trace:</p>
<p align="left">0000005b`056ae1f8 00007ffa`e2f2916f ntdll!NtWaitForMultipleObjects+0xa<br />
0000005b`056ae200 00007ffa`e2f2906e KERNELBASE!WaitForMultipleObjectsEx+0xef<br />
0000005b`056ae500 00007ffa`e3b5155c KERNELBASE!WaitForMultipleObjects+0xe<br />
0000005b`056ae540 00007ffa`e3b51088 kernel32!WerpReportFaultInternal+0&#215;494<br />
0000005b`056aeab0 00007ffa`e2f503ad kernel32!WerpReportFault+0&#215;48<br />
0000005b`056aeae0 00007ffa`e5c58cd2 KERNELBASE!UnhandledExceptionFilter+0&#215;1fd<br />
0000005b`056aebe0 00007ffa`e5c44296 ntdll!RtlUserThreadStart$filt$0+0&#215;3e<br />
0000005b`056aec20 00007ffa`e5c5666d ntdll!_C_specific_handler+0&#215;96<br />
0000005b`056aec90 00007ffa`e5bd3c00 ntdll!RtlpExecuteHandlerForException+0xd<br />
0000005b`056aecc0 00007ffa`e5c5577a ntdll!RtlDispatchException+0&#215;370<br />
0000005b`056af3c0 00000000`00000000 ntdll!KiUserExceptionDispatch+0&#215;3a<br />
0000005b`056afae0 00007ff7`f6382bd1 ApplicationM!thread_two+0&#215;16<br />
(Inline Function) &#8212;&#8212;&#8211;`&#8212;&#8212;&#8211; ApplicationM!invoke_thread_procedure+0xe<br />
0000005b`056afb20 00007ffa`e3b42d92 ApplicationM!thread_start<void (__cdecl*)(void * __ptr64)>+0&#215;5d<br />
0000005b`056afb50 00007ffa`e5bc9f64 kernel32!BaseThreadInitThunk+0&#215;22<br />
0000005b`056afb80 00000000`00000000 ntdll!RtlUserThreadStart+0&#215;34</void></p>
<p></void></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dmitry Vostokov</title>
		<link>https://www.dumpanalysis.org/blog/index.php/2011/03/20/crash-dump-analysis-patterns-part-133/#comment-349574</link>
		<dc:creator>Dmitry Vostokov</dc:creator>
		<pubDate>Mon, 03 Oct 2011 14:52:14 +0000</pubDate>
		<guid>https://www.dumpanalysis.org/blog/index.php/2011/03/20/crash-dump-analysis-patterns-part-133/#comment-349574</guid>
		<description>Another example is when a debugger truncates the output. In WinDbg case there is a command .kframes that sets the default</description>
		<content:encoded><![CDATA[<p>Another example is when a debugger truncates the output. In WinDbg case there is a command .kframes that sets the default</p>
]]></content:encoded>
	</item>
</channel>
</rss>
