<?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:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>Software Diagnostics Library</title>
	<link>https://www.dumpanalysis.org/blog</link>
	<description>Structural and Behavioral Patterns for Software Diagnostics, Forensics and Prognostics</description>
	<pubDate>Thu, 17 Jun 2021 19:56:18 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
	<language>en</language>
			<item>
		<title>15th Anniversary</title>
		<link>https://www.dumpanalysis.org/blog/index.php/2021/06/17/15th-anniversary/</link>
		<comments>https://www.dumpanalysis.org/blog/index.php/2021/06/17/15th-anniversary/#comments</comments>
		<pubDate>Thu, 17 Jun 2021 19:55:23 +0000</pubDate>
		<dc:creator>Dmitry Vostokov</dc:creator>
		
		<category><![CDATA[Announcements]]></category>

		<guid isPermaLink="false">https://www.dumpanalysis.org/blog/index.php/2021/06/17/15th-anniversary/</guid>
		<description><![CDATA[To celebrate 15 (0xF) years of Software Diagnostics Library (former Crash Dump Analysis blog) this August, Software Diagnostics Services opens a Summer sale of Memory Dump Analysis Anthology Volume Set in PDF format with a 50% discount. It also includes Volume 14 once it is published on the anniversary date. The sale end date is [...]]]></description>
			<content:encoded><![CDATA[<p align="left">To celebrate 15 (0xF) years of Software Diagnostics Library (former Crash Dump Analysis blog) this August, <a href="https://www.patterndiagnostics.com/mdaa-volumes">Software Diagnostics Services</a> opens a Summer sale of Memory Dump Analysis Anthology Volume Set in PDF format with a 50% discount. It also includes Volume 14 once it is published on the anniversary date. The sale end date is undefined and equals to min(salesTarget.dateAchieved(), Date(“14-August-2021”)). <a href="https://www.patterndiagnostics.com/mdaa-volumes">https://www.patterndiagnostics.com/mdaa-volumes</a></p>
]]></content:encoded>
			<wfw:commentRss>https://www.dumpanalysis.org/blog/index.php/2021/06/17/15th-anniversary/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Trace Analysis Patterns (Part 208)</title>
		<link>https://www.dumpanalysis.org/blog/index.php/2021/05/29/trace-analysis-patterns-part-208/</link>
		<comments>https://www.dumpanalysis.org/blog/index.php/2021/05/29/trace-analysis-patterns-part-208/#comments</comments>
		<pubDate>Sat, 29 May 2021 17:01:10 +0000</pubDate>
		<dc:creator>Dmitry Vostokov</dc:creator>
		
		<category><![CDATA[Log Analysis]]></category>

		<category><![CDATA[Software Trace Analysis]]></category>

		<category><![CDATA[Trace Analysis Patterns]]></category>

		<guid isPermaLink="false">https://www.dumpanalysis.org/blog/index.php/2021/05/29/trace-analysis-patterns-part-208/</guid>
		<description><![CDATA[Most of the time tracing and logging is done sequentially, for example, when a service or application is restarted after the crash or bug fix, or the host is rebooted. Then we can glue all resulted traces together (similar to Glued Stack Trace) into one large Serial Trace. Here we assume the same Trace Schema [...]]]></description>
			<content:encoded><![CDATA[<p align="left">Most of the time tracing and logging is done sequentially, for example, when a service or application is restarted after the crash or bug fix, or the host is rebooted. Then we can glue all resulted traces together (similar to <a href="https://www.dumpanalysis.org/blog/index.php/2013/02/26/crash-dump-analysis-patterns-part-195/">Glued Stack Trace</a>) into one large <strong>Serial Trace</strong>. Here we assume the same <a href="https://www.dumpanalysis.org/blog/index.php/2021/04/11/trace-analysis-patterns-part-206/">Trace Schema</a> for all individual traces and logs. It can also be considered as flattening a 2-dimensional <a href="https://www.dumpanalysis.org/blog/index.php/2017/04/29/trace-analysis-patterns-part-146/">Trace Tensor</a>:</p>
<p><img src="https://www.dumpanalysis.org/blog/files/SerialTrace-450.png" /></p>
<p align="left">This allows us to apply various trace and log analysis patterns to the unified <strong>Serial Trace</strong> instead of doing <a href="https://www.dumpanalysis.org/blog/index.php/2010/01/12/trace-analysis-patterns-part-14/">Inter-Correlation</a> (vs. <a href="https://www.dumpanalysis.org/blog/index.php/2009/06/16/trace-analysis-patterns-part-4/">Intra-Correlation</a>).</p>
<p align="left"><strong>Serial Trace</strong> is different from <a href="https://www.dumpanalysis.org/blog/index.php/2014/05/05/trace-analysis-patterns-part-82/">Meta Trace</a> which is a trace about trace and <a href="https://www.dumpanalysis.org/blog/index.php/2011/01/30/trace-analysis-patterns-part-36/">Master Trace</a> which is a trace we compare all other traces to. It is similar to <a href="https://www.dumpanalysis.org/blog/index.php/2015/03/17/trace-analysis-patterns-part-104/">Trace Mask</a> when there is no overlap in time. Also, <strong>Serial Trace</strong> is not a reverse of <a href="https://www.dumpanalysis.org/blog/index.php/2012/12/13/trace-analysis-patterns-part-61/">Split Trace</a> in a general case due to <a href="https://www.dumpanalysis.org/blog/index.php/2012/11/13/trace-analysis-patterns-part-58/">Visibility Limits</a> between individual traces.</p>
<p align="left">When gluing traces together, <a href="https://www.dumpanalysis.org/blog/index.php/2016/11/19/trace-analysis-patterns-part-135/">Ornament</a> messages may be added to serve as a boundary between fragments.</p>
<p align="left">- Dmitry Vostokov @ <a href="http://www.dumpanalysis.org/">DumpAnalysis.org</a> + <a href="http://www.traceanalysis.org/">TraceAnalysis.org</a> -</p>
]]></content:encoded>
			<wfw:commentRss>https://www.dumpanalysis.org/blog/index.php/2021/05/29/trace-analysis-patterns-part-208/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Trace Analysis Patterns (Part 207)</title>
		<link>https://www.dumpanalysis.org/blog/index.php/2021/04/26/trace-analysis-patterns-part-207/</link>
		<comments>https://www.dumpanalysis.org/blog/index.php/2021/04/26/trace-analysis-patterns-part-207/#comments</comments>
		<pubDate>Mon, 26 Apr 2021 21:41:27 +0000</pubDate>
		<dc:creator>Dmitry Vostokov</dc:creator>
		
		<category><![CDATA[Data Analysis]]></category>

		<category><![CDATA[Data Science]]></category>

		<category><![CDATA[Log Analysis]]></category>

		<category><![CDATA[Software Trace Analysis]]></category>

		<category><![CDATA[Trace Analysis Patterns]]></category>

		<guid isPermaLink="false">https://www.dumpanalysis.org/blog/index.php/2021/04/26/trace-analysis-patterns-part-207/</guid>
		<description><![CDATA[Trace Schema can be represented as Schema Trace or, avoiding naming confusion, Definition Trace. The resulting trace looses ordering (similar to unordered Message Set) but allows application of trace and log analysis patterns, especially if some order is fixed, for example, alphabetical for names or original presentation column arrangement. Schema definition Trace Schema can be [...]]]></description>
			<content:encoded><![CDATA[<p align="left"><a href="https://www.dumpanalysis.org/blog/index.php/2021/04/11/trace-analysis-patterns-part-206/">Trace Schema</a> can be represented as <strong>Schema Trace</strong> or, avoiding naming confusion, <strong>Definition Trace</strong>. The resulting trace looses ordering (similar to unordered <a href="https://www.dumpanalysis.org/blog/index.php/2014/05/12/trace-analysis-patterns-part-85/">Message Set</a>) but allows application of trace and log analysis patterns, especially if some order is fixed, for example, alphabetical for names or original presentation column arrangement. Schema definition <strong>Trace Schema</strong> can be represented as another <strong>Definition Trace</strong> as illustrated in the following diagram:</p>
<p><img src="https://www.dumpanalysis.org/blog/files/DefinitionTrace-450.png" /></p>
<p align="left">- Dmitry Vostokov @ <a href="http://www.dumpanalysis.org/">DumpAnalysis.org</a> + <a href="http://www.traceanalysis.org/">TraceAnalysis.org</a> -</p>
]]></content:encoded>
			<wfw:commentRss>https://www.dumpanalysis.org/blog/index.php/2021/04/26/trace-analysis-patterns-part-207/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Trace Analysis Patterns (Part 206)</title>
		<link>https://www.dumpanalysis.org/blog/index.php/2021/04/11/trace-analysis-patterns-part-206/</link>
		<comments>https://www.dumpanalysis.org/blog/index.php/2021/04/11/trace-analysis-patterns-part-206/#comments</comments>
		<pubDate>Sun, 11 Apr 2021 22:21:39 +0000</pubDate>
		<dc:creator>Dmitry Vostokov</dc:creator>
		
		<category><![CDATA[Data Analysis]]></category>

		<category><![CDATA[Data Science]]></category>

		<category><![CDATA[Databases]]></category>

		<category><![CDATA[Log Analysis]]></category>

		<category><![CDATA[Software Trace Analysis]]></category>

		<category><![CDATA[Trace Analysis Patterns]]></category>

		<guid isPermaLink="false">https://www.dumpanalysis.org/blog/index.php/2021/04/11/trace-analysis-patterns-part-206/</guid>
		<description><![CDATA[Most of trace and log analysis pattern illustrations using Dia&#124;gram language are of these two general forms:

Although the first form represents typical ETW trace attributes, the analysis pattern descriptions are usually independent of attribute name semantics. It, therefore, makes sense to generalize such forms into the following Trace Schema forms, with ATIDs for Adjoint Threads [...]]]></description>
			<content:encoded><![CDATA[<p align="left">Most of trace and log analysis pattern illustrations using <a href="https://www.dumpanalysis.org/diagram-diagnostic-analysis-language">Dia|gram</a> language are of these two general forms:</p>
<p><img src="https://www.dumpanalysis.org/blog/files/TraceSchema1-450.png" /></p>
<p align="left">Although the first form represents typical ETW trace attributes, the analysis pattern descriptions are usually independent of attribute name semantics. It, therefore, makes sense to generalize such forms into the following <strong>Trace Schema</strong> forms, with ATIDs for <a href="https://www.dumpanalysis.org/blog/index.php/2010/03/04/trace-analysis-patterns-part-17/">Adjoint Threads of Activity</a> for the first form, and with FIDs for <a href="https://www.dumpanalysis.org/blog/index.php/2021/04/04/trace-analysis-patterns-part-205/">Features of Activity</a> for the second form:</p>
<p><img src="https://www.dumpanalysis.org/blog/files/TraceSchema2-450.png" /></p>
<p align="left">Such <strong>Trace Schemas</strong> are useful for various trace and log joins other than <a href="https://www.dumpanalysis.org/blog/index.php/2015/03/17/trace-analysis-patterns-part-104/">Trace Mask</a>.</p>
<p align="left">- Dmitry Vostokov @ <a href="http://www.dumpanalysis.org/">DumpAnalysis.org</a> + <a href="http://www.traceanalysis.org/">TraceAnalysis.org</a> -</p>
]]></content:encoded>
			<wfw:commentRss>https://www.dumpanalysis.org/blog/index.php/2021/04/11/trace-analysis-patterns-part-206/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Crash Dump Analysis Patterns (Part 213b)</title>
		<link>https://www.dumpanalysis.org/blog/index.php/2021/04/09/crash-dump-analysis-patterns-part-213b/</link>
		<comments>https://www.dumpanalysis.org/blog/index.php/2021/04/09/crash-dump-analysis-patterns-part-213b/#comments</comments>
		<pubDate>Fri, 09 Apr 2021 21:10:44 +0000</pubDate>
		<dc:creator>Dmitry Vostokov</dc:creator>
		
		<category><![CDATA[.NET Core]]></category>

		<category><![CDATA[.NET Debugging]]></category>

		<category><![CDATA[Crash Dump Analysis]]></category>

		<category><![CDATA[Crash Dump Patterns]]></category>

		<category><![CDATA[x64 Windows]]></category>

		<guid isPermaLink="false">https://www.dumpanalysis.org/blog/index.php/2021/04/09/crash-dump-analysis-patterns-part-213b/</guid>
		<description><![CDATA[Previously we introduced Rough Stack Trace analysis pattern for unmanaged space. However, similar collection of symbolic references is possible for managed space (without included unmanaged references we see in Caller-n-Callee). Although the output is noisy, it can be filtered by external tools. The simple WinDbg script outputs managed method descriptors from a stack segment where [...]]]></description>
			<content:encoded><![CDATA[<p align="left">Previously we introduced <a href="https://www.dumpanalysis.org/blog/index.php/2014/10/07/crash-dump-analysis-patterns-part-213/">Rough Stack Trace</a> analysis pattern for unmanaged space. However, similar collection of symbolic references is possible for managed space (without included unmanaged references we see in <a href="http://www.dumpanalysis.org/blog/index.php/2011/10/10/crash-dump-analysis-patterns-part-150/">Caller-n-Callee</a>). Although the output is noisy, it can be filtered by external tools. The simple WinDbg script outputs managed method descriptors from a stack segment where boundaries were taken from the output of <strong>!teb</strong> command (this works even for complete memory dumps with .NET Core SOS extension after switching to the appropriate process context):</p>
<p align="left"><font size="1"><code>1: kd&gt; .for (r $t0=000000a7d4d9c000; @$t0 &lt; 000000a7d4db0000; r $t0=@$t0+@$ptrsize) {.if (poi(@$t0) &gt; 7ff000000000) { .printf "---\n"; !IP2MD poi(@$t0) }}<br />
[...]<br />
Failed to request MethodData, not in JIT code range<br />
---<br />
MethodDesc:   00007ff8f7da4fd8<br />
<font color="blue">Method Name:          System.Windows.Forms.Application.Run(System.Windows.Forms.Form)</font><br />
Class:                00007ff8f7d9c1f0<br />
MethodTable:          00007ff8f7da50b0<br />
mdToken:              0000000006000AB8<br />
Module:               00007ff8f7c599a0<br />
IsJitted:             yes<br />
Current CodeAddr:     00007ff953059310<br />
Version History:<br />
ILCodeVersion:      0000000000000000<br />
ReJIT ID:           0<br />
IL Addr:            00007ff952a055d7<br />
CodeAddr:           00007ff953059310  (ReadyToRun)<br />
NativeCodeVersion:  0000000000000000<br />
&#8212;<br />
MethodDesc:   00007ff8f7c26d98<br />
<font color="blue">Method Name:          LINQPad.UIProgram.Run()</font><br />
Class:                00007ff8f7c32d30<br />
MethodTable:          00007ff8f7c28280<br />
mdToken:              00000000060001AF<br />
Module:               00007ff8f7bc2780<br />
IsJitted:             yes<br />
Current CodeAddr:     00007ff8f8328c50<br />
Version History:<br />
ILCodeVersion:      0000000000000000<br />
ReJIT ID:           0<br />
IL Addr:            000002316969a53c<br />
CodeAddr:           00007ff8f8328c50  (MinOptJitted)<br />
NativeCodeVersion:  0000000000000000<br />
&#8212;<br />
MethodDesc:   00007ff8f7c26c60<br />
<font color="blue">Method Name:          LINQPad.UIProgram.Go(System.String[])</font><br />
Class:                00007ff8f7c32d30<br />
MethodTable:          00007ff8f7c28280<br />
mdToken:              00000000060001A4<br />
Module:               00007ff8f7bc2780<br />
IsJitted:             yes<br />
Current CodeAddr:     00007ff8f7f23890<br />
Version History:<br />
ILCodeVersion:      0000000000000000<br />
ReJIT ID:<br />
IL Addr:            0000023169699840<br />
CodeAddr:           00007ff8f7f23890  (MinOptJitted)<br />
NativeCodeVersion:  0000000000000000<br />
&#8212;<br />
Failed to request MethodData, not in JIT code range<br />
&#8212;<br />
MethodDesc:   00007ff8f7c26c00<br />
<font color="blue">Method Name:          LINQPad.UIProgram.Start(System.String[])</font><br />
Class:                00007ff8f7c32d30<br />
MethodTable:          00007ff8f7c28280<br />
mdToken:              00000000060001A0<br />
Module:               00007ff8f7bc2780<br />
IsJitted:             yes<br />
Current CodeAddr:     00007ff8f7b2fce0<br />
Version History:<br />
ILCodeVersion:      0000000000000000<br />
ReJIT ID:           0<br />
IL Addr:            00000231696996fc<br />
CodeAddr:           00007ff8f7b2fce0  (MinOptJitted)<br />
NativeCodeVersion:  0000000000000000<br />
&#8212;<br />
MethodDesc:   00007ff8f7bc64d8<br />
<font color="blue">Method Name:          LINQPad.UI.Loader.Main(System.String[])</font><br />
Class:                00007ff8f7c09508<br />
MethodTable:          00007ff8f7bc64f0<br />
mdToken:              0000000006000346<br />
Module:               00007ff8f7bc2780<br />
IsJitted:             yes<br />
Current CodeAddr:     00007ff8f7b26400<br />
Version History:<br />
ILCodeVersion:      0000000000000000<br />
ReJIT ID:           0<br />
IL Addr:            00000231696ab048<br />
CodeAddr:           00007ff8f7b26400  (MinOptJitted)<br />
NativeCodeVersion:  0000000000000000<br />
&#8212;<br />
Failed to request MethodData, not in JIT code range<br />
&#8212;<br />
Failed to request MethodData, not in JIT code range<br />
&#8212;<br />
Failed to request MethodData, not in JIT code range<br />
&#8212;<br />
Failed to request MethodData, not in JIT code range<br />
&#8212;<br />
[&#8230;]</font></code></font></p>
<p><font szie="1">- Dmitry Vostokov @ <a href="http://www.dumpanalysis.org/">DumpAnalysis.org</a> + <a href="http://www.traceanalysis.org/">TraceAnalysis.org</a> -</font></p>
<p><font szie="1"> </font></p>
]]></content:encoded>
			<wfw:commentRss>https://www.dumpanalysis.org/blog/index.php/2021/04/09/crash-dump-analysis-patterns-part-213b/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Trace Analysis Patterns (Part 205)</title>
		<link>https://www.dumpanalysis.org/blog/index.php/2021/04/04/trace-analysis-patterns-part-205/</link>
		<comments>https://www.dumpanalysis.org/blog/index.php/2021/04/04/trace-analysis-patterns-part-205/#comments</comments>
		<pubDate>Sun, 04 Apr 2021 17:23:52 +0000</pubDate>
		<dc:creator>Dmitry Vostokov</dc:creator>
		
		<category><![CDATA[Data Analysis]]></category>

		<category><![CDATA[Data Science]]></category>

		<category><![CDATA[Feature Engineering]]></category>

		<category><![CDATA[Log Analysis]]></category>

		<category><![CDATA[Software Trace Analysis]]></category>

		<category><![CDATA[Trace Analysis Patterns]]></category>

		<guid isPermaLink="false">https://www.dumpanalysis.org/blog/index.php/2021/04/04/trace-analysis-patterns-part-205/</guid>
		<description><![CDATA[When looking at trace and log messages we are usually interested in some features (for example, when doing feature engineering, but not limited to) which can be labelled via Feature IDs (FID). Messages that have the same FID value constitute Feature of Activity, similar to Thread of Activity (or Adjoint Thread of Activity).

Such Features of [...]]]></description>
			<content:encoded><![CDATA[<p align="left">When looking at trace and log messages we are usually interested in some features (for example, when doing <a href="https://en.wikipedia.org/wiki/Feature_engineering">feature engineering</a>, but not limited to) which can be labelled via Feature IDs (FID). Messages that have the same FID value constitute <strong>Feature of Activity</strong>, similar to <a href="https://www.dumpanalysis.org/blog/index.php/2009/08/03/trace-analysis-patterns-part-7/">Thread of Activity</a> (or <a href="https://www.dumpanalysis.org/blog/index.php/2010/03/04/trace-analysis-patterns-part-17/">Adjoint Thread of Activity</a>).</p>
<p><img src="https://www.dumpanalysis.org/blog/files/FeatureActivity-450.png" /></p>
<p align="left">Such <strong>Features of Activity</strong> can span several (A)TIDs in contrast to <a href="https://www.dumpanalysis.org/blog/index.php/2016/06/29/trace-analysis-patterns-part-126/">Fibers of Activity</a> which are confined to the same (A)TID and may have different FID values. Therefore, inside (A)TID there can be several <strong>Features of Activity</strong> having different FID values.</p>
<p align="left">This analysis pattern serves as a base for other data science analysis patterns we add next.</p>
<p align="left">- Dmitry Vostokov @ <a href="http://www.dumpanalysis.org/">DumpAnalysis.org</a> + <a href="http://www.traceanalysis.org/">TraceAnalysis.org</a> -</p>
]]></content:encoded>
			<wfw:commentRss>https://www.dumpanalysis.org/blog/index.php/2021/04/04/trace-analysis-patterns-part-205/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Crash Dump Analysis Patterns (Part 276)</title>
		<link>https://www.dumpanalysis.org/blog/index.php/2021/04/03/crash-dump-analysis-patterns-part-276/</link>
		<comments>https://www.dumpanalysis.org/blog/index.php/2021/04/03/crash-dump-analysis-patterns-part-276/#comments</comments>
		<pubDate>Sat, 03 Apr 2021 22:21:35 +0000</pubDate>
		<dc:creator>Dmitry Vostokov</dc:creator>
		
		<category><![CDATA[.NET Core]]></category>

		<category><![CDATA[.NET Debugging]]></category>

		<category><![CDATA[Crash Dump Analysis]]></category>

		<category><![CDATA[Crash Dump Patterns]]></category>

		<category><![CDATA[x64 Windows]]></category>

		<guid isPermaLink="false">https://www.dumpanalysis.org/blog/index.php/2021/04/03/crash-dump-analysis-patterns-part-276/</guid>
		<description><![CDATA[In simple exception cases, we have exception record, for example from Stored Exception corresponding to exception context, for example:
0:000&#62; .exr -1
ExceptionAddress: 00000001400247ae (TestWER64!CTestDefaultDebuggerDlg::OnBnClickedButton1+0&#215;000000000000007e)
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 0000000000000001
Parameter[1]: 0000000000000000
Attempt to write to address 0000000000000000
0:000&#62; .ecxr
rax=0000000000000000 rbx=0000000000000001 rcx=000000000014fd20
rdx=00000000000003e8 rsi=000000000014fd20 rdi=000000014002daa0
rip=00000001400247ae rsp=000000000014efd0 rbp=0000000000000111
r8=0000000000000000  r9=0000000140024730 r10=0000000140024730
r11=000000000014f0d0 r12=0000000000000000 r13=00000000000003e8
r14=0000000000000110 r15=0000000000000001
iopl=0         nv up ei pl zr [...]]]></description>
			<content:encoded><![CDATA[<p align="left">In simple exception cases, we have exception record, for example from <a href="https://www.dumpanalysis.org/blog/index.php/2012/05/23/crash-dump-analysis-patterns-part-175/">Stored Exception</a> corresponding to exception context, for example:</p>
<p align="left"><font size="1"><code>0:000&gt; .exr -1<br />
<font color="blue">ExceptionAddress: 00000001400247ae (TestWER64!CTestDefaultDebuggerDlg::OnBnClickedButton1+0&#215;000000000000007e)</font><br />
ExceptionCode: c0000005 (Access violation)<br />
ExceptionFlags: 00000000<br />
NumberParameters: 2<br />
Parameter[0]: 0000000000000001<br />
Parameter[1]: 0000000000000000<br />
Attempt to write to address 0000000000000000</code></font></p>
<p align="left"><font size="1"><code>0:000&gt; .ecxr<br />
rax=0000000000000000 rbx=0000000000000001 rcx=000000000014fd20<br />
rdx=00000000000003e8 rsi=000000000014fd20 rdi=000000014002daa0<br />
rip=00000001400247ae rsp=000000000014efd0 rbp=0000000000000111<br />
r8=0000000000000000  r9=0000000140024730 r10=0000000140024730<br />
r11=000000000014f0d0 r12=0000000000000000 r13=00000000000003e8<br />
r14=0000000000000110 r15=0000000000000001<br />
iopl=0         nv up ei pl zr na po nc<br />
cs=0033  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00010246<br />
<font color="blue">TestWER64!CTestDefaultDebuggerDlg::OnBnClickedButton1+0&#215;7e:<br />
00000001`400247ae</font> c704250000000000000000 mov dword ptr [0],0 ds:00000000`00000000=????????</code></font></p>
<p align="left">In other cases, we may have missing context:</p>
<p align="left"><font size="1"><code>0:000&gt; .excr<br />
Minidump doesn't have an exception context<br />
Unable to get exception context, HRESULT 0x80004002</code></font></p>
<p align="left">invalid context (see also <a href="http://www.dumpanalysis.org/blog/index.php/2010/10/08/crash-dump-analysis-patterns-part-109/">Invalid Exception Information</a>) in the output of <strong>!analyze -v</strong> command:</p>
<p align="left"><font size="1"><code>CONTEXT:  00007ffb54bd1e60 -- (.cxr 0x7ffb54bd1e60)<br />
rax=15ff480001191885 rbx=ff48c88b48000000 rcx=00441f0f00044c3c<br />
rdx=08ba3824448d4c00 rsi=4838244c8b480001 rdi=0058b9413024448d<br />
rip=00441f0f00044a04 rsp=441f0f00044bd315 rbp=18e4840fc0850000<br />
r8=4c20244489480000  r9=244c89444024448d r10=15ff48a9518d4130<br />
r11=00441f0f00044ebc r12=0118c1840fc08500 r13=8b4840244c8b4800<br />
r14=d88b0000003ee8d7 r15=15ff4838244c8b48<br />
iopl=0 vip vif ov dn ei pl nz na pe nc<br />
cs=2183  ss=044c  ds=4800  es=f98b  fs=ff48  gs=5315             efl=441f0f00<br />
00441f0f`00044a04 ??              ???<br />
Resetting default scope</code></font></p>
<p align="left">and valid context but not corresponding to stored exception record:</p>
<p align="left"><font size="1"><code>0:000&gt; .ecxr<br />
rax=00007ffe0a6a9618 rbx=0000024a3aa44020 rcx=0000000100000001<br />
rdx=0000000000000001 rsi=0000024a3abff3e8 rdi=0000024a3abfb5c8<br />
rip=00007ffe9768d759 rsp=000000dc0fd7caf0 rbp=000000dc0fd7d160<br />
r8=0000024a00000007  r9=0000024a5ce8bc80 r10=0000000000000000<br />
r11=0000000000000000 r12=0000024a3abfad90 r13=0000024a3aa44020<br />
r14=0000000000000000 r15=0000024a3abfb5e0<br />
iopl=0         nv up ei pl nz na pe nc<br />
cs=0033  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000202<br />
KERNELBASE!RaiseException+0x69:<br />
<font color="magenta">00007ffe`9768d759</font> 0f1f440000      nop     dword ptr [rax+rax]</code></font></p>
<p align="left"><font size="1"><code>0:000&gt; .exr -1<br />
<font color="red">ExceptionAddress: 00007ffe0a6a9609</font><br />
ExceptionCode: c0000005 (Access violation)<br />
ExceptionFlags: 00000000<br />
NumberParameters: 2<br />
Parameter[0]: 0000000000000001<br />
Parameter[1]: 0000000000000000<br />
Attempt to write to address 0000000000000000</code></font></p>
<p align="left">However, <a href="https://www.dumpanalysis.org/blog/index.php/2010/08/05/crash-dump-analysis-patterns-part-105/">Exception Stack Trace</a> may be available with <a href="https://www.dumpanalysis.org/blog/index.php/2009/05/15/crash-dump-analysis-patterns-part-84/">JIT Code</a> address :</p>
<p align="left"><font size="1"><code>0:000&gt; kL<br />
# Child-SP          RetAddr           Call Site<br />
00 000000dc`0fd7b558 00007ffe`976b0d40 ntdll!NtWaitForMultipleObjects+0x14<br />
01 000000dc`0fd7b560 00007ffe`976b0c3e KERNELBASE!WaitForMultipleObjectsEx+0xf0<br />
02 000000dc`0fd7b850 00007ffe`994cf6aa KERNELBASE!WaitForMultipleObjects+0xe<br />
03 000000dc`0fd7b890 00007ffe`994cf0e6 kernel32!WerpReportFaultInternal+0x58a<br />
04 000000dc`0fd7b9b0 00007ffe`9776c439 kernel32!WerpReportFault+0xbe<br />
05 000000dc`0fd7b9f0 00007ffe`99cd4b63 KERNELBASE!UnhandledExceptionFilter+0x3d9<br />
06 000000dc`0fd7bb10 00007ffe`99cbbb16 ntdll!RtlUserThreadStart$filt$0+0xa2<br />
07 000000dc`0fd7bb50 00007ffe`99cd130f ntdll!_C_specific_handler+0x96<br />
08 000000dc`0fd7bbc0 00007ffe`99c7b5e4 ntdll!RtlpExecuteHandlerForException+0xf<br />
09 000000dc`0fd7bbf0 00007ffe`99c7b335 ntdll!RtlDispatchException+0x244<br />
0a 000000dc`0fd7c300 00007ffe`9768d759 ntdll!RtlRaiseException+0x185<br />
0b 000000dc`0fd7caf0 00007ffe`6986b259 KERNELBASE!RaiseException+0x69<br />
0c 000000dc`0fd7cbd0 00007ffe`6986b28b coreclr!NakedThrowHelper2+0x9<br />
0d 000000dc`0fd7cc00 00007ffe`6986b295 coreclr!NakedThrowHelper_RspAligned+0x1e<br />
0e 000000dc`0fd7d128 <font color="red">00007ffe`0a6a9609</font> coreclr!NakedThrowHelper_FixRsp+0&#215;5<br />
0f 000000dc`0fd7d130 00007ffe`0a548023 0&#215;00007ffe`0a6a9609<br />
10 000000dc`0fd7d170 00007ffe`0a547734 0&#215;00007ffe`0a548023<br />
11 000000dc`0fd7d230 00000000`627311e5 0&#215;00007ffe`0a547734<br />
12 000000dc`0fd7d290 00007ffe`62b50fe7 PresentationCore+0&#215;4011e5<br />
13 000000dc`0fd7d2d0 00007ffe`62a35840 PresentationFramework+0xbb0fe7<br />
14 000000dc`0fd7d310 00007ffe`62b51a60 PresentationFramework+0xa95840<br />
15 000000dc`0fd7d350 00000000`62732e22 PresentationFramework+0xbb1a60<br />
16 000000dc`0fd7d390 00000000`62757c42 PresentationCore+0&#215;402e22<br />
17 000000dc`0fd7d3d0 00007ffe`0a5448f3 PresentationCore+0&#215;427c42<br />
18 000000dc`0fd7d410 00007ffe`0a548023 0&#215;00007ffe`0a5448f3<br />
19 000000dc`0fd7d450 00000000`62740e19 0&#215;00007ffe`0a548023<br />
1a 000000dc`0fd7d510 00000000`62732b6a PresentationCore+0&#215;410e19<br />
1b 000000dc`0fd7d580 00000000`62757c42 PresentationCore+0&#215;402b6a<br />
1c 000000dc`0fd7d5c0 00007ffe`0a5448f3 PresentationCore+0&#215;427c42<br />
1d 000000dc`0fd7d600 00007ffe`0a548023 0&#215;00007ffe`0a5448f3<br />
1e 000000dc`0fd7d640 00007ffe`0a547734 0&#215;00007ffe`0a548023<br />
1f 000000dc`0fd7d700 00007ffe`0a550211 0&#215;00007ffe`0a547734<br />
20 000000dc`0fd7d760 00007ffe`0a558efd 0&#215;00007ffe`0a550211<br />
21 000000dc`0fd7d7a0 00007ffe`0a55ebb1 0&#215;00007ffe`0a558efd<br />
22 000000dc`0fd7d860 00007ffe`0a564474 0&#215;00007ffe`0a55ebb1<br />
23 000000dc`0fd7d8b0 00007ffe`0a550eff 0&#215;00007ffe`0a564474<br />
24 000000dc`0fd7d9e0 00007ffe`0a550692 0&#215;00007ffe`0a550eff<br />
25 000000dc`0fd7da70 00007ffe`0a54967d 0&#215;00007ffe`0a550692<br />
26 000000dc`0fd7dae0 00007ffe`0a549596 0&#215;00007ffe`0a54967d<br />
27 000000dc`0fd7db70 00007ffe`0a548ac7 0&#215;00007ffe`0a549596<br />
28 000000dc`0fd7dbc0 00007ffe`0a5488f5 0&#215;00007ffe`0a548ac7<br />
29 000000dc`0fd7dc20 00007ffe`0a54920c 0&#215;00007ffe`0a5488f5<br />
2a 000000dc`0fd7dc70 00007ffe`0a548f07 0&#215;00007ffe`0a54920c<br />
2b 000000dc`0fd7dd00 00007ffe`09d2d772 0&#215;00007ffe`0a548f07<br />
2c 000000dc`0fd7de00 00007ffe`995ae858 0&#215;00007ffe`09d2d772<br />
2d 000000dc`0fd7de80 00007ffe`995ae299 user32!UserCallWinProcCheckWow+0&#215;2f8<br />
2e 000000dc`0fd7e010 00007ffe`0a18011b user32!DispatchMessageWorker+0&#215;249<br />
2f 000000dc`0fd7e090 00007ffe`69557ec3 0&#215;00007ffe`0a18011b<br />
30 000000dc`0fd7e150 00007ffe`695553a1 WindowsBase+0&#215;197ec3<br />
31 000000dc`0fd7e1e0 00007ffe`6955534e WindowsBase+0&#215;1953a1<br />
32 000000dc`0fd7e210 00007ffe`6276966c WindowsBase+0&#215;19534e<br />
33 000000dc`0fd7e240 00007ffe`62767ccd PresentationFramework+0&#215;7c966c<br />
34 000000dc`0fd7e270 00007ffe`62764c5c PresentationFramework+0&#215;7c7ccd<br />
35 000000dc`0fd7e2c0 00007ffe`09d1618e PresentationFramework+0&#215;7c4c5c<br />
36 000000dc`0fd7e2f0 00007ffe`6986a2f3 0&#215;00007ffe`09d1618e<br />
37 000000dc`0fd7e340 00007ffe`697a2fcc coreclr!CallDescrWorkerInternal+0&#215;83<br />
38 000000dc`0fd7e380 00007ffe`697c22b3 coreclr!MethodDescCallSite::CallTargetWorker+0&#215;268<br />
39 (Inline Function) &#8212;&#8212;&#8211;`&#8212;&#8212;&#8211; coreclr!MethodDescCallSite::Call+0xb<br />
3a 000000dc`0fd7e4c0 00007ffe`697c207e coreclr!RunMainInternal+0&#215;11f<br />
3b 000000dc`0fd7e5f0 00007ffe`697c1be1 coreclr!RunMain+0xd2<br />
3c 000000dc`0fd7e6a0 00007ffe`697c1908 coreclr!Assembly::ExecuteMainMethod+0&#215;1cd<br />
3d 000000dc`0fd7ea30 00007ffe`69789ad2 coreclr!CorHost2::ExecuteAssembly+0&#215;1c8<br />
3e 000000dc`0fd7eba0 00007ffe`7d502c72 coreclr!coreclr_execute_assembly+0xe2<br />
3f (Inline Function) &#8212;&#8212;&#8211;`&#8212;&#8212;&#8211; hostpolicy!coreclr_t::execute_assembly+0&#215;2b<br />
40 000000dc`0fd7ec40 00007ffe`7d502ed7 hostpolicy!run_app_for_context+0&#215;3be<br />
41 000000dc`0fd7edd0 00007ffe`7d503b6b hostpolicy!run_app+0&#215;37<br />
42 000000dc`0fd7ee10 00007ffe`7d5839ea hostpolicy!corehost_main+0xfb<br />
43 000000dc`0fd7efd0 00007ffe`7d587358 hostfxr!execute_app+0&#215;206<br />
44 (Inline Function) &#8212;&#8212;&#8211;`&#8212;&#8212;&#8211; hostfxr!?A0&#215;83a23e19::read_config_and_execute+0&#215;10a<br />
45 000000dc`0fd7f0c0 00007ffe`7d585b5f hostfxr!fx_muxer_t::handle_exec_host_command+0&#215;214<br />
46 000000dc`0fd7f1b0 00007ffe`7d582029 hostfxr!fx_muxer_t::execute+0&#215;39b<br />
47 000000dc`0fd7f2f0 00007ff6`3aede0b0 hostfxr!hostfxr_main_startupinfo+0&#215;89<br />
48 000000dc`0fd7f3f0 00007ff6`3aede418 ApplicationA_exe!exe_start+0&#215;620<br />
49 000000dc`0fd7f5d0 00007ff6`3aedfef8 ApplicationA_exe!wmain+0&#215;124<br />
4a (Inline Function) &#8212;&#8212;&#8211;`&#8212;&#8212;&#8211; ApplicationA_exe!invoke_main+0&#215;22<br />
4b 000000dc`0fd7f740 00007ffe`99477034 ApplicationA_exe!__scrt_common_main_seh+0&#215;10c<br />
4c 000000dc`0fd7f780 00007ffe`99c7d0d1 kernel32!BaseThreadInitThunk+0&#215;14<br />
4d 000000dc`0fd7f7b0 00000000`00000000 ntdll!RtlUserThreadStart+0&#215;21</code></font></p>
<p align="left"><font size="1"><code>0:000&gt; u <font color="red">00007ffe`0a6a9609<br />
00007ffe`0a6a9609 c70001000000    mov     dword ptr [rax],1</font><br />
00007ffe`0a6a960f 90              nop<br />
00007ffe`0a6a9610 90              nop<br />
00007ffe`0a6a9611 488d6500        lea     rsp,[rbp]<br />
00007ffe`0a6a9615 5d              pop     rbp<br />
00007ffe`0a6a9616 c3              ret<br />
00007ffe`0a6a9617 0019            add     byte ptr [rcx],bl<br />
00007ffe`0a6a9619 0502000552      add     eax,52050002h</code></font></p>
<p align="left">In the case of .NET Core dump, we can use <strong>Saved Exception Context</strong> to get the original exception:</p>
<p align="left"><font size="1"><code>0:000&gt; dp coreclr!g_SavedExceptionInfo<br />
00007ffe`69bd57f0  <font color="red">00000000`c0000005</font> 00000000`00000000<br />
00007ffe`69bd5800  <font color="red">00007ffe`0a6a9609</font> 00000000`00000002<br />
00007ffe`69bd5810  00000000`00000001 00000000`00000000<br />
00007ffe`69bd5820  00000000`00000000 00000000`00000000<br />
00007ffe`69bd5830  00000000`00000000 00000000`00000000<br />
00007ffe`69bd5840  00000000`00000000 00000000`00000000<br />
00007ffe`69bd5850  00000000`00000000 00000000`00000000<br />
00007ffe`69bd5860  00000000`00000000 00000000`00000000</code></font></p>
<p align="left"><font size="1"><code>0:000&gt; dt coreclr!g_SavedExceptionInfo<br />
+0x000 m_ExceptionRecord : _EXCEPTION_RECORD<br />
+0x0a0 m_ExceptionContext : _CONTEXT<br />
+0x570 m_Crst           : CrstStatic</code></font></p>
<p align="left"><font size="1"><code>0:000&gt; .cxr coreclr!g_SavedExceptionInfo+a0<br />
rax=0000000000000000 rbx=0000024a3aa44020 rcx=0000024a3aa1d210<br />
rdx=0000024a3aa44020 rsi=0000024a3abff3e8 rdi=0000024a3abfb5c8<br />
rip=00007ffe0a6a9609 rsp=000000dc0fd7d130 rbp=000000dc0fd7d160<br />
r8=0000024a3abff3e8  r9=0000000000000000 r10=0000000000000000<br />
r11=000000dc0fd7d090 r12=0000024a3abfad90 r13=0000024a3aa44020<br />
r14=0000000000000000 r15=0000024a3abfb5e0<br />
iopl=0         nv up ei pl zr na po nc<br />
cs=0033  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00010246<br />
<font color="red">00007ffe`0a6a9609 c70001000000    mov     dword ptr [rax],1 ds:00000000`00000000=????????</font></code></font></p>
<p align="left">This may also work in the case of invalid or missing exception information in .NET Core dumps:</p>
<p align="left"><font size="1"><code>0:000&gt; .exr -1<br />
ExceptionAddress: 0000000000000000<br />
ExceptionCode: 80000003 (Break instruction exception)<br />
ExceptionFlags: 00000000<br />
NumberParameters: 0</code></font></p>
<p align="left"><font size="1"><code>0:000&gt; .excr<br />
Minidump doesn't have an exception context<br />
Unable to get exception context, HRESULT 0x80004002</code></font></p>
<p align="left"><font size="1"><code>0:000&gt; .cxr coreclr!g_SavedExceptionInfo+a0<br />
rax=0000000000000000 rbx=0000024a3aa44020 rcx=0000024a3aa1d210<br />
rdx=0000024a3aa44020 rsi=0000024a3abff3e8 rdi=0000024a3abfb5c8<br />
rip=00007ffe0a6a9609 rsp=000000dc0fd7d130 rbp=000000dc0fd7d160<br />
r8=0000024a3abff3e8  r9=0000000000000000 r10=0000000000000000<br />
r11=000000dc0fd7d090 r12=0000024a3abfad90 r13=0000024a3aa44020<br />
r14=0000000000000000 r15=0000024a3abfb5e0<br />
iopl=0         nv up ei pl zr na po nc<br />
cs=0033  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00010246<br />
<font color="red">00007ffe`0a6a9609 c70001000000    mov     dword ptr [rax],1 ds:00000000`00000000=????????</font></code></font></p>
<p align="left">In some other unmanaged cases, we can use probe <a href="https://www.dumpanalysis.org/blog/index.php/2008/04/29/crash-dump-analysis-patterns-part-60/">Execution Residue</a> values around some exception processing symbols as in the case of <a href="https://www.dumpanalysis.org/blog/index.php/2007/02/02/crash-dump-analysis-patterns-part-8/">Hidden Exceptions</a>, but this may not work if such values are overwritten or no longer available.</p>
<p align="left">A similar approach is available for .NET Framework despite the type not available:</p>
<p align="left"><font size="1"><code>0:000&gt; x clr!g_SavedExceptionInfo<br />
00007ffc`efc01f40 clr!g_SavedExceptionInfo = &lt;no type information&gt;</code></font></p>
<p align="left"><font size="1"><code>0:000&gt; dt clr!g_SavedExceptionInfo<br />
Symbol clr!g_SavedExceptionInfo not found.</code></font></p>
<p align="left"><font size="1"><code>0:000&gt; .cxr clr!g_SavedExceptionInfo+a0<br />
rax=0000000000000000 rbx=0000000002f8b8a0 rcx=0000000002f27ee8<br />
rdx=0000000002f8a598 rsi=0000000002f8a598 rdi=0000000002fa1028<br />
rip=00007ffc8fcb0829 rsp=000000000113e5b0 rbp=000000000113e5e0<br />
r8=0000000002fa1028  r9=0000000000000000 r10=00007ff480140018<br />
r11=00007ffc8fba8ae8 r12=0000000000000002 r13=0000000000000202<br />
r14=0000000000000001 r15=0000000000000000<br />
iopl=0         nv up ei pl zr na po nc<br />
cs=0033  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00010246<br />
00007ffc`8fcb0829 c70001000000    mov     dword ptr [rax],1 ds:00000000`00000000=????????</code></font></p>
<p align="left">- Dmitry Vostokov @ <a href="http://www.dumpanalysis.org/">DumpAnalysis.org</a> + <a href="http://www.traceanalysis.org/">TraceAnalysis.org</a> -</p>
]]></content:encoded>
			<wfw:commentRss>https://www.dumpanalysis.org/blog/index.php/2021/04/03/crash-dump-analysis-patterns-part-276/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Trace Analysis Patterns (Part 204)</title>
		<link>https://www.dumpanalysis.org/blog/index.php/2021/03/07/trace-analysis-patterns-part-204/</link>
		<comments>https://www.dumpanalysis.org/blog/index.php/2021/03/07/trace-analysis-patterns-part-204/#comments</comments>
		<pubDate>Sun, 07 Mar 2021 11:34:38 +0000</pubDate>
		<dc:creator>Dmitry Vostokov</dc:creator>
		
		<category><![CDATA[Log Analysis]]></category>

		<category><![CDATA[Software Trace Analysis]]></category>

		<category><![CDATA[Trace Analysis Patterns]]></category>

		<guid isPermaLink="false">https://www.dumpanalysis.org/blog/index.php/2021/03/07/trace-analysis-patterns-part-204/</guid>
		<description><![CDATA[Trace Intra-Correlation may be quite elaborate and include analysis of 2-dimensional Weaves of Activity. A similar 2-dimensional metaphor can be applied to Inter-Correlation between several artefacts such as traces and logs, configuration information including infrastructure as code (Small DA+TA), telemetry and event streams, memory dumps (Adjoint Spaces, Trace Presheaf, Memory Fibration, State Dump). All these [...]]]></description>
			<content:encoded><![CDATA[<p align="left">Trace <a href="https://www.dumpanalysis.org/blog/index.php/2009/06/16/trace-analysis-patterns-part-4/">Intra-Correlation</a> may be quite elaborate and include analysis of 2-dimensional <a href="https://www.dumpanalysis.org/blog/index.php/2020/09/19/trace-analysis-patterns-part-201/">Weaves of Activity</a>. A similar 2-dimensional metaphor can be applied to <a href="https://www.dumpanalysis.org/blog/index.php/2010/01/12/trace-analysis-patterns-part-14/">Inter-Correlation</a> between several artefacts such as traces and logs, configuration information including infrastructure as code (<a href="https://www.dumpanalysis.org/blog/index.php/2016/08/15/trace-analysis-patterns-part-130/">Small DA+TA</a>), telemetry and event streams, memory dumps (<a href="https://www.dumpanalysis.org/blog/index.php/2015/01/31/trace-analysis-patterns-part-100/">Adjoint Spaces</a>, <a href="https://www.dumpanalysis.org/blog/index.php/2017/03/24/trace-analysis-patterns-part-141/">Trace Presheaf</a>, <a href="https://www.dumpanalysis.org/blog/index.php/2017/03/22/crash-dump-analysis-patterns-part-249/">Memory Fibration</a>, <a href="https://www.dumpanalysis.org/blog/index.php/2016/08/15/trace-analysis-patterns-part-130/">State Dump</a>). All these memory patches, layers, and <a href="https://www.dumpanalysis.org/blog/index.php/2020/07/31/trace-analysis-patterns-part-194/">Trace Fabrics</a> are &#8220;sewn&#8221; together by <a href="https://www.dumpanalysis.org/blog/index.php/2017/04/29/trace-analysis-patterns-part-145/">Braids</a>, <a href="https://www.dumpanalysis.org/blog/index.php/2009/08/03/trace-analysis-patterns-part-7/">Threads</a>, <a href="https://www.dumpanalysis.org/blog/index.php/2010/03/04/trace-analysis-patterns-part-17/">Adjoint Threads</a>, <a href="https://www.dumpanalysis.org/blog/index.php/2020/09/12/trace-analysis-patterns-part-198/">Strands</a>, <a href="https://www.dumpanalysis.org/blog/index.php/2020/09/13/trace-analysis-patterns-part-199/">Cords</a>, and <a href="https://www.dumpanalysis.org/blog/index.php/2020/09/19/trace-analysis-patterns-part-201/">Weaves</a> of Activities. We call this pattern <strong>Trace Quilt</strong> but analogy with quilting and <a href="https://en.wikipedia.org/wiki/Quilt">quilts</a>.</p>
<p><img src="https://www.dumpanalysis.org/blog/files/TraceQuilt-450.png" /></p>
<p>- Dmitry Vostokov @ <a href="http://www.dumpanalysis.org/">DumpAnalysis.org</a> + <a href="http://www.traceanalysis.org/">TraceAnalysis.org</a> -</p>
]]></content:encoded>
			<wfw:commentRss>https://www.dumpanalysis.org/blog/index.php/2021/03/07/trace-analysis-patterns-part-204/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Crash Dump Analysis Patterns (Part 275)</title>
		<link>https://www.dumpanalysis.org/blog/index.php/2021/03/03/crash-dump-analysis-patterns-part-275/</link>
		<comments>https://www.dumpanalysis.org/blog/index.php/2021/03/03/crash-dump-analysis-patterns-part-275/#comments</comments>
		<pubDate>Wed, 03 Mar 2021 20:55:39 +0000</pubDate>
		<dc:creator>Dmitry Vostokov</dc:creator>
		
		<category><![CDATA[Crash Dump Analysis]]></category>

		<category><![CDATA[Crash Dump Patterns]]></category>

		<category><![CDATA[Data Science]]></category>

		<category><![CDATA[Mathematics of Debugging]]></category>

		<guid isPermaLink="false">https://www.dumpanalysis.org/blog/index.php/2021/03/03/crash-dump-analysis-patterns-part-275/</guid>
		<description><![CDATA[If we have Step Dumps or Evental Dumps or simply some different memory dumps, for example, from Fiber Bundle and Orbifold memory spaces, we may run debugger commands across them. Then we can track changes in their output like we did in Stack Trace Change analysis pattern. We call the generalization of the latter pattern [...]]]></description>
			<content:encoded><![CDATA[<p align="left">If we have <a href="https://www.dumpanalysis.org/blog/index.php/2013/01/04/crash-dump-analysis-patterns-part-192/">Step Dumps</a> or <a href="https://www.dumpanalysis.org/blog/index.php/2015/10/26/crash-dump-analysis-patterns-part-231/">Evental Dumps</a> or simply some different memory dumps, for example, from <a href="https://www.dumpanalysis.org/blog/index.php/2009/07/12/fiber-bundle-of-memory-space/">Fiber Bundle</a> and <a href="https://www.dumpanalysis.org/blog/index.php/2011/02/16/dictionary-of-debugging-orbifold-memory-space/">Orbifold</a> memory spaces, we may run debugger commands across them. Then we can track changes in their output like we did in <a href="https://www.dumpanalysis.org/blog/index.php/2012/06/09/crash-dump-analysis-patterns-part-177/">Stack Trace Change</a> analysis pattern. We call the generalization of the latter pattern <strong>Structure Sheaf</strong> by analogy with structure sheaves of <a href="https://en.wikipedia.org/wiki/Ringed_space">ringed spaces</a> in mathematics. Here we metaphorically treat sequences of debugger commands applied to memory areas (memory structures) as rings of functions on open subsets. We originally wanted to call this analysis pattern <strong>Stack Trace (command)</strong> for one command and <strong>Stack Trace Collection (commands)</strong> for a set of commands but realized that the stack trace analogy here makes sense only for sequential memory dumps ordered in time and not for memory dumps taken from different sources.</p>
<p align="left">- Dmitry Vostokov @ <a href="http://www.dumpanalysis.org/">DumpAnalysis.org</a> + <a href="http://www.traceanalysis.org/">TraceAnalysis.org</a> -</p>
]]></content:encoded>
			<wfw:commentRss>https://www.dumpanalysis.org/blog/index.php/2021/03/03/crash-dump-analysis-patterns-part-275/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Crash Dump Analysis Patterns (Part 274)</title>
		<link>https://www.dumpanalysis.org/blog/index.php/2021/01/31/crash-dump-analysis-patterns-part-274/</link>
		<comments>https://www.dumpanalysis.org/blog/index.php/2021/01/31/crash-dump-analysis-patterns-part-274/#comments</comments>
		<pubDate>Sun, 31 Jan 2021 23:55:28 +0000</pubDate>
		<dc:creator>Dmitry Vostokov</dc:creator>
		
		<category><![CDATA[COM Debugging]]></category>

		<category><![CDATA[Crash Dump Analysis]]></category>

		<category><![CDATA[Crash Dump Patterns]]></category>

		<category><![CDATA[Debugging]]></category>

		<category><![CDATA[x64 Windows]]></category>

		<guid isPermaLink="false">https://www.dumpanalysis.org/blog/index.php/2021/01/31/crash-dump-analysis-patterns-part-274/</guid>
		<description><![CDATA[COM Exceptions are Software Exceptions and their information can be extracted from C++ Exception record as shown in this post. Here we show the case of Nested  and Hidden Exceptions.
We see a COM exception raising function on Exception Stack Trace:
0:008&#62; .exr -1
ExceptionAddress: 00007ff97800cadf (ntdll!LdrpICallHandler+0x000000000000000f)
ExceptionCode: c0000409 (Security check failure or stack buffer overrun)
ExceptionFlags: 00000001
NumberParameters: 1
Parameter[0]: [...]]]></description>
			<content:encoded><![CDATA[<p align="left"><strong>COM Exceptions</strong> are <a href="https://www.dumpanalysis.org/blog/index.php/2015/02/28/crash-dump-analysis-patterns-part-222/">Software Exceptions</a> and their information can be extracted from <a href="https://www.dumpanalysis.org/blog/index.php/2008/10/21/crash-dump-analysis-patterns-part-77/">C++ Exception</a> record as shown in this <a href="https://devblogs.microsoft.com/oldnewthing/20200821-00/?p=104112">post</a>. Here we show the case of <a href="https://www.dumpanalysis.org/blog/index.php/2008/06/24/crash-dump-analysis-patterns-part-67/">Nested </a> and <a href="https://www.dumpanalysis.org/blog/index.php/2007/02/02/crash-dump-analysis-patterns-part-8/">Hidden Exceptions</a>.</p>
<p align="left">We see a COM exception raising function on <a href="https://www.dumpanalysis.org/blog/index.php/2010/08/05/crash-dump-analysis-patterns-part-105/">Exception Stack Trace</a>:</p>
<p align="left"><font size="1"><code>0:008&gt; .exr -1<br />
ExceptionAddress: 00007ff97800cadf (ntdll!LdrpICallHandler+0x000000000000000f)<br />
ExceptionCode: c0000409 (Security check failure or stack buffer overrun)<br />
ExceptionFlags: 00000001<br />
NumberParameters: 1<br />
Parameter[0]: 000000000000000a<br />
Subcode: 0xa FAST_FAIL_GUARD_ICALL_CHECK_FAILURE</code></font></p>
<p align="left"><font size="1"><code>0:008&gt; kL<br />
*** Stack trace for last set context - .thread/.cxr resets it<br />
# Child-SP          RetAddr           Call Site<br />
00 0000009e`393f9e78 00007ff9`7802184f ntdll!LdrpICallHandler+0xf<br />
01 0000009e`393f9e80 00007ff9`77fea889 ntdll!RtlpExecuteHandlerForException+0xf<br />
02 0000009e`393f9eb0 00007ff9`780204be ntdll!RtlDispatchException+0x219<br />
03 0000009e`393fa5c0 00007ff9`7800cb9e ntdll!KiUserExceptionDispatch+0x2e<br />
04 0000009e`393fad78 00007ff9`72591030 ntdll!LdrpDispatchUserCallTarget+0xe<br />
05 0000009e`393fad80 00007ff9`72594a52 VCRUNTIME140_APP!_CallSettingFrame+0x20<br />
06 0000009e`393fadb0 00007ff9`7259e514 VCRUNTIME140_APP!__FrameHandler3::FrameUnwindToState+0x112<br />
07 0000009e`393fae20 00007ff9`72593cc8 VCRUNTIME140_APP!__FrameHandler3::FrameUnwindToEmptyState+0x54<br />
08 0000009e`393fae50 00007ff9`7259ee51 VCRUNTIME140_APP!__InternalCxxFrameHandler&lt;__FrameHandler3&gt;+0x10c<br />
09 0000009e`393faeb0 00007ff8`f83ea850 VCRUNTIME140_APP!__CxxFrameHandler3+0x71<br />
0a 0000009e`393faf00 00007ff9`780218cf PaintStudio_ViewModel!DllGetActivationFactory+0x100<br />
0b 0000009e`393faf30 00007ff9`77f9d9b2 ntdll!RtlpExecuteHandlerForUnwind+0xf<br />
0c 0000009e`393faf60 00007ff9`7259e9de ntdll!RtlUnwindEx+0x522<br />
0d 0000009e`393fb670 00007ff9`72592955 VCRUNTIME140_APP!__FrameHandler3::UnwindNestedFrames+0xee<br />
0e 0000009e`393fb760 00007ff9`72592d81 VCRUNTIME140_APP!CatchIt&lt;__FrameHandler3&gt;+0xb9<br />
0f 0000009e`393fb800 00007ff9`72593dc4 VCRUNTIME140_APP!FindHandler&lt;__FrameHandler3&gt;+0x33d<br />
10 0000009e`393fb970 00007ff9`7259ee51 VCRUNTIME140_APP!__InternalCxxFrameHandler&lt;__FrameHandler3&gt;+0x208<br />
11 0000009e`393fb9d0 00007ff9`7802184f VCRUNTIME140_APP!__CxxFrameHandler3+0x71<br />
12 0000009e`393fba20 00007ff9`77fea889 ntdll!RtlpExecuteHandlerForException+0xf<br />
13 0000009e`393fba50 00007ff9`77fea643 ntdll!RtlDispatchException+0x219<br />
14 <font color="blue">0000009e`393fc160</font> 00007ff9`759d3b29 ntdll!RtlRaiseException+0&#215;153<br />
15 0000009e`393fc9d0 00007ff9`72596220 KERNELBASE!RaiseException+0&#215;69<br />
16 0000009e`393fcab0 00007ff9`4919a58c VCRUNTIME140_APP!_CxxThrowException+0&#215;90<br />
17 0000009e`393fcb10 00007ff8`f8057628 <font color="red">vccorlib140_app!__abi_WinRTraiseCOMException+0&#215;2c</font><br />
18 0000009e`393fcb40 00007ff8`f8093e81 PaintStudio_ViewModel+0&#215;7628<br />
19 <font color="blue">0000009e`393fcb70</font> 00007ff8`f818f27f PaintStudio_ViewModel+0&#215;43e81<br />
1a 0000009e`393fcbc0 00007ff8`f818c26f PaintStudio_ViewModel+0&#215;13f27f<br />
1b 0000009e`393fcc90 00007ff8`f811935a PaintStudio_ViewModel+0&#215;13c26f<br />
1c 0000009e`393fcd40 00007ff8`f827ce8e PaintStudio_ViewModel+0xc935a<br />
1d 0000009e`393fd110 00007ff8`f82723ab PaintStudio_ViewModel+0&#215;22ce8e<br />
1e 0000009e`393fd5c0 00007ff8`f83bf09d PaintStudio_ViewModel+0&#215;2223ab<br />
1f 0000009e`393fd7b0 00007ff8`f83c16bd PaintStudio_ViewModel+0&#215;36f09d<br />
20 0000009e`393fdc60 00007ff8`f80e1331 PaintStudio_ViewModel+0&#215;3716bd<br />
21 0000009e`393fdd10 00007ff7`2030d3b9 PaintStudio_ViewModel+0&#215;91331<br />
22 0000009e`393fdd50 00007ff7`202f772f PaintStudio_View+0&#215;2d3b9<br />
23 0000009e`393fddb0 00007ff7`202f702b PaintStudio_View+0&#215;1772f<br />
24 0000009e`393fdee0 00007ff7`202f520e PaintStudio_View+0&#215;1702b<br />
25 0000009e`393fe010 00007ff7`203266d6 PaintStudio_View+0&#215;1520e<br />
26 0000009e`393fe100 00007ff9`4af9d25b PaintStudio_View+0&#215;466d6<br />
27 0000009e`393fe140 00007ff9`4af9d1ce Windows_UI_Xaml!DirectUI::FrameworkApplicationGenerated:: OnActivatedProtected+0&#215;4b<br />
28 0000009e`393fe170 00007ff9`4af9ebe6 Windows_UI_Xaml!DirectUI::FrameworkApplication::DispatchGenericActivation+0&#215;4a<br />
29 0000009e`393fe1a0 00007ff9`4aeb39eb Windows_UI_Xaml!DirectUI::FrameworkView::OnActivated+0&#215;186<br />
2a (Inline Function) &#8212;&#8212;&#8211;`&#8212;&#8212;&#8211; Windows_UI_Xaml!Microsoft::WRL::Callback::__l2::&lt;lambda_772c64e6f5ddba6f719dbbabda2a0901&gt;::operator()+0&#215;15<br />
2b 0000009e`393fe220 00007ff9`72cd55cf Windows_UI_Xaml!Microsoft::WRL::Details::DelegateArgTraits&lt;long (__cdecl Windows::Foundation:: ITypedEventHandler_impl&lt;Windows::Foundation::Internal:: AggregateType&lt;Windows::UI::Core::CoreWindow *,Windows::UI::Core::ICoreWindow *&gt;,IInspectable *&gt;::*)(Windows::UI::Core::ICoreWindow *,IInspectable *)&gt;::DelegateInvokeHelper&lt;Windows::Foundation:: ITypedEventHandler&lt;Windows::UI::Core::CoreWindow *,IInspectable *&gt;,&lt;lambda_772c64e6f5ddba6f719dbbabda2a0901&gt;,-1,Windows::UI::Core::ICoreWindow *,IInspectable *&gt;::Invoke+0&#215;1b<br />
2c 0000009e`393fe250 00007ff9`72cd8a22 twinapi_appcore!Microsoft::WRL::InvokeTraits&lt;-2&gt;:: InvokeDelegates&lt;&lt;lambda_3ad0adb09957fd62cbc86618ebbeb8fa&gt;,Windows::Foundation:: ITypedEventHandler&lt;Windows::ApplicationModel::Core::CoreApplicationView *,Windows::ApplicationModel::Activation::IActivatedEventArgs *&gt; &gt;+0&#215;67<br />
2d 0000009e`393fe2c0 00007ff9`76cb6a63 twinapi_appcore!Windows::ApplicationModel::Core:: CoreApplicationView::Activate+0&#215;3d2<br />
2e 0000009e`393fe430 00007ff9`76d1a036 rpcrt4!Invoke+0&#215;73<br />
2f 0000009e`393fe490 00007ff9`76c783b9 rpcrt4!Ndr64StubWorker+0xb56<br />
30 0000009e`393feb30 00007ff9`76fd5d13 rpcrt4!NdrStubCall3+0xc9<br />
31 0000009e`393feb90 00007ff9`76c99bab combase!CStdStubBuffer_Invoke+0&#215;73<br />
32 0000009e`393febd0 00007ff9`76fbd0e3 rpcrt4!CStdStubBuffer_Invoke+0&#215;3b<br />
33 (Inline Function) &#8212;&#8212;&#8211;`&#8212;&#8212;&#8211; combase!InvokeStubWithExceptionPolicyAndTracing::__l6:: &lt;lambda_c9f3956a20c9da92a64affc24fdd69ec&gt;::operator()+0&#215;18<br />
34 0000009e`393fec00 00007ff9`76fbced3 combase!ObjectMethodExceptionHandlingAction&lt; &lt;lambda_c9f3956a20c9da92a64affc24fdd69ec&gt; &gt;+0&#215;43<br />
35 (Inline Function) &#8212;&#8212;&#8211;`&#8212;&#8212;&#8211; combase!InvokeStubWithExceptionPolicyAndTracing+0xa8<br />
36 0000009e`393fec60 00007ff9`76fd9556 combase!DefaultStubInvoke+0&#215;1c3<br />
37 (Inline Function) &#8212;&#8212;&#8211;`&#8212;&#8212;&#8211; combase!SyncStubCall::Invoke+0&#215;22<br />
38 0000009e`393fedb0 00007ff9`76fba4fa combase!SyncServerCall::StubInvoke+0&#215;26<br />
39 (Inline Function) &#8212;&#8212;&#8211;`&#8212;&#8212;&#8211; combase!StubInvoke+0&#215;259<br />
3a 0000009e`393fedf0 00007ff9`76fda81b combase!ServerCall::ContextInvoke+0&#215;42a<br />
3b (Inline Function) &#8212;&#8212;&#8211;`&#8212;&#8212;&#8211; combase!CServerChannel::ContextInvoke+0xc0<br />
3c (Inline Function) &#8212;&#8212;&#8211;`&#8212;&#8212;&#8211; combase!DefaultInvokeInApartment+0xc0<br />
3d 0000009e`393ff1f0 00007ff9`76f701ac combase!ASTAInvokeInApartment+0&#215;15b<br />
3e 0000009e`393ff400 00007ff9`76f70a11 combase!AppInvoke+0&#215;1ec<br />
3f 0000009e`393ff490 00007ff9`76f918c2 combase!ComInvokeWithLockAndIPID+0&#215;681<br />
40 (Inline Function) &#8212;&#8212;&#8211;`&#8212;&#8212;&#8211; combase!ComInvoke+0&#215;1c1<br />
41 0000009e`393ff7c0 00007ff9`76f90a99 combase!ThreadDispatch+0&#215;272<br />
42 0000009e`393ff890 00007ff9`76f947ba combase!ModernSTAState::HandleMessage+0&#215;51<br />
43 0000009e`393ff8e0 00007ff9`4eac92f5 combase!ModernSTAWaitContext::HandlePriorityEventsFromMessagePump+0&#215;66<br />
44 0000009e`393ff910 00007ff9`4eac8fee Windows_UI!Windows::UI::Core::CDispatcher::ProcessMessage+0&#215;1b5<br />
45 0000009e`393ff9c0 00007ff9`4eac8f21 Windows_UI!Windows::UI::Core::CDispatcher::WaitAndProcessMessagesInternal+0xae<br />
46 0000009e`393ffad0 00007ff9`72cea89f Windows_UI!Windows::UI::Core::CDispatcher::WaitAndProcessMessages+0&#215;31<br />
47 0000009e`393ffb00 00007ff9`76eac235 twinapi_appcore!&lt;lambda_643db08282a766b00cec20194396f531&gt;::operator()+0xff<br />
48 0000009e`393ffbf0 00007ff9`77aa7c24 SHCore!_WrapperThreadProc+0xf5<br />
49 0000009e`393ffcd0 00007ff9`77fed4d1 kernel32!BaseThreadInitThunk+0&#215;14<br />
4a 0000009e`393ffd00 00000000`00000000 ntdll!RtlUserThreadStart+0&#215;21</code></font></p>
<p align="left">We dump doubly dereferenced raw stack region around such exception processing calls:</p>
<p align="left"><font size="1"><code>0:008&gt; dpp <font color="blue">0000009e`393fc160  0000009e`393fcb70</font><br />
[&#8230;]<br />
0000009e`393fcb38  00007ff8`f8057628 cc003f4c`6115ffcc<br />
0000009e`393fcb40  0000009e`393fcb88 0000009e`393fcb98<br />
0000009e`393fcb48  <font color="magenta">000001e8`69af9450</font> 00007ff9`491c6170 <font color="red">vccorlib140_app!Platform::COMException</font>::`vftable&#8217;<br />
0000009e`393fcb50  <font color="magenta">000001e8`69af9450</font> 00007ff9`491c6170 <font color="red">vccorlib140_app!Platform::COMException</font>::`vftable&#8217;<br />
[&#8230;]</code></font></p>
<p align="left">We see <a href="https://www.dumpanalysis.org/blog/index.php/2021/01/25/crash-dump-analysis-patterns-part-273/">C++ Object</a> references and apply object structure to them:</p>
<p align="left"><font size="1"><code>0:008&gt; dt <font color="red">vccorlib140_app!Platform::COMException</font> <font color="magenta">000001e8`69af9450</font><br />
+0&#215;000 __VFN_table : 0&#215;00007ff9`491c6170<br />
+0&#215;008 __VFN_table : 0&#215;00007ff9`491c5bf8<br />
+0&#215;010 __VFN_table : 0&#215;00007ff9`491c5e20<br />
+0&#215;018 __VFN_table : 0&#215;00007ff9`491c5ec0<br />
<font color="blue">+0&#215;020 __description    : 0&#215;000001e8`5e1e30a8 Void<br />
+0&#215;028 __restrictedErrorString : 0&#215;000001e8`5ba83728 Void</font><br />
+0&#215;030 __restrictedErrorReference : (null)<br />
+0&#215;038 __capabilitySid  : (null)<br />
<font color="blue">+0&#215;040 __hresult        : 0n-2147024894</font><br />
+0&#215;048 __restrictedInfo : 0&#215;000001e8`699f4308 Void<br />
+0&#215;050 __throwInfo      : 0&#215;00007ff9`491baf60 Void<br />
+0&#215;058 __size           : 0&#215;40<br />
+0&#215;060 __prepare        : Platform::IntPtr<br />
+0&#215;068 __abi_reference_count : __abi_FTMWeakRefData<br />
+0&#215;078 __abi_disposed   : 0<br />
+0&#215;080 __abi_disposed   : 0</code></font></p>
<p align="left"><font size="1"><code>0:008&gt; du 0x000001e8`5e1e30a8<br />
000001e8`5e1e30a8  "The system cannot find the file "<br />
000001e8`5e1e30e8  "specified..."</code></font></p>
<p align="left"><font size="1"><code>0:008&gt; du 0x000001e8`5ba83728<br />
000001e8`5ba83728  "Error trying to initialize appli"<br />
000001e8`5ba83768  "cation data storage folder"</code></font></p>
<p align="left"><font size="1"><code>0:008&gt; !error 0n-2147024894<br />
Error code: (HRESULT) 0x80070002 (2147942402) - The system cannot find the file specified.</code></font></p>
<p align="left">- Dmitry Vostokov @ <a href="http://www.dumpanalysis.org/">DumpAnalysis.org</a> + <a href="http://www.traceanalysis.org/">TraceAnalysis.org</a> -</p>
]]></content:encoded>
			<wfw:commentRss>https://www.dumpanalysis.org/blog/index.php/2021/01/31/crash-dump-analysis-patterns-part-274/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
