<?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: Counterfactual Debugging: Dereference Fixpoints</title>
	<link>https://www.dumpanalysis.org/blog/index.php/2009/09/11/counterfactual-debugging-dereference-fixpoints/</link>
	<description>Structural and Behavioral Patterns for Software Diagnostics, Forensics and Prognostics</description>
	<pubDate>Thu, 07 May 2026 04:30:06 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
		<item>
		<title>By: Crash Dump Analysis &#187; Blog Archive &#187; Modeling C++ Object Corruption</title>
		<link>https://www.dumpanalysis.org/blog/index.php/2009/09/11/counterfactual-debugging-dereference-fixpoints/#comment-177023</link>
		<dc:creator>Crash Dump Analysis &#187; Blog Archive &#187; Modeling C++ Object Corruption</dc:creator>
		<pubDate>Wed, 18 Aug 2010 15:45:32 +0000</pubDate>
		<guid>https://www.dumpanalysis.org/blog/index.php/2009/09/11/counterfactual-debugging-dereference-fixpoints/#comment-177023</guid>
		<description>[...] class memory layout I made sure that it points to the same heap address by making vtable pointer a dereference fixpoint. Here is a source code based on how Visual C++ compiler implements objects in [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] class memory layout I made sure that it points to the same heap address by making vtable pointer a dereference fixpoint. Here is a source code based on how Visual C++ compiler implements objects in [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Crash Dump Analysis &#187; Blog Archive &#187; MemD Category (Categories for the Working Software Defect Researcher, Part 1)</title>
		<link>https://www.dumpanalysis.org/blog/index.php/2009/09/11/counterfactual-debugging-dereference-fixpoints/#comment-115185</link>
		<dc:creator>Crash Dump Analysis &#187; Blog Archive &#187; MemD Category (Categories for the Working Software Defect Researcher, Part 1)</dc:creator>
		<pubDate>Fri, 08 Jan 2010 09:36:09 +0000</pubDate>
		<guid>https://www.dumpanalysis.org/blog/index.php/2009/09/11/counterfactual-debugging-dereference-fixpoints/#comment-115185</guid>
		<description>[...] Pointers and their links are also objects and arrows to form a category, called MemP(tr). The following picture illustrates it with the last pointer shown as a dereference fixpoint: [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] Pointers and their links are also objects and arrows to form a category, called MemP(tr). The following picture illustrates it with the last pointer shown as a dereference fixpoint: [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dmitry Vostokov</title>
		<link>https://www.dumpanalysis.org/blog/index.php/2009/09/11/counterfactual-debugging-dereference-fixpoints/#comment-95297</link>
		<dc:creator>Dmitry Vostokov</dc:creator>
		<pubDate>Tue, 22 Sep 2009 16:26:18 +0000</pubDate>
		<guid>https://www.dumpanalysis.org/blog/index.php/2009/09/11/counterfactual-debugging-dereference-fixpoints/#comment-95297</guid>
		<description>Thanks! Dmitry</description>
		<content:encoded><![CDATA[<p>Thanks! Dmitry</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sol_Ksacap</title>
		<link>https://www.dumpanalysis.org/blog/index.php/2009/09/11/counterfactual-debugging-dereference-fixpoints/#comment-94951</link>
		<dc:creator>Sol_Ksacap</dc:creator>
		<pubDate>Sat, 19 Sep 2009 23:28:11 +0000</pubDate>
		<guid>https://www.dumpanalysis.org/blog/index.php/2009/09/11/counterfactual-debugging-dereference-fixpoints/#comment-94951</guid>
		<description>Yeah, in case of fixpoint both comparisons indeed are the same. We tried to say what extra-indirection-level comparison will return true even if 'pc' is not a fixpoint itself – but rather a pointer to the fixpoint.

Example:

init:
lea eax, [pcx]
mov [eax], eax   ; pcx is a fixpoint now
mov [pc], eax    ; 'pc' and 'pcx' have different addresses

check0:
lea eax, [pc]
mov ecx, [eax]
cmp eax, ecx
je PcIsFixpoint  ; check will fail

check1:
mov eax, [pc]
mov ecx, [eax]
cmp eax, ecx
je PcIsFixpointOrPointerToFixpoint   ; check will succeed



Btw,.. This blog is awesome ;)</description>
		<content:encoded><![CDATA[<p>Yeah, in case of fixpoint both comparisons indeed are the same. We tried to say what extra-indirection-level comparison will return true even if &#8216;pc&#8217; is not a fixpoint itself – but rather a pointer to the fixpoint.</p>
<p>Example:</p>
<p>init:<br />
lea eax, [pcx]<br />
mov [eax], eax   ; pcx is a fixpoint now<br />
mov [pc], eax    ; &#8216;pc&#8217; and &#8216;pcx&#8217; have different addresses</p>
<p>check0:<br />
lea eax, [pc]<br />
mov ecx, [eax]<br />
cmp eax, ecx<br />
je PcIsFixpoint  ; check will fail</p>
<p>check1:<br />
mov eax, [pc]<br />
mov ecx, [eax]<br />
cmp eax, ecx<br />
je PcIsFixpointOrPointerToFixpoint   ; check will succeed</p>
<p>Btw,.. This blog is awesome <img src='https://www.dumpanalysis.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Crash Dump Analysis &#187; Blog Archive &#187; Counterfactual Debugging: Data Ordering</title>
		<link>https://www.dumpanalysis.org/blog/index.php/2009/09/11/counterfactual-debugging-dereference-fixpoints/#comment-94346</link>
		<dc:creator>Crash Dump Analysis &#187; Blog Archive &#187; Counterfactual Debugging: Data Ordering</dc:creator>
		<pubDate>Tue, 15 Sep 2009 21:19:45 +0000</pubDate>
		<guid>https://www.dumpanalysis.org/blog/index.php/2009/09/11/counterfactual-debugging-dereference-fixpoints/#comment-94346</guid>
		<description>[...] discussed dereference fixpoints we come back to the quiz code and see what happens when we execute it after compilation as default [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] discussed dereference fixpoints we come back to the quiz code and see what happens when we execute it after compilation as default [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dmitry Vostokov</title>
		<link>https://www.dumpanalysis.org/blog/index.php/2009/09/11/counterfactual-debugging-dereference-fixpoints/#comment-94139</link>
		<dc:creator>Dmitry Vostokov</dc:creator>
		<pubDate>Mon, 14 Sep 2009 10:54:17 +0000</pubDate>
		<guid>https://www.dumpanalysis.org/blog/index.php/2009/09/11/counterfactual-debugging-dereference-fixpoints/#comment-94139</guid>
		<description>Both comparisons do the same thing in the case of a fixpoint and any multiple dereferencing by definition of a fixpont:

if (&#038;pc == (int **)*(int *)*pc)

&lt;code&gt;mov         eax,dword ptr [pc] 
mov         ecx,dword ptr [eax] 
lea         edx,[pc] 
cmp         edx,dword ptr [ecx]&lt;/code&gt;

Originally I myself believed in underflow in all situations until I suddenly got an infinite loop. I couldn't believe my eyes and after the investigation as a byproduct I came to the definition of a fixpoint. I plan to write more about this later today.</description>
		<content:encoded><![CDATA[<p>Both comparisons do the same thing in the case of a fixpoint and any multiple dereferencing by definition of a fixpont:</p>
<p>if (&#038;pc == (int **)*(int *)*pc)</p>
<p><code>mov         eax,dword ptr [pc]<br />
mov         ecx,dword ptr [eax]<br />
lea         edx,[pc]<br />
cmp         edx,dword ptr [ecx]</code></p>
<p>Originally I myself believed in underflow in all situations until I suddenly got an infinite loop. I couldn&#8217;t believe my eyes and after the investigation as a byproduct I came to the definition of a fixpoint. I plan to write more about this later today.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sol_Ksacap</title>
		<link>https://www.dumpanalysis.org/blog/index.php/2009/09/11/counterfactual-debugging-dereference-fixpoints/#comment-93815</link>
		<dc:creator>Sol_Ksacap</dc:creator>
		<pubDate>Sat, 12 Sep 2009 00:59:29 +0000</pubDate>
		<guid>https://www.dumpanalysis.org/blog/index.php/2009/09/11/counterfactual-debugging-dereference-fixpoints/#comment-93815</guid>
		<description>&#62;if (pc == (int *)*pc) {...}
Shouldn't that be "if (&#38;pc == (int**)pc) {...}"?
Otherwise, this comparison can _reliable_ tell what 'pc' is a pointer to the fixpoint, not a fixpoint itself, right?

&#62;overflow with an exception, or stack underflow with an exception or loop indefinitely?
Our guess is what if this code will be optimized, it will almost certainly lead to underflow in all situations. But for usual non-optimized "all vars are volatile vars" fetches – this single loop definitely produces lot's of possibilities :D</description>
		<content:encoded><![CDATA[<p>&gt;if (pc == (int *)*pc) {&#8230;}<br />
Shouldn&#8217;t that be &#8220;if (&amp;pc == (int**)pc) {&#8230;}&#8221;?<br />
Otherwise, this comparison can _reliable_ tell what &#8216;pc&#8217; is a pointer to the fixpoint, not a fixpoint itself, right?</p>
<p>&gt;overflow with an exception, or stack underflow with an exception or loop indefinitely?<br />
Our guess is what if this code will be optimized, it will almost certainly lead to underflow in all situations. But for usual non-optimized &#8220;all vars are volatile vars&#8221; fetches – this single loop definitely produces lot&#8217;s of possibilities <img src='https://www.dumpanalysis.org/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dragos</title>
		<link>https://www.dumpanalysis.org/blog/index.php/2009/09/11/counterfactual-debugging-dereference-fixpoints/#comment-93700</link>
		<dc:creator>dragos</dc:creator>
		<pubDate>Fri, 11 Sep 2009 17:35:09 +0000</pubDate>
		<guid>https://www.dumpanalysis.org/blog/index.php/2009/09/11/counterfactual-debugging-dereference-fixpoints/#comment-93700</guid>
		<description>It will overwrite the thread stack with zeros and it will crash with access violation when reaching StackBase.</description>
		<content:encoded><![CDATA[<p>It will overwrite the thread stack with zeros and it will crash with access violation when reaching StackBase.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
