<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>A case study of a NullReferenceException</title><link>http://blogs.msdn.com/junfeng/archive/2008/04/07/a-case-study-of-a-nullreferenceexception.aspx</link><description>We are seeing a NullReferenceException in our stress program. The investigation process may be helpful to some folks. Thread 22 is showing a Watson dialog. This is a register corruption. 0:022&amp;gt; kp ChildEBP RetAddr 091bc9a0 76961220 ntdll!ZwWaitForSingleObject(void)+0x15</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>re: A case study of a NullReferenceException</title><link>http://blogs.msdn.com/junfeng/archive/2008/04/07/a-case-study-of-a-nullreferenceexception.aspx#8365976</link><pubDate>Mon, 07 Apr 2008 20:41:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8365976</guid><dc:creator>Rich</dc:creator><description>&lt;p&gt;How does a register corruption happen? &amp;nbsp;Is it only in the CLR? &amp;nbsp;Or can an app cause it?&lt;/p&gt;
</description></item><item><title>re: A case study of a NullReferenceException</title><link>http://blogs.msdn.com/junfeng/archive/2008/04/07/a-case-study-of-a-nullreferenceexception.aspx#8367079</link><pubDate>Tue, 08 Apr 2008 03:40:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8367079</guid><dc:creator>Norman Diamond</dc:creator><description>&lt;p&gt;06b2d7e3 e810a078f9 &amp;nbsp; &amp;nbsp; &amp;nbsp;call &amp;nbsp; &amp;nbsp;mscorlib!System.Collections.Generic.EqualityComparer`1[[System.__Canon, mscorlib]].get_Default() (002b77f8)&lt;/p&gt;
&lt;p&gt;06b2d7e8 8945f0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mov &amp;nbsp; &amp;nbsp; dword ptr [ebp-10h],eax&lt;/p&gt;
&lt;p&gt;06b2d7eb 85f6 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;test &amp;nbsp; &amp;nbsp;esi,esi&lt;/p&gt;
&lt;p&gt;Does get_Default() report a result by setting esi to 1?&lt;/p&gt;
</description></item><item><title>re: A case study of a NullReferenceException</title><link>http://blogs.msdn.com/junfeng/archive/2008/04/07/a-case-study-of-a-nullreferenceexception.aspx#8368007</link><pubDate>Tue, 08 Apr 2008 10:01:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8368007</guid><dc:creator>junfeng</dc:creator><description>&lt;p&gt;Rich,&lt;/p&gt;
&lt;p&gt;register corruption happens because the register is overwrited. This could happen for a couple of reasons, for example, the registers are not correctly saved and restored on method call, C++ functions modify register directly using __asm syntax, or, CPU hardware problem, like overheating. CLR could be one of the cause.&lt;/p&gt;
&lt;p&gt;Norman,&lt;/p&gt;
&lt;p&gt;The return value of call is stored in eax in x86, and rax in x64. It should not modify esi.&lt;/p&gt;
</description></item></channel></rss>