<?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>Ntdebugging Blog</title><link>http://blogs.msdn.com/b/ntdebugging/</link><description>Microsoft Advanced Windows Debugging and Troubleshooting - Contributions to this blog are made by the Microsoft Platforms Global Escalation Team</description><dc:language>en-US</dc:language><generator>Telligent Community 5.6.583.20496 (Build: 5.6.583.20496)</generator><item><title>Identifying Global Atom Table Leaks</title><link>http://blogs.msdn.com/b/ntdebugging/archive/2012/01/31/identifying-global-atom-table-leaks.aspx</link><pubDate>Tue, 31 Jan 2012 21:04:55 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10262455</guid><dc:creator>ntdebug</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ntdebugging/rsscomments.aspx?WeblogPostID=10262455</wfw:commentRss><comments>http://blogs.msdn.com/b/ntdebugging/archive/2012/01/31/identifying-global-atom-table-leaks.aspx#comments</comments><description>&lt;div class="WordSection1"&gt;   &lt;p class="Text"&gt;Hi, it's the Debug Ninja back again with another debugging adventure.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Recently I have encountered several instances where processes fail to initialize, and a review of available resources showed that there was no obvious resource exhaustion.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;A more in depth review found that there were no available string atoms in the global atom table.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Global atoms are organized on a per-session basis.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;If atoms cannot be allocated in session 0, services may fail to start or processes launched by various services may fail to start.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;However, a user logged in to a different session will not experience any such failures.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;String atoms are numbered from 0xC000 through 0xFFFF, providing a maximum of 0x4000 atoms per session.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;For more information on atoms, and atom tables, see http://technet.microsoft.com/en-us/query/ms649053.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;When there are no more string atoms available, calls to APIs that allocate string atoms will fail.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Because atoms are often allocated at process or dll init time, the most common symptom is that processes fail to initialize.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The process may cleanly exit without an error.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;You are likely experiencing this problem if you debug your application and find that the failure originates from an API that allocates string atoms such as RegisterClass, RegisterClassEx, GlobalAddAtom, or AddAtom.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;To determine if the global string atom table is full you will need to perform a kernel debug.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This can be a live debug or a post-mortem debug using a dump.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;First identify the session where the failures have occurred and set the process context to a process in this session.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;In my example, w3wp.exe was launching a process and this process failed to initialize.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;2: kd&amp;gt; !process 0 0 w3wp.exe&lt;/p&gt;    &lt;p class="Debug"&gt;PROCESS fffffa8005083060&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;SessionId: 0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Cid: 1668&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Peb: fffdf000&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ParentCid: 08ec&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;DirBase: 8a2df000&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ObjectTable: fffff8a0128bbe40&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;HandleCount: 441.&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Image: w3wp.exe&lt;/p&gt;    &lt;p class="Debug"&gt;2: kd&amp;gt; .process /p /r fffffa8005083060&lt;/p&gt;    &lt;p class="Debug"&gt;Implicit process is now fffffa80`05083060&lt;/p&gt;    &lt;p class="Debug"&gt;Loading User Symbols&lt;/p&gt;    &lt;p class="Debug"&gt;.....&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Next we need to analyze the global atom table.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The pointer to the table is stored in the UserAtomTableHandle global.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;2: kd&amp;gt; dq win32k!UserAtomTableHandle l1&lt;/p&gt;    &lt;p class="Debug"&gt;fffff960`003bf7a8&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fffff8a0`05e5bc70&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The UserAtomTableHandle has a pointer to a handle table at offset 0x10 in 64-bit, and offset 0x8 in 32-bit.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Note that although the atom table is defined as a _RTL_ATOM_TABLE, the format shown by dt is for user mode and does not apply to the UserAtomTableHandle in kernel mode.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;2: kd&amp;gt; dq fffff8a0`05e5bc70+10 l1&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`05e5bc80&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fffff8a0`05db7740&lt;/p&gt;    &lt;p class="Debug"&gt;2: kd&amp;gt; dt nt!_HANDLE_TABLE fffff8a0`05db7740&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x000 TableCode&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0xfffff8a0`109c8001&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x008 QuotaProcess&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: (null)&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x010 UniqueProcessId&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;: 0x00000000`00000184 Void&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x018 HandleLock&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: _EX_PUSH_LOCK&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x020 HandleTableList&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;: _LIST_ENTRY [ 0xfffff8a0`05db7760 - 0xfffff8a0`05db7760 ]&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x030 HandleContentionEvent : _EX_PUSH_LOCK&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x038 DebugInfo&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: (null)&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x040 ExtraInfoPages&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;: 0n0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x044 Flags&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x044 StrictFIFO&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0y0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x048 FirstFreeHandle&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;: 0x10004&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x050 LastFreeHandleEntry : 0xfffff8a0`10ca4ff0 _HANDLE_TABLE_ENTRY&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x058 HandleCount&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0x3fc0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x05c NextHandleNeedingPool : 0x10400&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x060 HandleCountHighWatermark : 0x3fc1&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The FirstFreeHandle&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;contains the handle number that will be given to the next handle allocated from this table.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This value is encoded, to get the next handle number we need to right shift the FirstFreeHandle&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;by 2 bits.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;2: kd&amp;gt; ?00010004&amp;gt;&amp;gt;2&lt;/p&gt;    &lt;p class="Debug"&gt;Evaluate expression: 16385 = 00000000`00004001&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The result from above, 0x4001, is greater than the number of possible string atoms.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;As I mentioned earlier, there is a limit of 0x4000 string atoms.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Now we know that the session is out of string atoms.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The next step is to dump the string atoms to identify whether there is an observable pattern in the leaked strings.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The !atom command only works in user mode, so we need to dump the kernel mode strings manually.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;An atom table is comprised of multiple buckets.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;Each bucket is the head of a list of atoms.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The buckets start at offset 0x20 in the atom table in 64-bit, and offset 0x10 in 32-bit.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;2: kd&amp;gt; dq fffff8a0`05e5bc70+20&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`05e5bc90&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fffff8a0`05e5ba60 fffff8a0`05db7be0&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`05e5bca0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fffff8a0`08cf1770 fffff8a0`05e5b3d0&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`05e5bcb0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fffff8a0`05ea9020 fffff8a0`05e5b8e0&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`05e5bcc0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fffff8a0`05ea9b10 fffff8a0`05ea9910&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`05e5bcd0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fffff8a0`05ea9f00 fffff8a0`05e5b650&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`05e5bce0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fffff8a0`05cda290 fffff8a0`05ea9e80&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`05e5bcf0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fffff8a0`05e5b200 fffff8a0`05ea9e30&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`05e5bd00&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fffff8a0`05e5b7e0 fffff8a0`06c56210&lt;/p&gt;    &lt;p class="Debug"&gt;2: kd&amp;gt; dq&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`05e5bd10&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fffff8a0`06d6b5a0 fffff8a0`05ea9d50&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`05e5bd20&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fffff8a0`05e5b790 fffff8a0`05e5b9d0&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`05e5bd30&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fffff8a0`06bd9bc0 fffff8a0`05ea9c90&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`05e5bd40&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fffff8a0`05e5b0c0 fffff8a0`06ae2020&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`05e5bd50&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fffff8a0`05e5b930 fffff8a0`04d2af40&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`05e5bd60&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fffff8a0`05e5b690 fffff8a0`05e5b980&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`05e5bd70&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fffff8a0`05e5b490 fffff8a0`05e5b410&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`05e5bd80&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fffff8a0`05e5ba20 fffff8a0`05e5b4f0&lt;/p&gt;    &lt;p class="Debug"&gt;2: kd&amp;gt; dq&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`05e5bd90&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fffff8a0`05e5baa0 fffff8a0`05e5b390&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`05e5bda0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fffff8a0`05e5b840 fffff8a0`05ea9c50&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`05e5bdb0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fffff8a0`05e5b250 00000000`00000000&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`05e5bdc0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000000`00000000 00000000`00000000&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`05e5bdd0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000000`00000000 00000000`00000000&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`05e5bde0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000000`00000000 00000000`00000000&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`05e5bdf0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000000`00000000 00000000`00000000&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`05e5be00&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000000`00000000 00000000`00000000&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The quick and dirty way to dump the buckets is with !list.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;I am sure that some will say it is tedious to dump each bucket list by hand and that there are easier ways to accomplish this.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;To prevent this article from becoming a lesson on debugger scripting, I am leaving that as an exercise to the reader.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;2: kd&amp;gt; !list &amp;quot;-t nt!_RTL_ATOM_TABLE_ENTRY.HashLink -e -x \&amp;quot;du @$extret+10\&amp;quot; fffff8a0`05e5ba60&amp;quot;&lt;/p&gt;    &lt;p class="Debug"&gt;du @$extret+10&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`05e5ba70&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;quot;Native&amp;quot;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;lt;snip strings that don't match a pattern&amp;gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160;&lt;/p&gt;    &lt;p class="Debug"&gt;du @$extret+10&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`0838a120&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;quot;ControlOfs0210000000000700&amp;quot;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;du @$extret+10&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`0f7ff430&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;quot;ControlOfs021A000000000C30&amp;quot;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;du @$extret+10&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`162168c0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;quot;ControlOfs020E000000001774&amp;quot;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;du @$extret+10&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`08c33870&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;quot;ControlOfs01F70000000007F4&amp;quot;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;du @$extret+10&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`07c46910&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;quot;ControlOfs0202000000000BF8&amp;quot;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;du @$extret+10&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`062aab50&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;quot;ControlOfs01F5000000001274&amp;quot;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;du @$extret+10&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`0777b150&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;quot;ControlOfs0202000000000C80&amp;quot;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;du @$extret+10&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`07dd3410&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;quot;ControlOfs0207000000000F00&amp;quot;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;du @$extret+10&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8a0`0f01d190&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;quot;ControlOfs0214000000000DAC&amp;quot;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Dumping the atoms I found that there is a continuous pattern of the string ControlOfs followed by 16 hexadecimal numbers.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Some time spent with your favorite search engine should find other reports of atom leaks involving the string ControlOfs, and that these leaks have been identified as a problem in some specific software.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;In this instance the programmer using that software needs to change their application to avoid the problem.&lt;/p&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10262455" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Debugging/">Debugging</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/leak/">leak</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/consumption/">consumption</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/windows/">windows</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/handles/">handles</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Debug+Ninja/">Debug Ninja</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/x64/">x64</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/windbg/">windbg</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/debug/">debug</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/kernel/">kernel</category></item><item><title>Stop 0x19 in a Large Pool Allocation</title><link>http://blogs.msdn.com/b/ntdebugging/archive/2012/01/27/stop-0x19-in-a-large-pool-allocation.aspx</link><pubDate>Fri, 27 Jan 2012 21:04:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10261315</guid><dc:creator>ntdebug</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ntdebugging/rsscomments.aspx?WeblogPostID=10261315</wfw:commentRss><comments>http://blogs.msdn.com/b/ntdebugging/archive/2012/01/27/stop-0x19-in-a-large-pool-allocation.aspx#comments</comments><description>&lt;div class="WordSection1"&gt;   &lt;p class="Text"&gt;Hello all, Scott Olson here again to share another interesting issue I recently debugged with pool corruption and found that using &lt;a href="http://msdn.microsoft.com/en-us/library/windows/hardware/ff558782(v=vs.85).aspx"&gt;special pool&lt;/a&gt; does not work with large pool allocations (&lt;a href="http://msdn.microsoft.com/en-us/library/windows/hardware/ff544520(v=vs.85).aspx"&gt;pool allocations&lt;/a&gt; greater than a &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc300794.aspx"&gt;PAGE_SIZE&lt;/a&gt;).&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Here is an example of a valid large page allocation. Notice the size is 0x1fb0 and a &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc300794.aspx"&gt;PAGE_SIZE&lt;/a&gt; is 0x1000 or 4kb.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;0: kd&amp;gt; !pool fffffa80`0dba6fa0&lt;/p&gt;    &lt;p class="Debug"&gt;Pool page fffffa800dba6fa0 region is Nonpaged pool&lt;/p&gt;    &lt;p class="Debug"&gt;*fffffa800dba5000 : large page allocation, Tag is Io&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;, size is 0x1fb0 bytes&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Pooltag Io&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;: general IO allocations, Binary : nt!io&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;In Windows 7, at the end of the large pool allocation it will have an allocation tag of “Frag” then a “Free” tag with the rest of the page size and is stored on the free pool list for allocation less than a page in size.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;0: kd&amp;gt; dc fffffa800dba5000 fffffa800dba5000+0x1fb0-4&lt;/p&gt;    &lt;p class="Debug"&gt;fffffa80`0dba5000&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00558001 32373242 00000000 00000000&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;..U.B272........&lt;/p&gt;    &lt;p class="Debug"&gt;fffffa80`0dba5010&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;55555555 55555555 98764321 01b75f55&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;UUUUUUUU!Cv.U_..&lt;/p&gt;    &lt;p class="Debug"&gt;fffffa80`0dba5020&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000001 00000001 704e6ff0 fffff981&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;.........oNp....&lt;/p&gt;    &lt;p class="Debug"&gt;…&amp;lt;cut&amp;gt;&lt;/p&gt;    &lt;p class="Debug"&gt;fffffa80`0dba6f80&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;55555555 55555555 55555555 55555555&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;UUUUUUUUUUUUUUUU&lt;/p&gt;    &lt;p class="Debug"&gt;fffffa80`0dba6f90&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;55555555 55555555 55555555 55555555&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;UUUUUUUUUUUUUUUU&lt;/p&gt;    &lt;p class="Debug"&gt;fffffa80`0dba6fa0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;55555555 55555555 00001fb0 00000000&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;UUUUUUUU........&lt;/p&gt;    &lt;p class="Debug"&gt;0: kd&amp;gt; dc&lt;/p&gt;    &lt;p class="Debug"&gt;fffffa80`0dba6fb0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;02010100 67617246 55555555 55555555&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;....&lt;span style="background: yellow; mso-highlight: yellow"&gt;Frag&lt;/span&gt;UUUUUUUU&lt;/p&gt;    &lt;p class="Debug"&gt;fffffa80`0dba6fc0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00040101 65657246 55555555 55555555&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;....&lt;span style="background: yellow; mso-highlight: yellow"&gt;Free&lt;/span&gt;UUUUUUUU&lt;/p&gt;    &lt;p class="Debug"&gt;fffffa80`0dba6fd0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00802170 fffff880 0e49cf70 fffffa80&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;p!......p.I.....&lt;/p&gt;    &lt;p class="Debug"&gt;fffffa80`0dba6fe0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;15cc8fe8 fffff981 3b9c50a7 00000005&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;.........P.;....&lt;/p&gt;    &lt;p class="Text"&gt;     &lt;br /&gt;Displayed with the &lt;a href="http://msdn.microsoft.com/en-us/library/windows/hardware/ff564691(v=vs.85).aspx"&gt;!pool&lt;/a&gt; command:      &lt;br style="mso-special-character: line-break" /&gt;      &lt;br style="mso-special-character: line-break" /&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;0: kd&amp;gt; !pool fffffa80`0dba6fb0&lt;/p&gt;    &lt;p class="Debug"&gt;Pool page fffffa800dba6fb0 region is Nonpaged pool&lt;/p&gt;    &lt;p class="Debug"&gt;*fffffa800dba6fb0 size:&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;10 previous size:&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;(Allocated) *Frag&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Owning component : Unknown (update pooltag.txt)&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;fffffa800dba6fc0 size:&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;40 previous size:&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;10&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;(Free)&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Free&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The example above demonstrates how this normally works.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The downside to this architecture is that if a driver were to overrun its pool allocation then &lt;a href="http://msdn.microsoft.com/en-us/library/windows/hardware/ff558782(v=vs.85).aspx"&gt;special pool&lt;/a&gt; would not be useful because the large pool allocation has to be page-aligned. Special pool detects pool overruns by putting the data at the end of the page, which would not be feasible with a large pool allocation.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;In Windows 7 there is a check while freeing the pool memory that will determine if this allocation had written past the end of its allocation, and if so will bug check the machine with a &lt;a href="http://msdn.microsoft.com/en-us/library/windows/hardware/ff557389(v=vs.85).aspx"&gt;Stop 0x19 BAD_POOL_HEADER&lt;/a&gt; with the first parameter being a 0x21.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Here is the definition along with what each parameter means:&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;BAD_POOL_HEADER (19)&lt;/p&gt;    &lt;p class="Debug"&gt;The pool is already corrupt at the time of the current request.&lt;/p&gt;    &lt;p class="Debug"&gt;This may or may not be due to the caller.&lt;/p&gt;    &lt;p class="Debug"&gt;The internal pool links must be walked to figure out a possible cause of&lt;/p&gt;    &lt;p class="Debug"&gt;the problem, and then special pool applied to the suspect tags or the driver&lt;/p&gt;    &lt;p class="Debug"&gt;verifier to a suspect driver.&lt;/p&gt;    &lt;p class="Debug"&gt;Arguments:&lt;/p&gt;    &lt;p class="Debug"&gt;Arg1: 0000000000000021, the data following the pool block being freed is corrupt.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Typically this means the consumer (call stack ) has overrun the block.&lt;/p&gt;    &lt;p class="Debug"&gt;Arg2: fffffa800dc57000, The pool pointer being freed.&lt;/p&gt;    &lt;p class="Debug"&gt;Arg3: 000000000000&lt;span style="background: lime; mso-highlight: lime"&gt;2180&lt;/span&gt;, The number of bytes allocated for the pool block.&lt;/p&gt;    &lt;p class="Debug"&gt;Arg4: 006b0072006f0077, The corrupted value found following the pool block.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Here is an example of what this corruption looks like compared to the above valid large pool allocation:     &lt;br style="mso-special-character: line-break" /&gt;      &lt;br style="mso-special-character: line-break" /&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;0: kd&amp;gt; !pool fffffa800dc57000&lt;/p&gt;    &lt;p class="Debug"&gt;Pool page fffffa800dc57000 region is Nonpaged pool&lt;/p&gt;    &lt;p class="Debug"&gt;fffffa800dc57000 is not a valid large pool allocation, checking large session pool...&lt;/p&gt;    &lt;p class="Debug"&gt;fffffa800dc57000 is freed (or corrupt) pool&lt;/p&gt;    &lt;p class="Debug"&gt;Bad allocation size @fffffa800dc57000, zero is invalid&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;***&lt;/p&gt;    &lt;p class="Debug"&gt;*** An error (or corruption) in the pool was detected;&lt;/p&gt;    &lt;p class="Debug"&gt;*** Attempting to diagnose the problem.&lt;/p&gt;    &lt;p class="Debug"&gt;***&lt;/p&gt;    &lt;p class="Debug"&gt;*** Use !poolval fffffa800dc57000 for more details.&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Pool page [ fffffa800dc57000 ] is __inVALID.&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Analyzing linked list...&lt;/p&gt;    &lt;p class="Debug"&gt;[ fffffa800dc57000 ]: invalid previous size [ 0x38 ] should be [ 0x0 ]&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Scanning for single bit errors...&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;None found&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Next, I dump the allocation from the start to the end.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Notice the size of the allocation is stored in the bugcheck code as &lt;span style="background: lime; mso-highlight: lime"&gt;argument 3&lt;/span&gt;.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;0: kd&amp;gt; dc fffffa800dc57000 fffffa800dc57000+&lt;span style="background: lime; mso-highlight: lime"&gt;2180&lt;/span&gt;-4&lt;/p&gt;    &lt;p class="Debug"&gt;fffffa80`0dc57000&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000038 0000000e 00000000 00000000&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;8...............&lt;/p&gt;    &lt;p class="Debug"&gt;fffffa80`0dc57010&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;a24da497 01ccc5d6 c827993c 41946d1f&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;..M.....&amp;lt;.'..m.A&lt;/p&gt;    &lt;p class="Debug"&gt;fffffa80`0dc57020&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;c0d75c9b b7cff1a5 00000000 00000020&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;.\.......... ...&lt;/p&gt;    &lt;p class="Debug"&gt;fffffa80`0dc57030&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;000021e0 00000006 0000006c 00000110&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;.!......l.......&lt;/p&gt;    &lt;p class="Debug"&gt;fffffa80`0dc57040&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000208 000003b8 00000208 00000660&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;............`...&lt;/p&gt;    &lt;p class="Debug"&gt;fffffa80`0dc57050&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000208 00000910 00000208 00000bb0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;................&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;lt;cut&amp;gt;&lt;/p&gt;    &lt;p class="Debug"&gt;fffffa80`0dc59150&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;002d0033 00300031 0063002e 006d006f&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;3.-.1.0...c.o.m.&lt;/p&gt;    &lt;p class="Debug"&gt;fffffa80`0dc59160&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;006c002e 00660065 00680074 006e0061&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;..l.e.f.t.h.a.n.&lt;/p&gt;    &lt;p class="Debug"&gt;fffffa80`0dc59170&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;006e0064 00740065 006f0077 006b0072&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;d.n.e.t.w.o.r.k.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;This should be the end of the allocation.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The next thing we see should be the “Frag” and “Free” tags.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;0: kd&amp;gt; dc&lt;/p&gt;    &lt;p class="Debug"&gt;fffffa80`0dc59180&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;003a0073 0061006d 0061006e 00650067&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;s.:.m.a.n.a.g.e.&lt;/p&gt;    &lt;p class="Debug"&gt;fffffa80`0dc59190&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0065006d 0074006e 0038003a 00390036&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;m.e.n.t.:.8.6.9.&lt;/p&gt;    &lt;p class="Debug"&gt;fffffa80`0dc591a0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0062003a 00670069 0075006c 00790063&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;:.b.i.g.l.u.c.y.&lt;/p&gt;    &lt;p class="Debug"&gt;fffffa80`0dc591b0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0064002d 00740061 002d0061 006e0069&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;-.d.a.t.a.-.i.n.&lt;/p&gt;    &lt;p class="Debug"&gt;fffffa80`0dc591c0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00650064 00650078 002d0073 00740063&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;d.e.x.e.s.-.c.t.&lt;/p&gt;    &lt;p class="Debug"&gt;fffffa80`0dc591d0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;006c0072 0031005f 00000031 00000000&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;r.l._.1.1.......&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;We clearly see that the Frag and Free tag have been overwritten with some string value which is causing the corruption.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;At this point, you would need to look at the current stack to determine which driver had allocated the memory, and review the code to investigate when this corruption could have occurred.&lt;/p&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10261315" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Debugging/">Debugging</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Pool/">Pool</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/windows/">windows</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/bugcheck/">bugcheck</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Scott/">Scott</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Pages/">Pages</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/debug/">debug</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/kernel/">kernel</category></item><item><title>Configuring a Hyper-V VM For Kernel Debugging</title><link>http://blogs.msdn.com/b/ntdebugging/archive/2011/12/30/configuring-a-hyper-v-vm-for-kernel-debugging.aspx</link><pubDate>Fri, 30 Dec 2011 19:08:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10252116</guid><dc:creator>ntdebug</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ntdebugging/rsscomments.aspx?WeblogPostID=10252116</wfw:commentRss><comments>http://blogs.msdn.com/b/ntdebugging/archive/2011/12/30/configuring-a-hyper-v-vm-for-kernel-debugging.aspx#comments</comments><description>&lt;div class="WordSection1"&gt;   &lt;p class="Text"&gt;&lt;a href="http://blogs.msdn.com/b/ntdebugging/archive/2011/12/29/my-kernel-debugger-won-t-connect.aspx"&gt;Yesterday's blog&lt;/a&gt; prompted some questions about how to set up a debugger for a Windows OS running in a Hyper-V VM.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;I was surprised that I wasn't able to find good, publicly available, Microsoft issued documentation for this configuration.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The first step is to configure the Windows OS in the VM to enable a kernel debugger on COM1.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;One would use these same steps if you were preparing the OS to be debugged using a null modem cable.&amp;#160; Hyper-V will allow us to redirect the COM port so that we don't need such a cable.&lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;       &lt;div class="Text"&gt;Start an administrative command prompt.&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div class="Text"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windows/hardware/ff542191(v=vs.85).aspx"&gt;Turn on debugging&lt;/a&gt; with this command:&lt;/div&gt;       &lt;dl&gt;&lt;dt&gt;           &lt;div class="Text"&gt;bcdedit /debug on&lt;/div&gt;         &lt;/dt&gt;&lt;/dl&gt;&lt;/li&gt;      &lt;li&gt;       &lt;div class="Text"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windows/hardware/ff542187(v=vs.85).aspx"&gt;Configure the debugger&lt;/a&gt; to use COM1 with this command:&lt;/div&gt;       &lt;dl&gt;&lt;dt&gt;           &lt;div class="Text"&gt;bcdedit /dbgsettings SERIAL DEBUGPORT:&lt;span class="GramE"&gt;1&lt;/span&gt; BAUDRATE:115200&lt;/div&gt;         &lt;/dt&gt;&lt;dd&gt;           &lt;div class="Text"&gt;Note that these are the default settings and already exist in most bcd stores.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;However setting them again won't damage anything, and guards against a situation where the dbgsettings have been previously modified.&lt;/div&gt;         &lt;/dd&gt;&lt;/dl&gt;&lt;/li&gt;      &lt;li&gt;       &lt;div class="Text"&gt;Reboot so that the boot loader can read the new settings and configure the OS for debugging.&lt;/div&gt;     &lt;/li&gt;   &lt;/ol&gt;    &lt;p class="Text"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="CommandPrompt" border="0" alt="CommandPrompt" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-00-metablogapi/6153.CommandPrompt_5F00_63F94155.png" width="668" height="163" /&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Next, configure Hyper-V to redirect the COM1 port to a named pipe.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;We will use this pipe in place of a traditional null modem cable.&lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;       &lt;div class="Text"&gt;Open Hyper-V Manager and browse to the settings page of the VM you configured to debug.&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div class="Text"&gt;Under the Hardware list choose COM 1.&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div class="Text"&gt;Change the Attachment to 'Named pipe:' and provide a pipe name.&lt;/div&gt;        &lt;ol type="a"&gt;         &lt;li&gt;           &lt;div class="Text"&gt;Note that the Hyper-V Manager provides the complete path to your named pipe.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Make a note of this path as you will need it in the next step.&lt;/div&gt;         &lt;/li&gt;       &lt;/ol&gt;     &lt;/li&gt;   &lt;/ol&gt;    &lt;p class="Text"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-00-metablogapi/0118.Settings2_5F00_5144479E.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Settings2" border="0" alt="Settings2" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-00-metablogapi/8547.Settings2_5F00_thumb_5F00_6967B1F9.png" width="669" height="627" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;After the OS and the VM are configured for debugging, we need to connect a debugger.&lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;       &lt;div class="Text"&gt;On the Hyper-V parent partition download and install the Debugging Tools for Windows from &lt;a href="http://msdn.microsoft.com/en-us/windows/hardware/gg463009"&gt;http://msdn.microsoft.com/en-us/windows/hardware/gg463009&lt;/a&gt;.&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div class="Text"&gt;After installing the debugging tools you will have a ‘Debugging Tools for Windows’ entry in your start menu.&lt;/div&gt;        &lt;ol type="a"&gt;         &lt;li&gt;           &lt;div class="Text"&gt;From this folder right click ‘WinDbg’ and choose ‘Run as administrator’.&amp;#160; Windbg needs administrative rights to connect to the pipe.&lt;/div&gt;         &lt;/li&gt;       &lt;/ol&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div class="Text"&gt;In windbg open the File menu and choose ‘Kernel Debug’.&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div class="Text"&gt;Enter a Baud Rate of 115200, to match the settings made in the VM.&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div class="Text"&gt;Enter the Port that you configured in the VM settings page.&lt;/div&gt;        &lt;ol type="a"&gt;         &lt;li&gt;           &lt;div class="Text"&gt;To connect to the pipe remotely, substitute the '.' in the path with the Hyper-V server name.&lt;/div&gt;         &lt;/li&gt;       &lt;/ol&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div class="Text"&gt;Ensure that the Pipe and Reconnect boxes are checked.&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div class="Text"&gt;Set Resets to 0.&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div class="Text"&gt;Click OK to start debugging.&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div class="Text"&gt;Windbg should display the string ' Waiting to reconnect...'&lt;/div&gt;     &lt;/li&gt;   &lt;/ol&gt;    &lt;p class="Text"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image004" border="0" alt="image004" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-00-metablogapi/7558.image004_5F00_2139F61D.png" width="344" height="279" /&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;To test the debugger connection in windbg, from the ‘Debug’ menu choose ‘Break’.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This should cause the server to break into the debugger and display a &lt;span class="SpellE"&gt;kd&lt;/span&gt;&amp;gt; prompt.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Please note that breaking into the debugger will cause the OS running in the VM to halt until you tell the debugger to go, the OS will appear to be hung during this time.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The command 'g' followed by Enter will tell the debugger to ‘go’ causing the VM to resume operation.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-00-metablogapi/2262.Windbg_5F00_00B2B66B.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Windbg" border="0" alt="Windbg" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-00-metablogapi/6153.Windbg_5F00_thumb_5F00_2DC7A339.png" width="682" height="638" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10252116" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Debugging/">Debugging</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/windows/">windows</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Debug+Ninja/">Debug Ninja</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Remote+Debugging/">Remote Debugging</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/windbg/">windbg</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/debug/">debug</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/kernel/">kernel</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/bcdedit/">bcdedit</category></item><item><title>My Kernel Debugger Won't Connect</title><link>http://blogs.msdn.com/b/ntdebugging/archive/2011/12/29/my-kernel-debugger-won-t-connect.aspx</link><pubDate>Thu, 29 Dec 2011 18:17:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10251808</guid><dc:creator>ntdebug</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ntdebugging/rsscomments.aspx?WeblogPostID=10251808</wfw:commentRss><comments>http://blogs.msdn.com/b/ntdebugging/archive/2011/12/29/my-kernel-debugger-won-t-connect.aspx#comments</comments><description>&lt;div class="WordSection1"&gt;   &lt;p class="Text"&gt;Hello ntdebugging readers, the Debug Ninja is back again with a quick blog this holiday season.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;I recently encountered a situation where the kernel debugger could not connect to a Windows Server 2008 R2 system running in a Hyper-V virtual machine.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The configuration appeared correct; however, the debugger would not connect to the VM.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;In windbg you can use Ctrl+Alt+D to view the debugger’s internal information flow.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;In KD use Ctrl+D followed by ENTER to toggle the output.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Enabling this output I could see that the debugger was unable to read from the debug port, and that it was getting timeouts.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The error &amp;quot;SYNCTARGET: Timeout.&amp;quot; is a clear indication that the debug host cannot communicate with the debug target, especially when this error appears after a “Send Break in” message.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-00-metablogapi/7651.image001_5F00_4780FECC.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="windbg" border="0" alt="SYNCTARGET: Timeout" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-00-metablogapi/2870.image001_5F00_thumb_5F00_06064C73.png" width="448" height="480" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Because I was using a named pipe on a Hyper-V VM I knew that I didn't have a bad cable, although this is a common cause of kernel debug failures.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;I also knew that the configuration of the VM was correct, and I could use the debugger for other VMs on this server.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The problem was most likely with the OS running in the VM.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;By checking Device Manager I was able to confirm that there was a problem with the configuration of the OS running in the VM.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The bcdedit settings were configured to use COM1, and this should make COM1 unavailable in the OS, however, COM1 was present in device manager.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;For some reason the debugger was not capturing COM1 on boot as it was configured to.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Device Manager" border="0" alt="Device Manager" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-00-metablogapi/5826.image003_5F00_6FD03120.png" width="313" height="398" /&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Examining the bcd configuration of this server I found that the bcd configuration was not correct.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;In the bcd store of normal Windows 7 or Windows Server 2008 R2 OS, the Windows Boot Loader sections of bcdedit have an inherit setting.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;You can view this information on your system from an elevated command prompt using the command ‘bcdedit /enum all’.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Ordinarily the Windows Boot Loader inherits the {bootloadersettings}, the {bootloadersettings} inherit the {globalsettings}, and the {globalsettings} inherit the {dbgsettings}.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Without the inherit settings, the debugger configuration will not be read by the boot loader.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Below are the bcd settings from the broken VM.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;You can see that all of the normal inherited settings are missing. &lt;/p&gt;    &lt;p class="Debug"&gt;C:\Windows\system32&amp;gt;bcdedit /enum all&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Windows Boot Manager&lt;/p&gt;    &lt;p class="Debug"&gt;--------------------&lt;/p&gt;    &lt;p class="Debug"&gt;identifier&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{bootmgr}&lt;/p&gt;    &lt;p class="Debug"&gt;device&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;partition=C:&lt;/p&gt;    &lt;p class="Debug"&gt;path&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;\bootmgr&lt;/p&gt;    &lt;p class="Debug"&gt;description&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Windows Boot Manager&lt;/p&gt;    &lt;p class="Debug"&gt;locale&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;en-US&lt;/p&gt;    &lt;p class="Debug"&gt;default&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{current}&lt;/p&gt;    &lt;p class="Debug"&gt;displayorder&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{current}&lt;/p&gt;    &lt;p class="Debug"&gt;timeout&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;30&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Windows Boot Loader&lt;/p&gt;    &lt;p class="Debug"&gt;-------------------&lt;/p&gt;    &lt;p class="Debug"&gt;identifier&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{current}&lt;/p&gt;    &lt;p class="Debug"&gt;device&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;partition=C:&lt;/p&gt;    &lt;p class="Debug"&gt;path&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;\Windows\system32\winload.exe&lt;/p&gt;    &lt;p class="Debug"&gt;description&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Windows Server 2008 R2 Standard (recovered)&lt;/p&gt;    &lt;p class="Debug"&gt;locale&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;en-US&lt;/p&gt;    &lt;p class="Debug"&gt;osdevice&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;partition=C:&lt;/p&gt;    &lt;p class="Debug"&gt;systemroot&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;\Windows&lt;/p&gt;    &lt;p class="Debug"&gt;resumeobject&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{2ec5363f-2a92-11e1-bbe4-806e6f6e6963}&lt;/p&gt;    &lt;p class="Debug"&gt;usefirmwarepcisettings&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;No&lt;/p&gt;    &lt;p class="Debug"&gt;debug&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Yes&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Resume from Hibernate&lt;/p&gt;    &lt;p class="Debug"&gt;---------------------&lt;/p&gt;    &lt;p class="Debug"&gt;identifier&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{2ec5363f-2a92-11e1-bbe4-806e6f6e6963}&lt;/p&gt;    &lt;p class="Debug"&gt;device&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;partition=C:&lt;/p&gt;    &lt;p class="Debug"&gt;path&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;\Windows\system32\winresume.exe&lt;/p&gt;    &lt;p class="Debug"&gt;description&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Windows Server 2008 R2 Standard (recovered)&lt;/p&gt;    &lt;p class="Debug"&gt;locale&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;en-US&lt;/p&gt;    &lt;p class="Debug"&gt;inherit&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{resumeloadersettings}&lt;/p&gt;    &lt;p class="Debug"&gt;filedevice&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;partition=C:&lt;/p&gt;    &lt;p class="Debug"&gt;filepath&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;\hiberfil.sys&lt;/p&gt;    &lt;p class="Debug"&gt;debugoptionenabled&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Yes&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Windows Memory Tester&lt;/p&gt;    &lt;p class="Debug"&gt;---------------------&lt;/p&gt;    &lt;p class="Debug"&gt;identifier&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{memdiag}&lt;/p&gt;    &lt;p class="Debug"&gt;device&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;partition=C:&lt;/p&gt;    &lt;p class="Debug"&gt;path&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;\boot\memtest.exe&lt;/p&gt;    &lt;p class="Debug"&gt;description&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Windows Memory Diagnostic&lt;/p&gt;    &lt;p class="Debug"&gt;locale&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;en-US&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Debugger Settings&lt;/p&gt;    &lt;p class="Debug"&gt;-----------------&lt;/p&gt;    &lt;p class="Debug"&gt;identifier&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{dbgsettings}&lt;/p&gt;    &lt;p class="Debug"&gt;debugtype&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Serial&lt;/p&gt;    &lt;p class="Debug"&gt;debugport&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;1&lt;/p&gt;    &lt;p class="Debug"&gt;baudrate&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;115200&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Because my only interest in this VM was to get the debugger working, I did not add all of the missing settings to the bcd store.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;I was able to force the debugger configuration to be read on boot using this command:&lt;/p&gt;    &lt;p class="Debug"&gt;bcdedit /set inherit {dbgsettings}&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;I hope this helps the next time you are trying to configure a debugger and it does not work.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Remember that we don't just need the debugger to be &lt;a href="http://msdn.microsoft.com/en-us/library/windows/hardware/ff542191(v=vs.85).aspx"&gt;turned on&lt;/a&gt; and be &lt;a href="http://msdn.microsoft.com/en-us/library/windows/hardware/ff542187(v=vs.85).aspx"&gt;configured&lt;/a&gt;; we need the settings to be inherited as well.&lt;/p&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10251808" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Debugging/">Debugging</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/windows/">windows</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Debug+Ninja/">Debug Ninja</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Remote+Debugging/">Remote Debugging</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/windbg/">windbg</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/debug/">debug</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/kernel/">kernel</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/bcdedit/">bcdedit</category></item><item><title>Fixing an ICorDebugUnmanagedCallback induced hang</title><link>http://blogs.msdn.com/b/ntdebugging/archive/2011/11/29/fixing-an-icordebugunmanagedcallback-induced-hang.aspx</link><pubDate>Tue, 29 Nov 2011 17:36:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10242485</guid><dc:creator>ntdebug</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ntdebugging/rsscomments.aspx?WeblogPostID=10242485</wfw:commentRss><comments>http://blogs.msdn.com/b/ntdebugging/archive/2011/11/29/fixing-an-icordebugunmanagedcallback-induced-hang.aspx#comments</comments><description>&lt;div class="WordSection1"&gt;   &lt;p class="Text"&gt;Hi debuggers, Andrew Richards here with a NTDebugging post that is a little different to what is usually posted.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Instead of talking about debugging, I’m going to talk about an issue I just faced while writing a debugger.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;This debugger work is an extension of an upcoming article that I’ve written for MSDN Magazine (scheduled for the December 2011 issue). The MSDN Magazine article goes over how to write a native debugger using the DbgHelp API. It also explains how you can use this code to then make a plugin for &lt;a href="http://technet.microsoft.com/en-us/sysinternals/dd996900"&gt;Sysinternals ProcDump&lt;/a&gt;.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;When debugging a managed application, you can take debugging one step further by being both a managed and unmanaged (native) debugger. To do this, you use the CLR Debugger API instead of the DbgHelp API. &lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;What prompted this post was an issue that I hit while implementing the &lt;a href="http://msdn.microsoft.com/en-us/library/ms232505.aspx"&gt;ICorDebugUnmanagedCallback::DebugEvent&lt;/a&gt; function of my unmanaged interface implementation. I was finding that the target process was hung after I processed in-band debug events but not out-of-band debug events. This was despite calling &lt;a href="http://msdn.microsoft.com/en-us/library/ms231588.aspx"&gt;ICorDebugController::Continue&lt;/a&gt;, with or without calling &lt;a href="http://msdn.microsoft.com/en-us/library/ms231941.aspx"&gt;ICorDebugProcess::ClearCurrentException&lt;/a&gt; first.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;ICorDebug Interface:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Firstly, let’s take a step back and look at what it takes to get to the point of my issue. The goal in the initialization code is to get an instance of an &lt;a href="http://msdn.microsoft.com/en-us/library/ms230588.aspx"&gt;ICorDebug&lt;/a&gt; based object.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Below is an abridged version of the code to do this using .NET 4.0; I have omitted the error handling and some of the cleanup (IUnknown::Release) to keep the code brief.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Code"&gt;// Start COM&lt;/p&gt;    &lt;p class="Code"&gt;CoInitialize(NULL);&lt;/p&gt;    &lt;p class="Code"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Code"&gt;// Get a ICLRMetaHost instance (from .NET 4.0)&lt;/p&gt;    &lt;p class="Code"&gt;ICLRMetaHost* pCLRMetaHost = NULL;&lt;/p&gt;    &lt;p class="Code"&gt;CLRCreateInstance(CLSID_CLRMetaHost, IID_ICLRMetaHost, (LPVOID*)&amp;amp;pCLRMetaHost);&lt;/p&gt;    &lt;p class="Code"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Code"&gt;// Get an enumeration of the loaded runtimes in the target process (opened prior with OpenProcess)&lt;/p&gt;    &lt;p class="Code"&gt;IEnumUnknown* pEnumUnknown = NULL;&lt;/p&gt;    &lt;p class="Code"&gt;pCLRMetaHost-&amp;gt;EnumerateLoadedRuntimes(hProcess, &amp;amp;pEnumUnknown);&lt;/p&gt;    &lt;p class="Code"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Code"&gt;// Use the first runtime found (Note, you can only debug one runtime at once)&lt;/p&gt;    &lt;p class="Code"&gt;IUnknown* pUnknown = NULL;&lt;/p&gt;    &lt;p class="Code"&gt;ULONG ulFetched = 0;&lt;/p&gt;    &lt;p class="Code"&gt;pEnumUnknown-&amp;gt;Next(1, &amp;amp;pUnknown, &amp;amp;ulFetched);&lt;/p&gt;    &lt;p class="Code"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Code"&gt;// QueryInterface for the ICLRRuntimeInfo interface&lt;/p&gt;    &lt;p class="Code"&gt;ICLRRuntimeInfo* pCLRRuntimeInfo = NULL;&lt;/p&gt;    &lt;p class="Code"&gt;pUnknown-&amp;gt;QueryInterface(__uuidof(ICLRRuntimeInfo), (void **)&amp;amp;pCLRRuntimeInfo);&lt;/p&gt;    &lt;p class="Code"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Code"&gt;// Get the ICorDebug interface (this allows you to debug .NET 2.0 targets with the .NET 4.0 API)&lt;/p&gt;    &lt;p class="Code"&gt;pCLRRuntimeInfo-&amp;gt;GetInterface(CLSID_CLRDebuggingLegacy, IID_ICorDebug, (void **)&amp;amp;pCorDebug);&lt;/p&gt;    &lt;p class="Code"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Code"&gt;// Initialize the .NET 2.0 debugging interface&lt;/p&gt;    &lt;p class="Code"&gt;pCorDebug-&amp;gt;Initialize();&lt;/p&gt;    &lt;p class="Code"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Code"&gt;// Allocate our ICorDebugManagedCallback2 implementation and apply it to ICorDebug&lt;/p&gt;    &lt;p class="Code"&gt;CCorDebugManagedCallback2* pCorDebugManagedCallback2 = new CCorDebugManagedCallback2();&lt;/p&gt;    &lt;p class="Code"&gt;pCorDebug-&amp;gt;SetManagedHandler((ICorDebugManagedCallback*)pCorDebugManagedCallback2);&lt;/p&gt;    &lt;p class="Code"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Code"&gt;// Allocate our ICorDebugUnmanagedCallback implementation and apply it to ICorDebug&lt;/p&gt;    &lt;p class="Code"&gt;CCorDebugUnmanagedCallback* pCorDebugUnmanagedCallback = new CCorDebugUnmanagedCallback();&lt;/p&gt;    &lt;p class="Code"&gt;pCorDebug-&amp;gt;SetUnmanagedHandler((ICorDebugUnmanagedCallback*)pCorDebugUnmanagedCallback);&lt;/p&gt;    &lt;p class="Code"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Code"&gt;// Start debugging the process; returns the ICorDebugProcess we’ll need in the callbacks&lt;/p&gt;    &lt;p class="Code"&gt;pCorDebug-&amp;gt;DebugActiveProcess(nProcessId, TRUE, &amp;amp;pCorDebugProcess);&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;This code is pretty linear; if any call fails you are out of luck.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;By the end, you have associated your own managed and unmanaged callback classes with the &lt;b style="mso-bidi-font-weight: normal"&gt;ICorDebug&lt;/b&gt; object and are attached as a debugger. The code supports a target process using any of the.NET versions (v1.0, v1.1, v2.0, v4.0). Note that .NET v3.0 and v3.5 applications are actually v2.0 applications from a debugger point-of-view as these .NET releases just contain additional class libraries.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;My &lt;u&gt;managed&lt;/u&gt; callback implementation supports the &lt;b style="mso-bidi-font-weight: normal"&gt;IUnknown&lt;/b&gt;, &lt;b style="mso-bidi-font-weight: normal"&gt;ICorDebugManagedCallback&lt;/b&gt; and &lt;b style="mso-bidi-font-weight: normal"&gt;ICorDebugManagedCallback2&lt;/b&gt; interfaces. (I’m not going to discuss this code here).&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;My &lt;u&gt;unmanaged&lt;/u&gt; callback implementation supports the &lt;b style="mso-bidi-font-weight: normal"&gt;IUnknown&lt;/b&gt; and &lt;b style="mso-bidi-font-weight: normal"&gt;ICorDebugUnmanagedCallback&lt;/b&gt; interfaces. It is in this class that I had the issue.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;ICorDebugUnmanagedCallback Interface:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The &lt;b style="mso-bidi-font-weight: normal"&gt;ICorDebugUnmanagedCallback&lt;/b&gt; interface has just one function:&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Code"&gt;HRESULT DebugEvent (&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;[in] LPDEBUG_EVENT&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;pDebugEvent,&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;[in] BOOL&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;fOutOfBand&lt;/p&gt;    &lt;p class="Code"&gt;);&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The function provides a &lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms679308.aspx"&gt;DEBUG_EVENT&lt;/a&gt; structure in the same way that &lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms681423.aspx"&gt;WaitForDebugEvent&lt;/a&gt; does. This is not surprising as under the covers, that is what the .NET 4.0 API is using – it is just passing it to us. As such, the rules for handling a DEBUG_EVENT structure apply here too.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Namely, close the handle passed with the CREATE_PROCESS_DEBUG_EVENT and LOAD_DLL_DEBUG_EVENT events.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Following the &lt;a href="http://msdn.microsoft.com/en-us/library/ms232505.aspx"&gt;DebugEvent&lt;/a&gt; documentation, I ended up with (roughly) the code below – &lt;b style="mso-bidi-font-weight: normal"&gt;&lt;i style="mso-bidi-font-style: normal"&gt;which hangs the target process.&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;STDMETHODIMP CCorDebugUnmanagedCallback::DebugEvent(LPDEBUG_EVENT pDebugEvent, BOOL fOutOfBand)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;BOOL bClear = TRUE;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="color: blue; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;switch&lt;/span&gt;&lt;span style="mso-no-proof: yes"&gt; (pDebugEvent-&amp;gt;dwDebugEventCode)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;case&lt;/span&gt; EXCEPTION_DEBUG_EVENT:&lt;span style="color: green"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;if&lt;/span&gt; (&lt;/span&gt;pDebugEvent-&amp;gt;u.Exception.dwFirstChance != 0)&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;bClear = FALSE;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;break&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;case&lt;/span&gt; CREATE_PROCESS_DEBUG_EVENT:&lt;span style="color: green"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;if&lt;/span&gt; (pDebugEvent-&amp;gt;u.CreateProcessInfo.hFile)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;CloseHandle(pDebugEvent-&amp;gt;u.CreateProcessInfo.hFile);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;break&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;case&lt;/span&gt; LOAD_DLL_DEBUG_EVENT:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;if&lt;/span&gt; (pDebugEvent-&amp;gt;u.LoadDll.hFile)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;CloseHandle(pDebugEvent-&amp;gt;u.LoadDll.hFile);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;break&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;if&lt;/span&gt; (&lt;/span&gt;bClear)&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;pCorDebugProcess-&amp;gt;ClearCurrentException(pDebugEvent-&amp;gt;dwThreadId);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;pCorDebugProcess-&amp;gt;Continue(fOutOfBand);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;return&lt;/span&gt; S_OK;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;If you know what to look for, the answer to the ‘hang’ issue is on the MSDN &lt;a href="http://msdn.microsoft.com/en-us/library/ms232505.aspx"&gt;page&lt;/a&gt;:&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;i style="mso-bidi-font-style: normal"&gt;You can call &lt;b&gt;ICorDebugController::Continue&lt;/b&gt; only on a Win32 thread and only when continuing past an out-of-band event.&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;So what does this really mean? &lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;What is means is that you must call &lt;b style="mso-bidi-font-weight: normal"&gt;ICorDebugController::Continue&lt;/b&gt; from &lt;u&gt;any other thread&lt;/u&gt; than the one servicing the callback if the debug event is in-band (fOutOfBand == FALSE). The reason for this is to stop a race condition. In-band debug events can be interrupted by out-of-band debug events – that is, the &lt;b style="mso-bidi-font-weight: normal"&gt;DebugEvent&lt;/b&gt; function can be firing multiple times concurrently. By forcing the continuation on an alternate thread, the race condition is averted.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;I’m being brief here (on purpose) as I don’t want to incorrectly dissect for you the extremely complex internals of the CLR. You just need to know that you must use another thread for the hang to be averted.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;So what does the code look like now?&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;It’s something like this:&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;STDMETHODIMP CCorDebugUnmanagedCallback::DebugEvent(LPDEBUG_EVENT pDebugEvent, BOOL fOutOfBand)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;BOOL bClear = TRUE;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="color: blue; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;switch&lt;/span&gt;&lt;span style="mso-no-proof: yes"&gt; (pDebugEvent-&amp;gt;dwDebugEventCode)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;case&lt;/span&gt; EXCEPTION_DEBUG_EVENT:&lt;span style="color: green"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;if&lt;/span&gt; (&lt;/span&gt;pDebugEvent-&amp;gt;u.Exception.dwFirstChance != 0)&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;bClear = FALSE;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;break&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;case&lt;/span&gt; CREATE_PROCESS_DEBUG_EVENT:&lt;span style="color: green"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;if&lt;/span&gt; (pDebugEvent-&amp;gt;u.CreateProcessInfo.hFile)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;CloseHandle(pDebugEvent-&amp;gt;u.CreateProcessInfo.hFile);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;break&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;case&lt;/span&gt; LOAD_DLL_DEBUG_EVENT:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;if&lt;/span&gt; (pDebugEvent-&amp;gt;u.LoadDll.hFile)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;CloseHandle(pDebugEvent-&amp;gt;u.LoadDll.hFile);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;break&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;if&lt;/span&gt; (&lt;/span&gt;bClear)&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;pCorDebugProcess-&amp;gt;ClearCurrentException(pDebugEvent-&amp;gt;dwThreadId);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;if&lt;/span&gt; (fOutOfBand&lt;/span&gt;)&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;pCorDebugProcess-&amp;gt;Continue(TRUE);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;else&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;SetEvent(hEventContinueBegin);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;WaitForSingleEvent(hEventContinueDone, INFINITE);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;return&lt;/span&gt; S_OK;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;DWORD WINAPI CCorDebugUnmanagedCallbackThreadProc(LPVOID lpParameter)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;while&lt;/span&gt; (!bQuit)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;switch&lt;/span&gt; (WaitForSingleObject(hEventContinueBegin, 1000))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;case&lt;/span&gt; WAIT_OBJECT_0:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;pCorDebugProcess-&amp;gt;Continue(FALSE);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;SetEvent(hEventContinueDone);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;break&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;return&lt;/span&gt; 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;For out-of-band debug events, nothing has changed; the &lt;b style="mso-bidi-font-weight: normal"&gt;ICorDebugProcess::Continue&lt;/b&gt; call is made locally. &lt;/p&gt;    &lt;p class="Text"&gt;For in-band debug events, an event is set to trigger the &lt;b style="mso-bidi-font-weight: normal"&gt;ICorDebugProcess::Continue&lt;/b&gt; on a &lt;b style="mso-bidi-font-weight: normal"&gt;&lt;i style="mso-bidi-font-style: normal"&gt;dedicated&lt;/i&gt;&lt;/b&gt; thread. The dedicated thread sets an event to tell the callback thread that the Continue has been done. &lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Note that the above code is a massive simplification of what is actually required – there is a ton of code missing that passes all the interface pointers &amp;amp; handles around and to create &amp;amp; shutdown the thread at the correct time.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;In-band vs. Out-of-band:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;So what is the difference between In-band vs. Out-of-band debug events?&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;An out-of-band debug event causes all threads in the target process to suspend (it’s exactly the same as native debugger induced suspend). As such, it is &lt;u&gt;not&lt;/u&gt; possible to use the managed debugging interfaces to gather information from the target – as the managed debugging thread is suspended.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;An in-band debug event only causes the managed threads in the target process to suspend – the managed debugging thread is still running. As such, it &lt;u&gt;is&lt;/u&gt; possible to use the managed debugging interfaces to gather information from the target.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The act of using the managed debugging thread from within an in-band debug event can cause an out-of-band debug event (the common examples being first chance exceptions).&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Cleanup/Detach:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Just to be complete, below is the code to cleanup and (optionally) detach from the &lt;b style="mso-bidi-font-weight: normal"&gt;ICorDebug&lt;/b&gt; session. In .NET 4.0, the &lt;a href="http://msdn.microsoft.com/en-us/site/ms230164"&gt;I&lt;span style="mso-bidi-font-size: 10.0pt"&gt;CorDebugController::Detach&lt;/span&gt;&lt;/a&gt; will terminate the process if interop debugging (passing TRUE to &lt;a href="http://msdn.microsoft.com/en-us/library/ms233510.aspx"&gt;ICorDebug::DebugActiveProcess&lt;/a&gt;) is used. Interop debugging is not supported in .NET 2.0 on x64 - so this is less of an issue.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-no-proof: yes"&gt;/&lt;/span&gt;/ If the target process is still running, we need to detach.&lt;/p&gt;    &lt;p class="Code"&gt;if (bDetachNeeded)&lt;/p&gt;    &lt;p class="Code"&gt;{&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;ICorDebugController* pCorDebugController = NULL;&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;pCorDebugProcess-&amp;gt;QueryInterface(__uuidof(ICorDebugController), (void**)&amp;amp;pCorDebugController);&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;pCorDebugController-&amp;gt;Stop(INFINITE /* Note: Value is ignored – always INFINITE */);&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;pCorDebugController-&amp;gt;Detach();&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;pCorDebugController-&amp;gt;Release();&lt;/p&gt;    &lt;p class="Code"&gt;}&lt;/p&gt;    &lt;p class="Code"&gt;pCorDebug-&amp;gt;SetUnmanagedHandler(NULL);&lt;/p&gt;    &lt;p class="Code"&gt;pCorDebugUnmanagedCallback-&amp;gt;Release();&lt;/p&gt;    &lt;p class="Code"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Code"&gt;pCorDebug-&amp;gt;SetManagedHandler(NULL);&lt;/p&gt;    &lt;p class="Code"&gt;pCorDebugManagedCallback2-&amp;gt;Release();&lt;/p&gt;    &lt;p class="Code"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Code"&gt;pCorDebug-&amp;gt;Terminate();&lt;/p&gt;    &lt;p class="Code"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Code"&gt;pCorDebug-&amp;gt;Release();&lt;/p&gt;    &lt;p class="Code"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Code"&gt;CoUninitialize();&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;There is still quite a big bit of code required to implement the debugger completely. &lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;You’ll need an &lt;b style="mso-bidi-font-weight: normal"&gt;ICorDebugManagedCallback&lt;/b&gt; implementation that handles process exiting, attaching to an application domain (&lt;a href="http://msdn.microsoft.com/en-us/site/ms230107"&gt;ICorDebugAppDomain::Attach&lt;/a&gt;), handling name changes, and continuation. &lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Plus, if you want to support .NET 2.0 debugging without .NET 4.0 installed, you’ll need to use &lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms684175.aspx"&gt;LoadLibrary&lt;/a&gt;/&lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms683212.aspx"&gt;GetProcAddress&lt;/a&gt; to call .NET 4.0 (optionally), and fall back to the .NET 2.0 &lt;a href="http://msdn.microsoft.com/en-us/library/ms232092.aspx"&gt;GetVersionFromProcess&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/ms232068.aspx"&gt;CreateDebuggingInterfaceFromVersion&lt;/a&gt; functions.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Conclusion:&lt;span style="color: black"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The CLR Debugging API is not for the faint at heart.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;There are numerous pitfalls when using the &lt;b style="mso-bidi-font-weight: normal"&gt;ICorDebug&lt;/b&gt; interface against different versions of the CLR, different versions of Windows, different architectures, and with or without interop debugging.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;If you have any questions about the API, post a comment here and I’ll do my best to answer them for you.&lt;/p&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10242485" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Debugging/">Debugging</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Deadlock/">Deadlock</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Managed/">Managed</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/debug/">debug</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Debugger/">Debugger</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Andrew/">Andrew</category></item><item><title>Where Did My Disk I/O Go?</title><link>http://blogs.msdn.com/b/ntdebugging/archive/2011/11/23/where-did-my-disk-i-o-go.aspx</link><pubDate>Wed, 23 Nov 2011 20:19:03 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10241068</guid><dc:creator>ntdebug</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ntdebugging/rsscomments.aspx?WeblogPostID=10241068</wfw:commentRss><comments>http://blogs.msdn.com/b/ntdebugging/archive/2011/11/23/where-did-my-disk-i-o-go.aspx#comments</comments><description>&lt;div class="WordSection1"&gt;   &lt;p class="Text"&gt;Hello, Mr. Ninja back again.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;I recently discovered that although my team often tracks I/O from the file system through to the disk controller, we have never publicly documented the steps required to do this.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This seems like a great opportunity for a blog because most of the structures are known, and they are even included in the public symbols.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;When debugging a system that is hung, slow, or otherwise unresponsive you will likely encounter an IRP that has been sent from ntfs to the disk.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Running !irp against such a request will show that the request has gone to disk.sys, but that is not really where the story ends.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Below is one such example of ntfs waiting with an IRP that appears to be stuck in disk.sys.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;You can determine what driver last handled the IRP by looking for the &amp;gt; character, this points to the current io stack location.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;2: kd&amp;gt; !thread fffffa804f151040 e&lt;/p&gt;    &lt;p class="Debug"&gt;THREAD fffffa804f151040&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Cid 0004.33f8&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Teb: 0000000000000000 Win32Thread: 0000000000000000 WAIT: (Executive) KernelMode Non-Alertable&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;fffff8803836e730&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;NotificationEvent&lt;/p&gt;    &lt;p class="Debug"&gt;IRP List:&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #c00000"&gt;fffffa804f379440&lt;/span&gt;: (0006,0310) Flags: 00060043&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Mdl: fffffa803c854090&lt;/p&gt;    &lt;p class="Debug"&gt;Not impersonating&lt;/p&gt;    &lt;p class="Debug"&gt;DeviceMap&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;fffff8a000008720&lt;/p&gt;    &lt;p class="Debug"&gt;Owning Process&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;fffffa8030cdeb30&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Image:&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;System&lt;/p&gt;    &lt;p class="Debug"&gt;Attached Process&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;N/A&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Image:&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;N/A&lt;/p&gt;    &lt;p class="Debug"&gt;Wait Start TickCount&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;34797397&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Ticks: 1118 (0:00:00:17.440)&lt;/p&gt;    &lt;p class="Debug"&gt;Context Switch Count&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;5893&lt;/p&gt;    &lt;p class="Debug"&gt;UserTime&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;00:00:00.000&lt;/p&gt;    &lt;p class="Debug"&gt;KernelTime&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;00:00:00.296&lt;/p&gt;    &lt;p class="Debug"&gt;Win32 Start Address nt!ExpWorkerThread (0xfffff80002ae2ef0)&lt;/p&gt;    &lt;p class="Debug"&gt;Stack Init fffff88038370db0 Current fffff8803836e0d0&lt;/p&gt;    &lt;p class="Debug"&gt;Base fffff88038371000 Limit fffff8803836b000 Call 0&lt;/p&gt;    &lt;p class="Debug"&gt;Priority 16 BasePriority 13 UnusualBoost 0 ForegroundBoost 0 IoPriority 2 PagePriority 5&lt;/p&gt;    &lt;p class="Debug"&gt;Child-SP&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RetAddr&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Call Site&lt;/p&gt;    &lt;p class="Debug"&gt;fffff880`3836e110 fffff800`02addf32 nt!KiSwapContext+0x7a&lt;/p&gt;    &lt;p class="Debug"&gt;fffff880`3836e250 fffff800`02ae074f nt!KiCommitThreadWait+0x1d2&lt;/p&gt;    &lt;p class="Debug"&gt;fffff880`3836e2e0 fffff880`0164b3ff nt!KeWaitForSingleObject+0x19f&lt;/p&gt;    &lt;p class="Debug"&gt;fffff880`3836e380 fffff880`01654224 Ntfs!NtfsNonCachedIo+0x23f&lt;/p&gt;    &lt;p class="Debug"&gt;fffff880`3836e550 fffff880`0164f507 Ntfs!NtfsNonCachedUsaWrite+0x64&lt;/p&gt;    &lt;p class="Debug"&gt;fffff880`3836e5e0 fffff880`016501a3 Ntfs!NtfsCommonWrite+0x2ca4&lt;/p&gt;    &lt;p class="Debug"&gt;fffff880`3836e790 fffff800`02abebff Ntfs!NtfsFsdWrite+0x1c3&lt;/p&gt;    &lt;p class="Debug"&gt;fffff880`3836ea10 fffff800`02b1cc00 nt!IoSynchronousPageWrite+0x24f&lt;/p&gt;    &lt;p class="Debug"&gt;fffff880`3836ea90 fffff800`02b1b2d8 nt!MiFlushSectionInternal+0xb30&lt;/p&gt;    &lt;p class="Debug"&gt;fffff880`3836ecc0 fffff800`02b1a83c nt!MmFlushSection+0x1f4&lt;/p&gt;    &lt;p class="Debug"&gt;fffff880`3836ed80 fffff880`01653bb7 nt!CcFlushCache+0x7bc&lt;/p&gt;    &lt;p class="Debug"&gt;fffff880`3836ee80 fffff880`01700037 Ntfs!LfsFlushLfcb+0x647&lt;/p&gt;    &lt;p class="Debug"&gt;fffff880`3836f000 fffff880`017025b0 Ntfs!LfsFlushToLsnPriv+0x143&lt;/p&gt;    &lt;p class="Debug"&gt;fffff880`3836f090 fffff880`0172445f Ntfs!LfsWriteLfsRestart+0xf0&lt;/p&gt;    &lt;p class="Debug"&gt;fffff880`3836f0d0 fffff880`017242d0 Ntfs!LfsCloseLogFile+0x17f&lt;/p&gt;    &lt;p class="Debug"&gt;fffff880`3836f190 fffff880`01715810 Ntfs!NtfsStopLogFile+0x70&lt;/p&gt;    &lt;p class="Debug"&gt;fffff880`3836f1d0 fffff880`0172bfdb Ntfs!NtfsPerformDismountOnVcb+0x184&lt;/p&gt;    &lt;p class="Debug"&gt;2: kd&amp;gt; !irp &lt;span style="color: #c00000"&gt;fffffa804f379440&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Irp is active with 8 stacks 5 is current (= 0xfffffa804f379630)&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;Mdl=fffffa803c854090: No System Buffer: Thread fffffa804f151040:&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Irp stack trace.&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;cmd&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;flg cl Device&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;File&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Completion-Context&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;[&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0, 0]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0 00000000 00000000 00000000-00000000&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Args: 00000000 00000000 00000000 00000000&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;[&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0, 0]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0 00000000 00000000 00000000-00000000&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Args: 00000000 00000000 00000000 00000000&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;[&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0, 0]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0 00000000 00000000 00000000-00000000&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Args: 00000000 00000000 00000000 00000000&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;[&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0, 0]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0 00000000 00000000 00000000-00000000&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Args: 00000000 00000000 00000000 00000000&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;&amp;gt;[&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;4,34]&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1c e0 &lt;span style="color: #00b050"&gt;fffffa8032052060 &lt;/span&gt;00000000 fffff880011bb010-fffffa803a604c90 Success Error Cancel&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;\Driver\Disk&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;volmgr!VmpReadWriteCompletionRoutine&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;Args: 00001000 00000000 b5f8a000 00000000&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;[&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;4, 0]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;c e0 fffffa803a604b40 00000000 fffff88001cb5150-fffffa803a1ec180 Success Error Cancel&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;\Driver\volmgr&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;volsnap!VspRefCountCompletionRoutine&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Args: 00001000 00000000 b5e8a000 00000000&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;[&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;4, 0]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;c e1 fffffa803a1ec030 00000000 fffff8800164c344-fffff8803836e728 Success Error Cancel pending&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;\Driver\volsnap&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Ntfs!NtfsMasterIrpSyncCompletionRoutine&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Args: 00001000 00000000 b5e8a000 00000000&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;[&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;4, 0]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0 fffffa803d1bf030 fffffa803b268540 00000000-00000000&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;\FileSystem\Ntfs&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Args: 00001000 00000000 01d0c000 00000000&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;To learn more about what disk.sys is doing with this request we start by looking at the device extension.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Disk.sys is a miniclass driver, it depends on classpnp.sys to do most of the work.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The device extension will be a FUNCTIONAL_DEVICE_EXTENSION structure from classpnp.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;2: kd&amp;gt; !devobj &lt;span style="color: #00b050"&gt;fffffa8032052060&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Device object (fffffa8032052060) is for:&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;DR36 \Driver\Disk DriverObject fffffa80319fa990&lt;/p&gt;    &lt;p class="Debug"&gt;Current Irp 00000000 RefCount 0 Type 00000007 Flags 01002050&lt;/p&gt;    &lt;p class="Debug"&gt;Vpb fffffa803204aba0 Dacl fffff9a100463450 DevExt &lt;span style="color: #0070c0"&gt;fffffa80320521b0 &lt;/span&gt;DevObjExt fffffa8032052858 Dope fffffa803204ab30&lt;/p&gt;    &lt;p class="Debug"&gt;ExtensionFlags (0x00000800)&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Unknown flags 0x00000800&lt;/p&gt;    &lt;p class="Debug"&gt;AttachedDevice (Upper) fffffa8032052b90 \Driver\partmgr&lt;/p&gt;    &lt;p class="Debug"&gt;AttachedTo (Lower) fffffa8031dcc060 \Driver\mpio&lt;/p&gt;    &lt;p class="Debug"&gt;Device queue is not busy.&lt;/p&gt;    &lt;p class="Debug"&gt;2: kd&amp;gt; dt classpnp!_FUNCTIONAL_DEVICE_EXTENSION &lt;span style="color: #0070c0"&gt;fffffa80320521b0&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x000 Version&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 3&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x008 DeviceObject&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0xfffffa80`32052060 _DEVICE_OBJECT&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x000 CommonExtension&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;: _COMMON_DEVICE_EXTENSION&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x200 LowerPdo&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0xfffffa80`31dcc060 _DEVICE_OBJECT&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x208 DeviceDescriptor : 0xfffffa80`320afeb0 _STORAGE_DEVICE_DESCRIPTOR&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x210 AdapterDescriptor : 0xfffffa80`32043910 _STORAGE_ADAPTER_DESCRIPTOR&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x218 DevicePowerState : 1 ( PowerDeviceD0 )&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x21c DMByteSkew&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x220 DMSkew&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x224 DMActive&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0 ''&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x228 DiskGeometry&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: _DISK_GEOMETRY&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x240 SenseData&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0xfffffa80`320a65c0 _SENSE_DATA&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x248 TimeOutValue&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0x3c&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x24c DeviceNumber&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0x24&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x250 SrbFlags&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0x200102&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x254 ErrorCount&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x258 LockCount&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0n1&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x25c ProtectedLockCount : 0n0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x260 InternalLockCount : 0n0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x268 EjectSynchronizationEvent : _KEVENT&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x280 DeviceFlags&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 4&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x282 SectorShift&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0x9 ''&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x283 CdbForceUnitAccess : 0 ''&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;+0x288 MediaChangeDetectionInfo : (null)&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x290 Unused1&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: (null)&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x298 Unused2&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: (null)&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x2a0 KernelModeMcnContext : _FILE_OBJECT_EXTENSION&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x2b8 MediaChangeCount : 6&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x2c0 DeviceDirectory&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;: 0xffffffff`800003cc Void&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x2c8 ReleaseQueueSpinLock : 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x2d0 ReleaseQueueIrp&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;: (null)&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x2d8 ReleaseQueueSrb&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;: _SCSI_REQUEST_BLOCK&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x330 ReleaseQueueNeeded : 0 ''&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x331 ReleaseQueueInProgress : 0 ''&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x332 ReleaseQueueIrpFromPool : 0 ''&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x333 FailurePredicted : 0 ''&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x334 FailureReason&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x338 FailurePredictionInfo : (null)&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x340 PowerDownInProgress : 0 ''&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x344 EnumerationInterlock : 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x348 ChildLock&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: _KEVENT&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x360 ChildLockOwner&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;: (null)&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x368 ChildLockAcquisitionCount : 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x36c ScanForSpecialFlags : 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x370 PowerRetryDpc&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: _KDPC&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x3b0 PowerRetryTimer&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;: _KTIMER&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x3f0 PowerContext&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: _CLASS_POWER_CONTEXT&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x478 PrivateFdoData&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;: &lt;span style="color: #ffc000"&gt;0xfffffa80`320bc010 _CLASS_PRIVATE_FDO_DATA&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x480 Reserved2&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x488 Reserved3&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x490 Reserved4&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The information about requests is stored in the PrivateFdoData .&lt;/p&gt;    &lt;p class="Debug"&gt;2: kd&amp;gt; dt &lt;span style="color: #ffc000"&gt;0xfffffa80`320bc010 _CLASS_PRIVATE_FDO_DATA&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;CLASSPNP!_CLASS_PRIVATE_FDO_DATA&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x000 SqmData&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0x62a05&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x008 TrackingFlags&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x00c UpdateDiskPropertiesWorkItemActive : 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x010 LocalMinWorkingSetTransferPackets : 0x200&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x014 LocalMaxWorkingSetTransferPackets : 0x800&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x018 AllFdosListEntry : _LIST_ENTRY [ 0xfffffa80`320be028 - 0xfffffa80`320b8028 ]&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x028 Perf&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: &amp;lt;unnamed-tag&amp;gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x038 HackFlags&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x040 HotplugInfo&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: _STORAGE_HOTPLUG_INFO&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x048 Retry&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: &amp;lt;unnamed-tag&amp;gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x0f0 TimerInitialized : 0 ''&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x0f1 LoggedTURFailureSinceLastIO : 0 ''&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x0f2 LoggedSYNCFailure : 0 ''&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x0f3 ReleaseQueueIrpAllocated : 0x1 ''&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x0f8 ReleaseQueueIrp&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;: 0xfffffa80`320bcc40 _IRP&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="color: #7030a0"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x100 AllTransferPacketsList : _LIST_ENTRY [ 0xfffffa80`320bbe60 - 0xfffffa80`4ed53d10 ]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x110 FreeTransferPacketsList : _SLIST_HEADER&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x120 NumFreeTransferPackets : 0xff&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x124 NumTotalTransferPackets : 0x100&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x128 DbgPeakNumTransferPackets : 0x100&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x130 DeferredClientIrpList : _LIST_ENTRY [ 0xfffffa80`320bc140 - 0xfffffa80`320bc140 ]&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x140 HwMaxXferLen&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0x80000&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x148 SrbTemplate&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: _SCSI_REQUEST_BLOCK&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x1a0 SpinLock&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x1a8 LastKnownDriveCapacityData : _READ_CAPACITY_DATA_EX&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x1b4 IsCachedDriveCapDataValid : 0x1 ''&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x1b8 ErrorLogNextIndex : 6&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x1c0 ErrorLogs&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: [16] _CLASS_ERROR_LOG_DATA&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x9c0 NumHighPriorityPagingIo : 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x9c4 MaxInterleavedNormalIo : 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x9c8 ThrottleStartTime : _LARGE_INTEGER 0x0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x9d0 ThrottleStopTime : _LARGE_INTEGER 0x0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x9d8 LongestThrottlePeriod : _LARGE_INTEGER 0x0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x9e0 IdlePrioritySupported : 0x1 ''&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x9e8 IdleListLock&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x9f0 IdleIrpList&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: _LIST_ENTRY [ 0xfffffa80`320bca00 - 0xfffffa80`320bca00 ]&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0xa00 IdleTimer&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: _KTIMER&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0xa40 IdleDpc&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: _KDPC&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0xa80 IdleTimerInterval : 0x19&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0xa82 StarvationCount&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;: 0x14&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0xa84 IdleTimerTicks&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;: 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0xa88 IdleTicks&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0xa8c IdleIoCount&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0xa90 IdleTimerStarted : 0n0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0xa98 LastIoTime&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: _LARGE_INTEGER 0x1cc8bde`4f571cca&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0xaa0 ActiveIoCount&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0n1&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0xaa4 ActiveIdleIoCount : 0n0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0xaa8 InterpretSenseInfo : (null)&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0xab0 MaxPowerOperationRetryCount : 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0xab8 PowerProcessIrp&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;: 0xfffffa80`320bd010 _IRP&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0xac0 PerfCounterFrequency : _LARGE_INTEGER 0x23c3c4&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The outstanding requests are stored in the &lt;span style="color: #7030a0"&gt;AllTransferPacketsList&lt;/span&gt;.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Classpnp uses a transfer packet to send the request to the lower level drivers.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This allows the request to be split into smaller packets if necessary, and for the request to be retried if there is a failure.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;We can dump the AllTransferPacketsList with !list and then search for our irp, it will be in the OriginalIrp field of one of the transfer packets.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Note that the output from dt will displayed with a `, while the output from !thread does not, so you will need to add a ` when searching through the !list output.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Also, there may be multiple transfer packets with the same OriginalIrp.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;2: kd&amp;gt; !list &amp;quot;-t classpnp!_TRANSFER_PACKET.AllPktsListEntry.Flink -e -x \&amp;quot;??@$extret; dt classpnp!_TRANSFER_PACKET @$extret\&amp;quot; &lt;span style="color: #7030a0"&gt;0xfffffa80`320bbe60&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p class="Debug"&gt;…&lt;/p&gt;    &lt;p class="Debug"&gt;??@$extret; dt classpnp!_TRANSFER_PACKET @$extret&lt;/p&gt;    &lt;p class="Debug"&gt;unsigned int64 0xfffffa80`399ad5e0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x000 AllPktsListEntry : _LIST_ENTRY [ 0xfffffa80`3bae2b40 - 0xfffffa80`3bc7cb30 ]&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x010 SlistEntry&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: _SLIST_ENTRY&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x020 Irp&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: &lt;span style="color: #00b0f0"&gt;0xfffffa80`3bb71570 &lt;/span&gt;_IRP&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x028 Fdo&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0xfffffa80`32052060 _DEVICE_OBJECT&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x030 OriginalIrp&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: &lt;span style="color: #c00000"&gt;0xfffffa80`4f379440 &lt;/span&gt;_IRP&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x038 CompleteOriginalIrpWhenLastPacketCompletes : 0x1 ''&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x03c NumRetries&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 8&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x040 RetryTimer&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: _KTIMER&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x080 RetryTimerDPC&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: _KDPC&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x0c0 RetryIn100nsUnits : 0n0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x0c8 SyncEventPtr&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: (null)&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x0d0 DriverUsesStartIO : 0 ''&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x0d1 InLowMemRetry&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0 ''&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x0d8 LowMemRetry_remainingBufPtr : (null)&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x0e0 LowMemRetry_remainingBufLen : 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x0e8 LowMemRetry_nextChunkTargetLocation : _LARGE_INTEGER 0x0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x0f0 BufPtrCopy&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0xfffffa80`40d79000&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;quot;RCRD(&amp;quot;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x0f8 BufLenCopy&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0x1000&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x100 TargetLocationCopy : _LARGE_INTEGER 0xb5f8a000&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x108 SrbErrorSenseData : _SENSE_DATA&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x120 Srb&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: _SCSI_REQUEST_BLOCK&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x178 UsePartialMdl&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0 ''&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x180 PartialMdl&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: 0xfffffa80`3bfda010 _MDL&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x188 RetryHistory&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;: (null)&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;+0x190 RequestStartTime : 0&lt;/p&gt;    &lt;p class="Debug"&gt;…&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Now we can view the irp that classpnp sent to the lower level drivers and determine what it is doing.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;2: kd&amp;gt; !irp &lt;span style="color: #00b0f0"&gt;0xfffffa80`3bb71570&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Irp is active with 3 stacks 3 is current (= 0xfffffa80`3bb71688)&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;Mdl=fffffa803c854090: No System Buffer: Thread 00000000:&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Irp stack trace.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Pending has been returned&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;cmd&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;flg cl Device&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;File&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Completion-Context&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;[&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0, 0]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;2 00000000 00000000 00000000-00000000&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Args: 00000000 00000000 00000000 ffffffffc0000185&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;gt;[&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;f, 0]&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1c&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0 fffffa8031dcc060 00000000 fffff8800107d1a0-fffffa80413ec4c0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;\Driver\elxstor&amp;#160; mpio!MPIOPdoCompletion&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Args: fffffa80399ad700 00000000 00000000 fffffa80413ec4c0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;[&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;f, 0]&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1c e1 fffffa8031dcc060 00000000 fffff88001d61a00-fffffa80399ad5e0 Success Error Cancel pending&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;\Driver\mpio&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;CLASSPNP!TransferPktComplete&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Args: fffffa80399ad700 00000000 00000000 fffffa80413ec4c0&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;We can see that the request has been sent to the disk driver.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;More specifically the request has been sent to the storport miniport driver elxstor.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;From this data we can usually assume that the request has been sent to the disk drive and we are waiting for the disk to respond.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;There may be conditions where the request is stuck in storport, or in the miniport, however those conditions are beyond the scope of this article.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;As you can see, there are several drivers between the disk.sys mini class driver and the actual physical disk drive.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;It is often necessary to determine how far down the storage driver stack a request has been before you can determine where it is stuck.&lt;/p&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10241068" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Debugging/">Debugging</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Architecture/">Architecture</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/windows/">windows</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/i_2F00_o/">i/o</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/internals/">internals</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Debug+Ninja/">Debug Ninja</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Disk/">Disk</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/windows+internals/">windows internals</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/x64/">x64</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/windbg/">windbg</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/debug/">debug</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/kernel/">kernel</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/storport/">storport</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/SCSI/">SCSI</category></item><item><title>Call Stacks for Pool Allocations</title><link>http://blogs.msdn.com/b/ntdebugging/archive/2011/10/31/call-stacks-for-pool-allocations.aspx</link><pubDate>Mon, 31 Oct 2011 20:53:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10231822</guid><dc:creator>ntdebug</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ntdebugging/rsscomments.aspx?WeblogPostID=10231822</wfw:commentRss><comments>http://blogs.msdn.com/b/ntdebugging/archive/2011/10/31/call-stacks-for-pool-allocations.aspx#comments</comments><description>&lt;div class="WordSection1"&gt;   &lt;p class="Text"&gt;Hello, it's the Debug Ninja back again for another NtDebugging Blog article.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;For as long as I can remember user mode debuggers have had an easy way to get call stacks for heap allocations.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;On more recent versions of Windows this has been as simple as using &lt;a href="http://support.microsoft.com/kb/268343"&gt;gflags +ust and umdh&lt;/a&gt; or &lt;a href="http://msdn.microsoft.com/en-us/library/ff563189.aspx"&gt;!heap -k&lt;/a&gt;.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Kernel debuggers have not always had an easy way to determine who allocated a pool block.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Sure, we have pool tags to help us out, but often a programmer will use the same tag in many places and devalue this as a troubleshooting technique.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Fortunately, starting in Windows Vista and Server 2008, kernel debuggers can get call stacks from pool allocations.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;We can even get call stacks from pool frees.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This little known technique is not quite as useful as gflags +ust is for heap, but when it &lt;span class="GramE"&gt;is needed&lt;/span&gt; it is very useful.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;First, you need to turn on special pool using driver verifier.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Verifier will obtain and track the call stack for the allocation and the free, so this technique will not work with traditional special pool as documented in &lt;a href="http://support.microsoft.com/kb/188831"&gt;KB188831&lt;/a&gt; because those settings do not use driver verifier.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Because special pool requires additional memory overhead to run, this technique is not valuable for large memory leaks.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;However, this technique is a good way to determine what code allocated or freed your pool block in other conditions.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;For example, this works well if you find that pool has been freed when you expected it to be allocated.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This also works for smaller memory leaks, especially those for which you can easily reproduce the leak.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Analyzing the allocations and stacks for a leak &lt;span class="GramE"&gt;must be done&lt;/span&gt; by hand, as there is no umdh-like tool for kernel mode.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Step 1 - Turning on verifier&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;In this example I am using Sysinternals’ &lt;a href="http://download.sysinternals.com/Files/Notmyfault.zip"&gt;notmyfault&lt;/a&gt; tool to generate the pool allocations.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Because I know the driver in question I set verifier to only monitor that driver.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Note that a reboot is required to make this setting take effect.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Verifier /flags 1 /driver myfault.sys&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Step 2 - Finding the pool allocation to analyze&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;For this example I am going to find the call stack of a leaked pool allocation.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;First find the tag that is using the most pool by using !poolused.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;kd&amp;gt; !poolused 4&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;Sorting by&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Paged Pool Consumed&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Pool Used:&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NonPaged&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Paged&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;Tag&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Allocs&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Used&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Allocs&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Used&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;Leak&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;23 23552000&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;UNKNOWN pooltag 'Leak', please update pooltag.txt&lt;/p&gt;    &lt;p class="Debug"&gt;CM31&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;20520 18514560&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;Internal Configuration manager allocations , Binary: nt!cm&lt;/p&gt;    &lt;p class="Debug"&gt;CIcr&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;2977&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;8511504&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;Code Integrity allocations for image integrity checking , Binary: ci.dll &lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Next find the pool allocations for that tag with !poolfind.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;There is some guessing to be done with all pool leak debugging techniques; you can’t be sure that the allocation you’re looking at has really been leaked and is not just in a state where it has not yet been freed.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;You need to make an educated guess because there is no umdh-type functionality to analyze allocates and frees.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;If you have the benefit of a live debug you can go the debugger and check back later to see if the memory has been freed or not.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;kd&amp;gt; !poolfind &lt;span style="background: yellow; mso-highlight: yellow"&gt;Leak&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Scanning large pool allocation table for Tag: Leak (fffffa8002e00000 : fffffa8002f80000)&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;*fffff8a006a00000 :large page allocation, Tag&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is Leak, size&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is 0xfa000 bytes&lt;/p&gt;    &lt;p class="Debug"&gt;*fffff8a0058fa000 :large page allocation, Tag&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is Leak, size&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is 0xfa000 bytes&lt;/p&gt;    &lt;p class="Debug"&gt;*fffff8a006200000 :large page allocation, Tag&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is Leak, size&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is 0xfa000 bytes&lt;/p&gt;    &lt;p class="Debug"&gt;*fffff8a0068fa000 :large page allocation, Tag&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is Leak, size&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is 0xfa000 bytes&lt;/p&gt;    &lt;p class="Debug"&gt;*fffff8a0060fa000 :large page allocation, Tag&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is Leak, size&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is 0xfa000 bytes&lt;/p&gt;    &lt;p class="Debug"&gt;*fffff8a005a00000 :large page allocation, Tag&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is Leak, size&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is 0xfa000 bytes&lt;/p&gt;    &lt;p class="Debug"&gt;*fffff8a006c00000 :large page allocation, Tag&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is Leak, size&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is 0xfa000 bytes&lt;/p&gt;    &lt;p class="Debug"&gt;*fffff8a006400000 :large page allocation, Tag&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is Leak, size&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is 0xfa000 bytes&lt;/p&gt;    &lt;p class="Debug"&gt;*fffff8a0062fa000 :large page allocation, Tag&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is Leak, size&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is 0xfa000 bytes&lt;/p&gt;    &lt;p class="Debug"&gt;*fffff8a005afa000 :large page allocation, Tag&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is Leak, size&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is 0xfa000 bytes&lt;/p&gt;    &lt;p class="Debug"&gt;*fffff8a005c00000 :large page allocation, Tag&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is Leak, size&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is 0xfa000 bytes&lt;/p&gt;    &lt;p class="Debug"&gt;*fffff8a006e00000 :large page allocation, Tag&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is Leak, size&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is 0xfa000 bytes&lt;/p&gt;    &lt;p class="Debug"&gt;*fffff8a006600000 :large page allocation, Tag&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is Leak, size&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is 0xfa000 bytes&lt;/p&gt;    &lt;p class="Debug"&gt;*fffff8a0064fa000 :large page allocation, Tag&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is Leak, size&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is 0xfa000 bytes&lt;/p&gt;    &lt;p class="Debug"&gt;*fffff8a005cfa000 :large page allocation, Tag&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is Leak, size&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is 0xfa000 bytes&lt;/p&gt;    &lt;p class="Debug"&gt;*fffff8a006afa000 :large page allocation, Tag&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is Leak, size&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is 0xfa000 bytes&lt;/p&gt;    &lt;p class="Debug"&gt;*fffff8a005e00000 :large page allocation, Tag&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is Leak, size&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is 0xfa000 bytes&lt;/p&gt;    &lt;p class="Debug"&gt;*fffff8a006800000 :large page allocation, Tag&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is Leak, size&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is 0xfa000 bytes&lt;/p&gt;    &lt;p class="Debug"&gt;*fffff8a0066fa000 :large page allocation, Tag&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is Leak, size&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is 0xfa000 bytes&lt;/p&gt;    &lt;p class="Debug"&gt;*fffff8a005efa000 :large page allocation, Tag&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is Leak, size&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is 0xfa000 bytes&lt;/p&gt;    &lt;p class="Debug"&gt;*fffff8a006cfa000 :large page allocation, Tag&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is Leak, size&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is 0xfa000 bytes&lt;/p&gt;    &lt;p class="Debug"&gt;*fffff8a006000000 :large page allocation, Tag&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is Leak, size&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is 0xfa000 bytes&lt;/p&gt;    &lt;p class="Debug"&gt;*&lt;span style="background: lime; mso-highlight: lime"&gt;fffff8a005800000&lt;/span&gt; :large page allocation, Tag&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is Leak, size&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;is 0xfa000 bytes&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Step 3 – Dump the call stack for the allocation&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;This step is the easy one.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Once you have the address of the allocation use !verifier 0x80 &lt;i style="mso-bidi-font-style: normal"&gt;Address&lt;/i&gt;.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;If you were interested in all of the call stacks in the log you can run !verifier 0x80 without the &lt;i style="mso-bidi-font-style: normal"&gt;Address&lt;/i&gt; parameter.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;kd&amp;gt; !verifier 0x80 &lt;span style="background: lime; mso-highlight: lime"&gt;fffff8a005800000&lt;/span&gt; &lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Log of recent kernel pool Allocate and Free operations:&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;There are up to 0x10000 entries in the log.&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Parsing 0x0000000000010000 log entries, searching for address 0xfffff8a005800000.&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;======================================================================&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="color: red"&gt;Pool block fffff8a005800000, Size 00000000000fa000, Thread fffffa8002be4060&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="color: red"&gt;fffff80001923cc6 nt!VeAllocatePoolWithTagPriority+0x2b6&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="color: red"&gt;fffff80001923d3d nt!VerifierExAllocatePoolEx+0x1d&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="color: red"&gt;fffff880042881f6 myfault+0x11f6&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="color: red"&gt;fffff8800428842f myfault+0x142f&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="color: red"&gt;fffff8000192e750 nt!IovCallDriver+0xa0&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="color: red"&gt;fffff800017a3a97 nt!IopXxxControlFile+0x607&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="color: red"&gt;fffff800017a42f6 nt!NtDeviceIoControlFile+0x56&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="color: red"&gt;fffff80001487ed3 nt!KiSystemServiceCopyEnd+0x13&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;======================================================================&lt;/p&gt;    &lt;p class="Debug"&gt;Pool block fffff8a005800000, Size 0000000000001000, Thread fffffa8002187060&lt;/p&gt;    &lt;p class="Debug"&gt;fffff8000192393a nt!VfFreePoolNotification+0x4a&lt;/p&gt;    &lt;p class="Debug"&gt;fffff800015b6a6f nt!ExDeferredFreePool+0x107b&lt;/p&gt;    &lt;p class="Debug"&gt;fffff800017273eb nt!HvFreeDirtyData+0x7f&lt;/p&gt;    &lt;p class="Debug"&gt;fffff800017269bb nt!HvOptimizedSyncHive+0x53&lt;/p&gt;    &lt;p class="Debug"&gt;fffff80001726303 nt!CmFlushKey+0xaf&lt;/p&gt;    &lt;p class="Debug"&gt;fffff80001726b22 nt!NtFlushKey+0x142&lt;/p&gt;    &lt;p class="Debug"&gt;fffff80001487ed3 nt!KiSystemServiceCopyEnd+0x13&lt;/p&gt;    &lt;p class="Debug"&gt;Parsed entry 0000000000010000/0000000000010000...&lt;/p&gt;    &lt;p class="Debug"&gt;Finished parsing all pool tracking information.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Keep in mind that the log may contain allocate and free information that predates the current use of the pool block, and that the log is of a fixed size so eventually old data will fall off the end.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The most recent use of the pool will be at the top of the output.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Usually this is the stack at the top of the output is what you are interested in, I have highlighted the relevant call stack in &lt;span style="color: red"&gt;red&lt;/span&gt;.&amp;#160; In this instance we can see that the pool was most recently allocated by myfault.sys.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Sometimes it is useful to have historical information about previous uses of the pool block such as when dealing with pool that was improperly freed.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;In that scenario the most recent call stack may be from an allocate call when the pool block was reused by the memory manager and so you may need to go down several levels to find out where the pool was improperly freed.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;For more information on using !verifier you can refer to the debugger help in MSDN, &lt;a href="http://msdn.microsoft.com/en-us/library/ff565591.aspx"&gt;http://msdn.microsoft.com/en-us/library/ff565591.aspx&lt;/a&gt;.&lt;/p&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10231822" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Debugging/">Debugging</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/leak/">leak</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Pool/">Pool</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/windows/">windows</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Debug+Ninja/">Debug Ninja</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/windbg/">windbg</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/debug/">debug</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/kernel/">kernel</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/UMDH/">UMDH</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/verifier/">verifier</category></item><item><title>Debugging a CLOCK_WATCHDOG_TIMEOUT Bugcheck</title><link>http://blogs.msdn.com/b/ntdebugging/archive/2011/10/26/debugging-a-clock-watchdog-timeout-bugcheck.aspx</link><pubDate>Wed, 26 Oct 2011 18:09:44 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10230314</guid><dc:creator>ntdebug</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ntdebugging/rsscomments.aspx?WeblogPostID=10230314</wfw:commentRss><comments>http://blogs.msdn.com/b/ntdebugging/archive/2011/10/26/debugging-a-clock-watchdog-timeout-bugcheck.aspx#comments</comments><description>&lt;div class="WordSection1"&gt;   &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;Hi debuggers, Andrew Richards here for my first NT Debugging post. I thought I’d share a recent case that used a lot of discovery techniques to uncover the details of what was going on. Most bugchecks give you the information you need as arguments, but in the case of bugcheck 0x101, I had to go digging for a trap frame, the thread stack, look at the disassembly of the running threads, and lots of other goodies.&lt;/span&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;As usual, the first thing I did was run &lt;b&gt;!analyze -v&lt;/b&gt; to get a more detailed explanation of what a bugcheck 0x101 “CLOCK_WATCHDOG_TIMEOUT” is.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;0: kd&amp;gt; !analyze -v        &lt;br /&gt;*******************************************************************************         &lt;br /&gt;*&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; *         &lt;br /&gt;*&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Bugcheck Analysis&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; *         &lt;br /&gt;*&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; *         &lt;br /&gt;*******************************************************************************&lt;/span&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;CLOCK_WATCHDOG_TIMEOUT (101)        &lt;br /&gt;An expected clock interrupt was not received on a secondary processor in an         &lt;br /&gt;MP system within the allocated interval. This indicates that the specified         &lt;br /&gt;processor is hung and not processing interrupts.         &lt;br /&gt;Arguments:         &lt;br /&gt;Arg1: 00000031, Clock interrupt time out interval in nominal clock ticks.         &lt;br /&gt;Arg2: 00000000, 0.         &lt;br /&gt;Arg3: 87337120, The PRCB address of the hung processor.         &lt;br /&gt;Arg4: 00000003, 0.&lt;/span&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;A bugcheck 0x101 occurs when the Clock interrupt (IRQL #28) has not been processed by each processor within a timeout.&amp;#160; The Clock interrupt is quite high in the IRQL table for x86; only the Inter-Processor Interrupt (IPI), Power-Fail and High interrupts are higher. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;div align="left"&gt;     &lt;table style="width: 145.5pt; mso-cellspacing: 0in; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 0in 0in 0in" class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" width="194"&gt;&lt;tbody&gt;         &lt;tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;           &lt;td style="padding-bottom: 1.5pt; padding-left: 1.5pt; width: 20.25pt; padding-right: 1.5pt; padding-top: 1.5pt" valign="top" width="27"&gt;             &lt;p class="Text"&gt;&lt;span style="color: #333333; font-size: 10pt"&gt;31&lt;/span&gt;&lt;span style="font-size: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;           &lt;/td&gt;            &lt;td style="padding-bottom: 1.5pt; padding-left: 1.5pt; width: 123.75pt; padding-right: 1.5pt; padding-top: 1.5pt" valign="top" width="165"&gt;             &lt;p class="Text"&gt;&lt;span style="color: #333333; font-size: 10pt"&gt;High&lt;/span&gt;&lt;span style="font-size: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;           &lt;/td&gt;         &lt;/tr&gt;          &lt;tr style="mso-yfti-irow: 1"&gt;           &lt;td style="padding-bottom: 1.5pt; padding-left: 1.5pt; width: 20.25pt; padding-right: 1.5pt; padding-top: 1.5pt" valign="top" width="27"&gt;             &lt;p class="Text"&gt;&lt;span style="color: #333333; font-size: 10pt"&gt;30&lt;/span&gt;&lt;span style="font-size: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;           &lt;/td&gt;            &lt;td style="padding-bottom: 1.5pt; padding-left: 1.5pt; width: 123.75pt; padding-right: 1.5pt; padding-top: 1.5pt" valign="top" width="165"&gt;             &lt;p class="Text"&gt;&lt;span style="color: #333333; font-size: 10pt"&gt;Power Fail&lt;/span&gt;&lt;span style="font-size: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;           &lt;/td&gt;         &lt;/tr&gt;          &lt;tr style="mso-yfti-irow: 2"&gt;           &lt;td style="padding-bottom: 1.5pt; padding-left: 1.5pt; width: 20.25pt; padding-right: 1.5pt; padding-top: 1.5pt" valign="top" width="27"&gt;             &lt;p class="Text"&gt;&lt;span style="color: #333333; font-size: 10pt"&gt;29&lt;/span&gt;&lt;span style="font-size: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;           &lt;/td&gt;            &lt;td style="padding-bottom: 1.5pt; padding-left: 1.5pt; width: 123.75pt; padding-right: 1.5pt; padding-top: 1.5pt" valign="top" width="165"&gt;             &lt;p class="Text"&gt;&lt;span style="color: #333333; font-size: 10pt"&gt;Inter-processor Interrupt&lt;/span&gt;&lt;span style="font-size: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;           &lt;/td&gt;         &lt;/tr&gt;          &lt;tr style="mso-yfti-irow: 3"&gt;           &lt;td style="padding-bottom: 1.5pt; padding-left: 1.5pt; width: 20.25pt; padding-right: 1.5pt; padding-top: 1.5pt" valign="top" width="27"&gt;             &lt;p class="Text"&gt;&lt;span style="color: #333333; font-size: 10pt"&gt;28&lt;/span&gt;&lt;span style="font-size: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;           &lt;/td&gt;            &lt;td style="padding-bottom: 1.5pt; padding-left: 1.5pt; width: 123.75pt; padding-right: 1.5pt; padding-top: 1.5pt" valign="top" width="165"&gt;             &lt;p class="Text"&gt;&lt;span style="color: #333333; font-size: 10pt"&gt;Clock&lt;/span&gt;&lt;span style="font-size: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;           &lt;/td&gt;         &lt;/tr&gt;          &lt;tr style="mso-yfti-irow: 4"&gt;           &lt;td style="padding-bottom: 1.5pt; padding-left: 1.5pt; width: 20.25pt; padding-right: 1.5pt; padding-top: 1.5pt" valign="top" width="27"&gt;             &lt;p class="Text"&gt;&lt;span style="color: #333333; font-size: 10pt"&gt;27&lt;/span&gt;&lt;span style="font-size: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;           &lt;/td&gt;            &lt;td style="padding-bottom: 1.5pt; padding-left: 1.5pt; width: 123.75pt; padding-right: 1.5pt; padding-top: 1.5pt" valign="top" width="165"&gt;             &lt;p class="Text"&gt;&lt;span style="color: #333333; font-size: 10pt"&gt;Profile/Synch&lt;/span&gt;&lt;span style="font-size: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;           &lt;/td&gt;         &lt;/tr&gt;          &lt;tr style="mso-yfti-irow: 5"&gt;           &lt;td style="padding-bottom: 1.5pt; padding-left: 1.5pt; width: 20.25pt; padding-right: 1.5pt; padding-top: 1.5pt" valign="top" width="27"&gt;             &lt;p class="Text"&gt;&lt;span style="color: #333333; font-size: 10pt"&gt;26&lt;/span&gt;&lt;span style="font-size: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;           &lt;/td&gt;            &lt;td style="padding-bottom: 1.5pt; padding-left: 1.5pt; width: 123.75pt; padding-right: 1.5pt; padding-top: 1.5pt" valign="top" width="165"&gt;             &lt;p class="Text"&gt;&lt;span style="color: #333333; font-size: 10pt"&gt;Device n&lt;/span&gt;&lt;span style="font-size: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;           &lt;/td&gt;         &lt;/tr&gt;          &lt;tr style="mso-yfti-irow: 6"&gt;           &lt;td style="padding-bottom: 1.5pt; padding-left: 1.5pt; width: 20.25pt; padding-right: 1.5pt; padding-top: 1.5pt" valign="top" width="27"&gt;             &lt;p class="Text"&gt;&lt;span style="font-size: 10pt"&gt;&amp;#160;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;           &lt;/td&gt;            &lt;td style="padding-bottom: 1.5pt; padding-left: 1.5pt; width: 123.75pt; padding-right: 1.5pt; padding-top: 1.5pt" valign="top" width="165"&gt;             &lt;p class="Text"&gt;&lt;span style="color: #333333; font-size: 10pt"&gt;…&lt;/span&gt;&lt;span style="font-size: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;           &lt;/td&gt;         &lt;/tr&gt;          &lt;tr style="mso-yfti-irow: 7"&gt;           &lt;td style="padding-bottom: 1.5pt; padding-left: 1.5pt; width: 20.25pt; padding-right: 1.5pt; padding-top: 1.5pt" valign="top" width="27"&gt;             &lt;p class="Text"&gt;&lt;span style="color: #333333; font-size: 10pt"&gt;5&lt;/span&gt;&lt;span style="font-size: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;           &lt;/td&gt;            &lt;td style="padding-bottom: 1.5pt; padding-left: 1.5pt; width: 123.75pt; padding-right: 1.5pt; padding-top: 1.5pt" valign="top" width="165"&gt;             &lt;p class="Text"&gt;&lt;span style="color: #333333; font-size: 10pt"&gt;CMCI&lt;/span&gt;&lt;span style="font-size: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;           &lt;/td&gt;         &lt;/tr&gt;          &lt;tr style="mso-yfti-irow: 8"&gt;           &lt;td style="padding-bottom: 1.5pt; padding-left: 1.5pt; width: 20.25pt; padding-right: 1.5pt; padding-top: 1.5pt" valign="top" width="27"&gt;             &lt;p class="Text"&gt;&lt;span style="color: #333333; font-size: 10pt"&gt;4&lt;/span&gt;&lt;span style="font-size: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;           &lt;/td&gt;            &lt;td style="padding-bottom: 1.5pt; padding-left: 1.5pt; width: 123.75pt; padding-right: 1.5pt; padding-top: 1.5pt" valign="top" width="165"&gt;             &lt;p class="Text"&gt;&lt;span style="color: #333333; font-size: 10pt"&gt;…&lt;/span&gt;&lt;span style="font-size: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;           &lt;/td&gt;         &lt;/tr&gt;          &lt;tr style="mso-yfti-irow: 9"&gt;           &lt;td style="padding-bottom: 1.5pt; padding-left: 1.5pt; width: 20.25pt; padding-right: 1.5pt; padding-top: 1.5pt" valign="top" width="27"&gt;             &lt;p class="Text"&gt;&lt;span style="color: #333333; font-size: 10pt"&gt;3&lt;/span&gt;&lt;span style="font-size: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;           &lt;/td&gt;            &lt;td style="padding-bottom: 1.5pt; padding-left: 1.5pt; width: 123.75pt; padding-right: 1.5pt; padding-top: 1.5pt" valign="top" width="165"&gt;             &lt;p class="Text"&gt;&lt;span style="color: #333333; font-size: 10pt"&gt;Device 1&lt;/span&gt;&lt;span style="font-size: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;           &lt;/td&gt;         &lt;/tr&gt;          &lt;tr style="mso-yfti-irow: 10"&gt;           &lt;td style="padding-bottom: 1.5pt; padding-left: 1.5pt; width: 20.25pt; padding-right: 1.5pt; padding-top: 1.5pt" valign="top" width="27"&gt;             &lt;p class="Text"&gt;&lt;span style="color: #333333; font-size: 10pt"&gt;2&lt;/span&gt;&lt;span style="font-size: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;           &lt;/td&gt;            &lt;td style="padding-bottom: 1.5pt; padding-left: 1.5pt; width: 123.75pt; padding-right: 1.5pt; padding-top: 1.5pt" valign="top" width="165"&gt;             &lt;p class="Text"&gt;&lt;span style="color: #333333; font-size: 10pt"&gt;DPC/Dispatch&lt;/span&gt;&lt;span style="font-size: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;           &lt;/td&gt;         &lt;/tr&gt;          &lt;tr style="mso-yfti-irow: 11"&gt;           &lt;td style="padding-bottom: 1.5pt; padding-left: 1.5pt; width: 20.25pt; padding-right: 1.5pt; padding-top: 1.5pt" valign="top" width="27"&gt;             &lt;p class="Text"&gt;&lt;span style="color: #333333; font-size: 10pt"&gt;1&lt;/span&gt;&lt;span style="font-size: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;           &lt;/td&gt;            &lt;td style="padding-bottom: 1.5pt; padding-left: 1.5pt; width: 123.75pt; padding-right: 1.5pt; padding-top: 1.5pt" valign="top" width="165"&gt;             &lt;p class="Text"&gt;&lt;span style="color: #333333; font-size: 10pt"&gt;APC&lt;/span&gt;&lt;span style="font-size: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;           &lt;/td&gt;         &lt;/tr&gt;          &lt;tr style="mso-yfti-irow: 12; mso-yfti-lastrow: yes"&gt;           &lt;td style="padding-bottom: 1.5pt; padding-left: 1.5pt; width: 20.25pt; padding-right: 1.5pt; padding-top: 1.5pt" valign="top" width="27"&gt;             &lt;p class="Text"&gt;&lt;span style="color: #333333; font-size: 10pt"&gt;0&lt;/span&gt;&lt;span style="font-size: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;           &lt;/td&gt;            &lt;td style="padding-bottom: 1.5pt; padding-left: 1.5pt; width: 123.75pt; padding-right: 1.5pt; padding-top: 1.5pt" valign="top" width="165"&gt;             &lt;p class="Text"&gt;&lt;span style="color: #333333; font-size: 10pt"&gt;Passive&lt;/span&gt;&lt;span style="font-size: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;           &lt;/td&gt;         &lt;/tr&gt;       &lt;/tbody&gt;&lt;/table&gt;   &lt;/div&gt;    &lt;p class="Text"&gt;&lt;span style="color: #333333; font-size: 10pt; mso-ansi-language: en" lang="EN"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;The immediate hypothesis was that one of the processors was stuck processing an IPI (a common interrupt), causing it to be above the Clock IRQ level.&lt;/span&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;The questions were:&lt;/span&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;1.&lt;/span&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; mso-ansi-language: en" lang="EN"&gt;&amp;#160; &lt;/span&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;At what IRQL was the problem processor?&amp;#160; Was it at IPI?&lt;/span&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;2.&lt;/span&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; mso-ansi-language: en" lang="EN"&gt;&amp;#160; &lt;/span&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;Why was it stuck?&lt;/span&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;3.&lt;/span&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; mso-ansi-language: en" lang="EN"&gt;&amp;#160; &lt;/span&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;Who did it?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;This was a 4 core box, so I ran !prcb four times to view the Processor Resource control Block (PRCB) of each processor. Processor #3 matched the PRCB specified in the bugcheck’s 3rd argument (Arg3 = &lt;span style="color: #9b00d3"&gt;87337120&lt;/span&gt;). The first question was answered; Processor #3 was the culprit. Interestingly, the Arg4 value in the bugcheck has a value of 3.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Per the documentation it should be 0, but it seems that the processor number is provided.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;0: kd&amp;gt; !prcb 0        &lt;br /&gt;PRCB for Processor 0 at 82b34d20:         &lt;br /&gt;Current IRQL -- 28         &lt;br /&gt;Threads--&amp;#160; Current 82b3e380 Next 00000000 Idle 82b3e380         &lt;br /&gt;Processor Index 0 Number (0, 0) GroupSetMember 1         &lt;br /&gt;Interrupt Count -- 000475e1         &lt;br /&gt;Times -- Dpc&amp;#160;&amp;#160;&amp;#160; 000008d6 Interrupt 0000007b         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Kernel 0001920f User&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 00003b0b         &lt;br /&gt;        &lt;br /&gt;0: kd&amp;gt; !prcb 1         &lt;br /&gt;PRCB for Processor 1 at 807c7120:         &lt;br /&gt;Current IRQL -- 0         &lt;br /&gt;Threads--&amp;#160; Current 9bb65d48 Next 9bf52c10 Idle 807cc800         &lt;br /&gt;Processor Index 1 Number (0, 1) GroupSetMember 2         &lt;br /&gt;Interrupt Count -- 00030ae8         &lt;br /&gt;Times -- Dpc&amp;#160;&amp;#160;&amp;#160; 000005ca Interrupt 00000098         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Kernel 00017e4a User&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 00004eab         &lt;br /&gt;        &lt;br /&gt;0: kd&amp;gt; !prcb 2         &lt;br /&gt;PRCB for Processor 2 at 87300120:         &lt;br /&gt;Current IRQL -- 0         &lt;br /&gt;Threads--&amp;#160; Current 9b41b6e8 Next 00000000 Idle 87305800         &lt;br /&gt;Processor Index 2 Number (0, 2) GroupSetMember 4         &lt;br /&gt;Interrupt Count -- 0002ab35         &lt;br /&gt;Times -- Dpc&amp;#160;&amp;#160;&amp;#160; 00000568 Interrupt 000000ac         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Kernel 0001a788 User&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 00002565         &lt;br /&gt;        &lt;br /&gt;0: kd&amp;gt; !prcb 3         &lt;br /&gt;PRCB for Processor 3 at &lt;span style="color: #9b00d3"&gt;87337120&lt;/span&gt;:         &lt;br /&gt;Current IRQL -- 0         &lt;br /&gt;Threads--&amp;#160; Current 8aaa17c8 Next 00000000 Idle 8733c800         &lt;br /&gt;Processor Index 3 Number (0, 3) GroupSetMember 8         &lt;br /&gt;Interrupt Count -- 00026c0d         &lt;br /&gt;Times -- Dpc&amp;#160;&amp;#160;&amp;#160; 00000620 Interrupt 0000008b         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Kernel 0001ac65 User&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 00001e33 &lt;/span&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;IRQL&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;The Processor Context Records reported that Processors #0, #1 and #2 were at IRQL 31 (1f - HIGH), and Processor #3 was at IRQL 27 (1b - SYNCH). Having a value of 31 is expected at bugcheck as that is how the bugcheck gains control of the processor to gather the current context. It was strange that Processor #3 was different and that is matched the processor mentioned in the bugcheck&lt;/span&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;0: kd&amp;gt; !pcr 0        &lt;br /&gt;KPCR for Processor 0 at 82b34c00:         &lt;br /&gt;...         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Irql: 0000001f         &lt;br /&gt;...&lt;/span&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;0: kd&amp;gt; !pcr 1        &lt;br /&gt;KPCR for Processor 1 at 807c7000:         &lt;br /&gt;...         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Irql: 0000001f         &lt;br /&gt;...&lt;/span&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;0: kd&amp;gt; !pcr 2        &lt;br /&gt;KPCR for Processor 2 at 87300000:         &lt;br /&gt;...         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Irql: 0000001f         &lt;br /&gt;...&lt;/span&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;0: kd&amp;gt; !pcr 3        &lt;br /&gt;KPCR for Processor 3 at 87337000:         &lt;br /&gt;...         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Irql: 0000001b         &lt;br /&gt;...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The next step was to look at the stacks of the processors to see what the threads were all involved in.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Processor #0&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;To determine the stack of the Processor #0’s thread before the bugcheck, the trap frame needed to be found. The trap frame is stored immediately above the interrupt handler. To find that, I looked at the Interrupt Descriptor Table to find out the name of the handler for clock interrupt and then I searched for that symbol on the stack.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-        &lt;br /&gt;==&amp;gt; Processor #0         &lt;br /&gt;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-         &lt;br /&gt;0: kd&amp;gt; knL         &lt;br /&gt;# ChildEBP RetAddr&amp;#160; &lt;br /&gt;00 82b31674 82a84a6f nt!KeBugCheckEx+0x1e         &lt;br /&gt;01 82b316b0 82a840be nt!KeAccumulateTicks+0x242         &lt;br /&gt;02 82b316f0 82a83f6b nt!KeUpdateRunTime+0x145         &lt;br /&gt;03 82b3174c 82a88c17 nt!KeUpdateSystemTime+0x613         &lt;br /&gt;04 82b3174c 82a85e79 nt!KeUpdateSystemTimeAssist+0x13         &lt;br /&gt;05 &lt;span style="color: lime"&gt;82b317e0&lt;/span&gt; 82abfa17 &lt;b&gt;nt!KiIpiSendPacket&lt;/b&gt;+0xdd         &lt;br /&gt;06 82b31820 82af0866 nt!KeFlushSingleTb+0x136         &lt;br /&gt;07 82b3190c 82b2ab90 nt!MmFreeSpecialPool+0x2b4         &lt;br /&gt;08 82b31970 82d4a06e nt!ExFreePoolWithTag+0xd6         &lt;br /&gt;09 82b31980 82d3fab2 nt!ViCtxFreeIsrContext+0xf         &lt;br /&gt;0a 82b31998 82d3a1c0 nt!VfIoFreeIrp+0xd3         &lt;br /&gt;0b 82b319a8 8ced5986 nt!IovFreeIrpPrivate+0x47         &lt;br /&gt;WARNING: Stack unwind information not available. Following frames may be wrong.         &lt;br /&gt;0c 82b319c4 82d3acd4 irsir+0x2986         &lt;br /&gt;0d 82b319f4 82a81933 nt!IovpLocalCompletionRoutine+0x14b         &lt;br /&gt;0e 82b31a3c 82d3ab64 nt!IopfCompleteRequest+0x128         &lt;br /&gt;0f 82b31aa4 8b7c6abd nt!IovCompleteRequest+0x133         &lt;br /&gt;10 82b31ab4 8b7c6461 serial!SerialGetNextIrpLocked+0x61         &lt;br /&gt;11 82b31ad8 8b7c7567 serial!SerialGetNextIrp+0x27         &lt;br /&gt;12 82b31b00 8b7b9eb7 serial!SerialTryToCompleteCurrent+0x7a         &lt;br /&gt;13 82b31b38 82a83039 serial!SerialReadTimeout+0x68         &lt;br /&gt;14 82b31b7c 82a82fdd nt!KiProcessTimerDpcTable+0x50         &lt;br /&gt;15 82b31c68 82a82e9a nt!KiProcessExpiredTimerList+0x101         &lt;br /&gt;16 82b31cdc 82a8100e nt!KiTimerExpiration+0x25c         &lt;br /&gt;17 82b31d20 82a80e38 nt!KiRetireDpcList+0xcb         &lt;br /&gt;18 82b31d24 00000000 nt!KiIdleLoop+0x38&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;0: kd&amp;gt; !irql        &lt;br /&gt;Debugger saved IRQL for processor 0x0 -- 28 (CLOCK2_LEVEL)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;0: kd&amp;gt; !idt&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;Dumping IDT:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;37:&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;82e35104 hal!PicSpuriousService37&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;51:&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;8aba1558 serial!SerialCIsrSw (KINTERRUPT 8aba1500)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;71:&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;89003cd8 i8042prt!I8042KeyboardInterruptService (KINTERRUPT 89003c80)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;72:&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;8aba17d8 USBPORT!USBPORT_InterruptService (KINTERRUPT 8aba1780)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;82:&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;89123058 ataport!IdePortInterrupt (KINTERRUPT 89123000)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;ataport!IdePortInterrupt (KINTERRUPT 89123a00)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;ataport!IdePortInterrupt (KINTERRUPT 89123780)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;ataport!IdePortInterrupt (KINTERRUPT 89123500)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;92:&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;8aba1058 Impcd+0x8540 (KINTERRUPT 8aba1000)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;a0:&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;8aba1a58 ndis!ndisMiniportMessageIsr (KINTERRUPT 8aba1a00)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;a2:&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;8aba1cd8 USBPORT!USBPORT_InterruptService (KINTERRUPT 8aba1c80)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;b0:&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;891232d8 ndis!ndisMiniportMessageIsr (KINTERRUPT 89123280)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;b1:&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;89123cd8 ACPI!ACPIInterruptServiceRoutine (KINTERRUPT 89123c80)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;b2:&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;8aba12d8 serial!SerialCIsrSw (KINTERRUPT 8aba1280)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;c1:&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;82e353f4 hal!HalpBroadcastCallService&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="color: red; mso-ansi-language: en" lang="EN"&gt;d1:&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;82e1d634 hal!HalpHpetClockInterrupt&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;d2:&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;82e1d898 hal!HalpHpetRolloverInterrupt&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;df:&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;82e351dc hal!HalpApicRebootService&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;e1:&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;82e35958 hal!HalpIpiHandler&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;e3:&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;82e356f8 hal!HalpLocalApicErrorService&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;fd:&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;82e35f2c hal!HalpProfileInterrupt&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;fe:&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;82e361a8 hal!HalpPerfInterrupt&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The search was between the &lt;b style="mso-bidi-font-weight: normal"&gt;nt!KiIpiSendPacket&lt;/b&gt; call (I just chose it as it didn’t seem to be bugcheck related) and the current stack pointer.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Using the dereferenced pointer (&lt;b style="mso-bidi-font-weight: normal"&gt;poi&lt;/b&gt;) and some maths, the trap frame location is retrieved.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;0: kd&amp;gt; dps @esp &lt;span style="color: lime"&gt;82b317e0&lt;/span&gt;         &lt;br /&gt;...         &lt;br /&gt;82b31744&amp;#160; 82b31760 nt!KiDoubleFaultStack+0x2760 &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; This is not a real symbol; it actually is a part of the trap frame         &lt;br /&gt;&lt;span style="color: blue"&gt;82b31748&lt;/span&gt;&amp;#160; 82e1d72a &lt;b&gt;hal!HalpHpetClockInterrupt&lt;/b&gt;+0xf6         &lt;br /&gt;82b3174c&amp;#160; 82b31760 nt!KiDoubleFaultStack+0x2760         &lt;br /&gt;82b31750&amp;#160; 82a88c17 nt!KeUpdateSystemTimeAssist+0x13         &lt;br /&gt;...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;0: kd&amp;gt; .trap poi(&lt;span style="color: blue"&gt;82b31748&lt;/span&gt;-4)         &lt;br /&gt;ErrCode = 00000000         &lt;br /&gt;eax=87300120 ebx=841882dc ecx=4cdfc4c4 edx=82b34d20 esi=807c7120 edi=82b738c4         &lt;br /&gt;eip=82a85e79 esp=82b317d4 ebp=82b31820 iopl=0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; nv up ei pl nz na po nc         &lt;br /&gt;cs=0008&amp;#160; ss=0010&amp;#160; ds=0000&amp;#160; es=dea0&amp;#160; fs=040f&amp;#160; gs=0008&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; efl=00000202         &lt;br /&gt;nt!KiIpiSendPacket+0xdd:         &lt;br /&gt;82a85e79 f390&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pause&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;So you might be asking yourself, can this be done an easier way?&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The answer is definitely &lt;b style="mso-bidi-font-weight: normal"&gt;Yes&lt;/b&gt;. You just need to use &lt;b style="mso-bidi-font-weight: normal"&gt;kv&lt;/b&gt; instead; it adds the trap frame information on the &lt;span style="color: red"&gt;end of the line&lt;/span&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;0: kd&amp;gt; kv&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;ChildEBP RetAddr&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Args to Child&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;82b31674 82a84a6f 00000101 00000031 00000000 nt!KeBugCheckEx+0x1e&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;82b316b0 82a840be 00026161 00000000 0001cd00 nt!KeAccumulateTicks+0x242&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;82b316f0 82a83f6b 82a85e79 807c7120 00000000 nt!KeUpdateRunTime+0x145&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;82b3174c 82a88c17 ffffff1b ffffff1b 000000d1 nt!KeUpdateSystemTime+0x613&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;82b3174c 82a85e79 ffffff1b ffffff1b 000000d1 nt!KeUpdateSystemTimeAssist+0x13 (FPO: [0,2] &lt;span style="color: red"&gt;TrapFrame @ 82b31760&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;82b317e0 82abfa17 00000001 00000000 82a3cbe1 nt!KiIpiSendPacket+0xdd (FPO: [6,2,0])&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;82b31820 82af0866 a33d6f20 00000001 a33d00cf nt!KeFlushSingleTb+0x136&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;82b3190c 82b2ab90 a33d6f20 8a2096d8 8a2096d8 nt!MmFreeSpecialPool+0x2b4&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;82b31970 82d4a06e a33d6f20 00000000 82b31998 nt!ExFreePoolWithTag+0xd6&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;82b31980 82d3fab2 a33d6f20 a33d6f20 a33d6f20 nt!ViIrpFree+0xf&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;82b31998 82d3a1c0 8ced5986 905cadb0 82b319c4 nt!VfIoFreeIrp+0xd3&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;82b319a8 8ced5986 a33d6f20 8ced58f0 82b31a6c nt!IovFreeIrpPrivate+0x47&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;WARNING: Stack unwind information not available. Following frames may be wrong.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;82b319c4 82d3acd4 00000000 a33d6f20 905cadb0 irsir+0x2986&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;82b319f4 82a81933 00000000 a33d6f20 82b31a6c nt!IovpLocalCompletionRoutine+0x14b&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;82b31a3c 82d3ab64 a33d6f20 8ab151ac 8ab150f0 nt!IopfCompleteRequest+0x128&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;82b31aa4 8b7c6abd 00000000 8ab151ac 82b31ad8 nt!IovCompleteRequest+0x133&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;82b31ab4 8b7c6461 8ab151ac 8ab1518c 82b31b0c serial!SerialGetNextIrpLocked+0x61 (FPO: [Non-Fpo])&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;82b31ad8 8b7c7567 8ab151ac 8ab1518c 82b31b0c serial!SerialGetNextIrp+0x27 (FPO: [Non-Fpo])&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;82b31b00 8b7b9eb7 8ab150f0 00000000 8ab15002 serial!SerialTryToCompleteCurrent+0x7a (FPO: [Non-Fpo])&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;82b31b38 82a83039 8ab15314 8ab15002 3c171d26 serial!SerialReadTimeout+0x68 (FPO: [Non-Fpo])&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;82b31b7c 82a82fdd 82b34d20 82b31ca8 00000001 nt!KiProcessTimerDpcTable+0x50&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;82b31c68 82a82e9a 82b34d20 82b31ca8 00000000 nt!KiProcessExpiredTimerList+0x101&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;82b31cdc 82a8100e 0001cacf 9bb374c0 82b3e380 nt!KiTimerExpiration+0x25c&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;82b31d20 82a80e38 00000000 0000000e 00000000 nt!KiRetireDpcList+0xcb&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;82b31d24 00000000 0000000e 00000000 00000000 nt!KiIdleLoop+0x38 (FPO: [0,0,0])&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;By using the stack based maths, or the value provide by &lt;b style="mso-bidi-font-weight: normal"&gt;kv&lt;/b&gt;, the trap frame address is used to set the context (&lt;b style="mso-bidi-font-weight: normal"&gt;.trap &amp;lt;addr&amp;gt;&lt;/b&gt;) to the code running before the interrupt.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;These are the stored registers and the stack at the time of the interrupt.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;0: kd&amp;gt; .trap 82b31760&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;ErrCode = 00000000&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;eax=87300120 ebx=841882dc ecx=4cdfc4c4 edx=82b34d20 esi=807c7120 edi=82b738c4&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;eip=82a85e79 esp=82b317d4 ebp=82b31820 iopl=0&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;nv up ei pl nz na po nc&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;cs=0008&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ss=0010&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ds=0000&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;es=dea0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fs=040f&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;gs=0008&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;efl=00000202&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;nt!KiIpiSendPacket+0xdd:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;82a85e79 f390&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;pause&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;0: kd&amp;gt; knL        &lt;br /&gt;&amp;#160; *** Stack trace for last set context - .thread/.cxr resets it         &lt;br /&gt;# ChildEBP RetAddr&amp;#160; &lt;br /&gt;00 82b317e0 82abfa17 nt!KiIpiSendPacket+0xdd         &lt;br /&gt;01 82b31820 82af0866 nt!KeFlushSingleTb+0x136         &lt;br /&gt;02 82b3190c 82b2ab90 nt!MmFreeSpecialPool+0x2b4         &lt;br /&gt;03 82b31970 82d4a06e nt!ExFreePoolWithTag+0xd6         &lt;br /&gt;04 82b31980 82d3fab2 nt!ViCtxFreeIsrContext+0xf         &lt;br /&gt;05 82b31998 82d3a1c0 nt!VfIoFreeIrp+0xd3         &lt;br /&gt;06 82b319a8 8ced5986 nt!IovFreeIrpPrivate+0x47         &lt;br /&gt;WARNING: Stack unwind information not available. Following frames may be wrong.         &lt;br /&gt;07 82b319c4 82d3acd4 irsir+0x2986         &lt;br /&gt;08 82b319f4 82a81933 nt!IovpLocalCompletionRoutine+0x14b         &lt;br /&gt;09 82b31a3c 82d3ab64 nt!IopfCompleteRequest+0x128         &lt;br /&gt;0a 82b31aa4 8b7c6abd nt!IovCompleteRequest+0x133         &lt;br /&gt;0b 82b31ab4 8b7c6461 serial!SerialGetNextIrpLocked+0x61         &lt;br /&gt;0c 82b31ad8 8b7c7567 serial!SerialGetNextIrp+0x27         &lt;br /&gt;0d 82b31b00 8b7b9eb7 serial!SerialTryToCompleteCurrent+0x7a         &lt;br /&gt;0e 82b31b38 82a83039 serial!SerialReadTimeout+0x68         &lt;br /&gt;0f 82b31b7c 82a82fdd nt!KiProcessTimerDpcTable+0x50         &lt;br /&gt;10 82b31c68 82a82e9a nt!KiProcessExpiredTimerList+0x101         &lt;br /&gt;11 82b31cdc 82a8100e nt!KiTimerExpiration+0x25c         &lt;br /&gt;12 82b31d20 82a80e38 nt!KiRetireDpcList+0xcb         &lt;br /&gt;13 82b31d24 00000000 nt!KiIdleLoop+0x38&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Dissassembling the first few instructions reveals a jump (jmp) that is back &lt;i style="mso-bidi-font-style: normal"&gt;up&lt;/i&gt; in the &lt;b style="mso-bidi-font-weight: normal"&gt;nt!KiIpiSendPacket&lt;/b&gt; function. Using the &lt;b style="mso-bidi-font-weight: normal"&gt;jmp&lt;/b&gt; &lt;/span&gt;&lt;span style="color: #ffc000"&gt;location&lt;/span&gt; and the instruction &lt;span style="color: red"&gt;after&lt;/span&gt; the jmp as the bound, we can disassemble the loop. At the time of the bugcheck, the thread was executing a &lt;b style="mso-bidi-font-weight: normal"&gt;pause&lt;/b&gt; (a CPU based delay), and seemingly doing this in a loop while waiting for &lt;b style="mso-bidi-font-weight: normal"&gt;to release it.&lt;o:p&gt;&lt;/o:p&gt; &lt;/b&gt;      &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;0: kd&amp;gt; u @eip          &lt;br /&gt;nt!KiIpiSendPacket+0xdd:           &lt;br /&gt;82a85e79 f390&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pause&amp;#160; &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; @eip           &lt;br /&gt;82a85e7b eb9e&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; jmp&amp;#160;&amp;#160;&amp;#160;&amp;#160; nt!KiIpiSendPacket+0x7f (&lt;span style="color: #ffc000"&gt;82a85e1b&lt;/span&gt;)           &lt;br /&gt;&lt;span style="color: red"&gt;82a85e7d&lt;/span&gt; 8d4900&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lea&amp;#160;&amp;#160;&amp;#160;&amp;#160; ecx,[ecx] &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;...          &lt;br style="mso-special-character: line-break" /&gt;          &lt;br style="mso-special-character: line-break" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;0: kd&amp;gt; u &lt;span style="color: #ffc000"&gt;82a85e1b&lt;/span&gt; &lt;span style="color: red"&gt;82a85e7d&lt;/span&gt;           &lt;br /&gt;nt!KiIpiSendPacket+0x7f:           &lt;br /&gt;82a85e1b 8b86a4180000&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; eax,dword ptr [esi+18A4h]           &lt;br /&gt;82a85e21 0bc0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #00b050"&gt;or&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; eax,eax&lt;/span&gt; &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; Checking if value is nonzero           &lt;br /&gt;82a85e23 7538&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; jne&amp;#160;&amp;#160;&amp;#160;&amp;#160; nt!KiIpiSendPacket+0xc1 (82a85e5d) &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; Take jmp to stay in loop           &lt;br /&gt;82a85e25 f00fb196a4180000 lock cmpxchg dword ptr [esi+18A4h],edx           &lt;br /&gt;82a85e2d 75ec&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; jne&amp;#160;&amp;#160;&amp;#160;&amp;#160; nt!KiIpiSendPacket+0x7f (82a85e1b)           &lt;br /&gt;82a85e2f 59&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pop&amp;#160;&amp;#160;&amp;#160;&amp;#160; ecx           &lt;br /&gt;82a85e30 d1e9&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; shr&amp;#160;&amp;#160;&amp;#160;&amp;#160; ecx,1           &lt;br /&gt;82a85e32 8d7f04&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lea&amp;#160;&amp;#160;&amp;#160;&amp;#160; edi,[edi+4]           &lt;br /&gt;82a85e35 72df&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; jb&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; nt!KiIpiSendPacket+0x7a (82a85e16)           &lt;br /&gt;82a85e37 75f7&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; jne&amp;#160;&amp;#160;&amp;#160;&amp;#160; nt!KiIpiSendPacket+0x94 (82a85e30)           &lt;br /&gt;82a85e39 59&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pop&amp;#160;&amp;#160;&amp;#160;&amp;#160; ecx           &lt;br /&gt;82a85e3a 64890d8c190000&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; dword ptr fs:[198Ch],ecx           &lt;br /&gt;82a85e41 8b4c240c&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; ecx,dword ptr [esp+0Ch]           &lt;br /&gt;82a85e45 8b542410&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; edx,dword ptr [esp+10h]           &lt;br /&gt;82a85e49 64ff0590360000&amp;#160; inc&amp;#160;&amp;#160;&amp;#160;&amp;#160; dword ptr fs:[3690h]           &lt;br /&gt;82a85e50 52&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; edx           &lt;br /&gt;82a85e51 51&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; ecx           &lt;br /&gt;82a85e52 ff15a4a0a082&amp;#160;&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160; dword ptr [nt!_imp__HalRequestIpi (82a0a0a4)]           &lt;br /&gt;82a85e58 5f&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pop&amp;#160;&amp;#160;&amp;#160;&amp;#160; edi           &lt;br /&gt;82a85e59 5e&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pop&amp;#160;&amp;#160;&amp;#160;&amp;#160; esi           &lt;br /&gt;82a85e5a c21800&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ret&amp;#160;&amp;#160;&amp;#160;&amp;#160; 18h           &lt;br /&gt;82a85e5d 41&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; inc&amp;#160;&amp;#160;&amp;#160;&amp;#160; ecx           &lt;br /&gt;82a85e5e 850d7c3ab782&amp;#160;&amp;#160;&amp;#160; test&amp;#160;&amp;#160;&amp;#160; dword ptr [nt!HvlLongSpinCountMask (82b73a7c)],ecx           &lt;br /&gt;82a85e64 7513&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; jne&amp;#160;&amp;#160;&amp;#160;&amp;#160; nt!KiIpiSendPacket+0xdd (82a85e79)           &lt;br /&gt;82a85e66 f605783ab78240&amp;#160; test&amp;#160;&amp;#160;&amp;#160; byte ptr [nt!HvlEnlightenments (82b73a78)],40h &lt;b style="mso-bidi-font-weight: normal"&gt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; Don’t spin if you’re an enlightened VM, just pause&lt;/b&gt;           &lt;br /&gt;82a85e6d 740a&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; je&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; nt!KiIpiSendPacket+0xdd (82a85e79)           &lt;br /&gt;82a85e6f 52&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; edx           &lt;br /&gt;82a85e70 51&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; ecx           &lt;br /&gt;82a85e71 51&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; ecx           &lt;br /&gt;82a85e72 e8c8b60500&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160; nt!HvlNotifyLongSpinWait (82ae153f)           &lt;br /&gt;82a85e77 59&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pop&amp;#160;&amp;#160;&amp;#160;&amp;#160; ecx           &lt;br /&gt;82a85e78 5a&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pop&amp;#160;&amp;#160;&amp;#160;&amp;#160; edx           &lt;br /&gt;82a85e79 f390&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pause&amp;#160; &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; @eip           &lt;br /&gt;82a85e7b eb9e&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; jmp&amp;#160;&amp;#160;&amp;#160;&amp;#160; nt!KiIpiSendPacket+0x7f (82a85e1b)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;The summary so far: Since processor #0 was the thread that created the bugcheck, it must have been interrupted by a Clock interrupt so as to trigger a CLOCK_WATCHDOG_TIMEOUT bugcheck. It is not surprising then that the value of &lt;b&gt;!irql&lt;/b&gt; is CLOCK2.&lt;/span&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;The existence of the &lt;b&gt;nt!KiIpiSendPacket&lt;/b&gt; function lends weight to the thought that this was the creator of an IPI and is not one of the processors that wasn’t processing IPIs.&lt;/span&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;Processor #1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;Using the same technique as Processor #0, the disassembly for the loop on Processor #1 is determined. Processor #1 is in a tight loop within the &lt;b style="mso-bidi-font-weight: normal"&gt;nt!KeFlushMultipleRangeTb&lt;/b&gt; function, an ancestor function of &lt;b style="mso-bidi-font-weight: normal"&gt;nt!ExAllocatePoolWithTag&lt;/b&gt;, a memory related operation.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This is an interesting function to see, considering that &lt;b style="mso-bidi-font-weight: normal"&gt;nt!ExFreePoolWithTag&lt;/b&gt;, the counterpart, is on Processor #0’s stack.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-          &lt;br /&gt;==&amp;gt; Processor #1           &lt;br /&gt;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-           &lt;br /&gt;1: kd&amp;gt; knL           &lt;br /&gt;# ChildEBP RetAddr&amp;#160; &lt;br /&gt;00 95bfc7bc 82abb217 nt!KeFlushMultipleRangeTb+0x2d3           &lt;br /&gt;01 95bfc89c 82aa7d11 nt!MiFlushTbAsNeeded+0x12e           &lt;br /&gt;02 95bfc8dc 82b29487 nt!MiAllocatePagedPoolPages+0x567           &lt;br /&gt;03 95bfc940 82aa4674 nt!MiAllocatePoolPages+0x1f           &lt;br /&gt;04 95bfc998 82b2a132 nt!ExpAllocateBigPool+0xa6           &lt;br /&gt;05 95bfc9fc 82aab6b1 nt!ExAllocatePoolWithTag+0x12d           &lt;br /&gt;06 95bfca20 82c4cc62 nt!ExAllocatePoolWithTagPriority+0x196           &lt;br /&gt;07 95bfca78 82c7a662 nt!IopQueryNameInternal+0x60           &lt;br /&gt;08 95bfca98 82c57d88 nt!IopQueryName+0x1b           &lt;br /&gt;09 95bfcb1c 82c71a50 nt!ObpQueryNameString+0x7f           &lt;br /&gt;0a 95bfcb38 82c75e12 nt!ObQueryNameString+0x18           &lt;br /&gt;0b 95bfcc14 82c65788 nt!EtwTraceProcess+0xa2           &lt;br /&gt;0c 95bfcc38 82c73625 nt!PspExitProcess+0x37           &lt;br /&gt;0d 95bfccb4 82c87051 nt!PspExitThread+0x59a           &lt;br /&gt;0e 95bfcccc 82aba8c0 nt!PsExitSpecialApc+0x22           &lt;br /&gt;0f 95bfcd1c 82a472a4 nt!KiDeliverApc+0x28b           &lt;br /&gt;10 95bfcd1c 77556fc0 nt!KiServiceExit+0x64           &lt;br /&gt;WARNING: Frame IP not in any known module. Following frames may be wrong.           &lt;br /&gt;11 014ef918 00000000 0x77556fc0&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;1: kd&amp;gt; !irql&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;Debugger saved IRQL for processor 0x1 -- 0 (LOW_LEVEL)&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; Windows Internals 4&lt;sup&gt;th&lt;/sup&gt; Edition notes that IRQL may not be saved; this explains the 0&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;1: kd&amp;gt; u @eip          &lt;br /&gt;nt!KeFlushMultipleRangeTb+0x2d3:           &lt;br /&gt;82a40c31 f390&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pause &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; @eip           &lt;br /&gt;82a40c33 8b07&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; eax,dword ptr [edi]           &lt;br /&gt;82a40c35 85c0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; test&amp;#160;&amp;#160;&amp;#160; eax,eax           &lt;br /&gt;82a40c37 75de&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; jne&amp;#160;&amp;#160;&amp;#160;&amp;#160; nt!KeFlushMultipleRangeTb+0x2b9 (&lt;span style="color: blue"&gt;82a40c17&lt;/span&gt;)           &lt;br /&gt;&lt;span style="color: #9b00d3"&gt;82a40c39&lt;/span&gt; 8a4d0f&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; cl,byte ptr [ebp+0Fh]           &lt;br /&gt;82a40c3c ff1558a1a082&amp;#160;&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160; dword ptr [nt!_imp_KfLowerIrql (82a0a158)]           &lt;br /&gt;82a40c42 5f&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pop&amp;#160;&amp;#160;&amp;#160;&amp;#160; edi           &lt;br /&gt;82a40c43 5e&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pop&amp;#160;&amp;#160;&amp;#160;&amp;#160; esi&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;1: kd&amp;gt; u &lt;span style="color: blue"&gt;82a40c17&lt;/span&gt; &lt;span style="color: #9b00d3"&gt;82a40c39&lt;/span&gt;           &lt;br /&gt;nt!KeFlushMultipleRangeTb+0x2b9:           &lt;br /&gt;82a40c17 46&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; inc&amp;#160;&amp;#160;&amp;#160;&amp;#160; esi           &lt;br /&gt;82a40c18 85357c3ab782&amp;#160;&amp;#160;&amp;#160; test&amp;#160;&amp;#160;&amp;#160; dword ptr [nt!HvlLongSpinCountMask (82b73a7c)],esi           &lt;br /&gt;82a40c1e 7511&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; jne&amp;#160;&amp;#160;&amp;#160;&amp;#160; nt!KeFlushMultipleRangeTb+0x2d3 (82a40c31)           &lt;br /&gt;82a40c20 f605783ab78240&amp;#160; test&amp;#160;&amp;#160;&amp;#160; byte ptr [nt!HvlEnlightenments (82b73a78)],40h           &lt;br /&gt;82a40c27 7408&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; je&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; nt!KeFlushMultipleRangeTb+0x2d3 (82a40c31)           &lt;br /&gt;82a40c29 56&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; esi           &lt;br /&gt;82a40c2a e810090a00&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160; nt!HvlNotifyLongSpinWait (82ae153f)           &lt;br /&gt;82a40c2f eb02&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; jmp&amp;#160;&amp;#160;&amp;#160;&amp;#160; nt!KeFlushMultipleRangeTb+0x2d5 (82a40c33)           &lt;br /&gt;&lt;b&gt;82a40c31&lt;/b&gt; f390&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pause &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; @eip           &lt;br /&gt;82a40c33 8b07&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #00b0f0"&gt;mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; eax,dword ptr [edi] &lt;/span&gt;          &lt;br /&gt;82a40c35 85c0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; test&amp;#160;&amp;#160;&amp;#160; eax,eax           &lt;br /&gt;82a40c37 75de&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; jne&amp;#160;&amp;#160;&amp;#160;&amp;#160; nt!KeFlushMultipleRangeTb+0x2b9 (82a40c17) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Text"&gt;This function &lt;b style="mso-bidi-font-weight: normal"&gt;tests&lt;/b&gt; a variable at &lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="color: #00b0f0"&gt;edi&lt;/span&gt;&lt;/b&gt; in each loop. While the signal is not set, the thread goes around loop, eventually executes a &lt;b&gt;pause&lt;/b&gt; instruction and then tries the test again. This thread seems to be waiting on someone to set a flag.&lt;/p&gt;     &lt;span style="color: black"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;      &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Processor #2&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;      &lt;p class="Text"&gt;Processor #2 is also trying to send an IPI using &lt;b style="mso-bidi-font-weight: normal"&gt;nt!KiIpiSendPacket&lt;/b&gt;. It was caught in the same function that Processor #0 is in.&amp;#160; In this case, it is executing the &lt;b style="mso-bidi-font-weight: normal"&gt;jmp&lt;/b&gt; instruction that is one instruction after the &lt;b&gt;pause&lt;/b&gt; which Processor #0 is executing.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;span style="font-size: 10pt"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-          &lt;br /&gt;==&amp;gt; Processor #2           &lt;br /&gt;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-           &lt;br /&gt;2: kd&amp;gt; knL           &lt;br /&gt;# ChildEBP RetAddr&amp;#160; &lt;br /&gt;00 a0c4fac0 82a40bcd nt!KiIpiSendPacket+0xdf           &lt;br /&gt;01 a0c4fafc 82b29431 nt!KeFlushMultipleRangeTb+0x26f           &lt;br /&gt;02 a0c4fbe8 82b2aef1 nt!MiFreePoolPages+0x42c           &lt;br /&gt;03 a0c4fc50 82aa6b37 nt!ExFreePoolWithTag+0x436           &lt;br /&gt;04 a0c4fc64 82c3745d nt!MmFreeAccessPfnBuffer+0x2f           &lt;br /&gt;05 a0c4fcc0 82c4b83a nt!PfpFlushBuffers+0x2ba           &lt;br /&gt;06 a0c4fd50 82c12f5e nt!PfTLoggingWorker+0xaa           &lt;br /&gt;07 a0c4fd90 82aba219 nt!PspSystemThreadStartup+0x9e           &lt;br /&gt;08 00000000 00000000 nt!KiThreadStartup+0x19&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;2: kd&amp;gt; !irql&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;Debugger saved IRQL for processor 0x2 -- 0 (LOW_LEVEL)&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; Windows Internals 4&lt;sup&gt;th&lt;/sup&gt; Edition notes that IRQL may not be saved; this explains the 0&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;2: kd&amp;gt; u @eip          &lt;br /&gt;nt!KiIpiSendPacket+0xdf:           &lt;br /&gt;82a85e7b eb9e&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; jmp&amp;#160;&amp;#160;&amp;#160;&amp;#160; nt!KiIpiSendPacket+0x7f (82a85e1b) &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; @eip           &lt;br /&gt;82a85e7d 8d4900&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lea&amp;#160;&amp;#160;&amp;#160;&amp;#160; ecx,[ecx]           &lt;br /&gt;...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Summary so far&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;      &lt;p class="Text"&gt;So at this point we can say (without any real knowledge of how IPI handling is achieved) that:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;      &lt;p class="Text"&gt;Processor #0 is waiting for Processor #1, #2 and/or #3 to respond to its IPI&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;      &lt;p class="Text"&gt;Processor #0 is running nt!ExFreePoolWithTag&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;      &lt;p class="Text"&gt;Processor #0 is reported to be at IRQL 28 (CLOCK2_LEVEL)&lt;o:p&gt;&lt;/o:p&gt; &lt;/p&gt;      &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt; &lt;/p&gt;      &lt;p class="Text"&gt;Processor #1 is waiting for a flag to bet set; probably an IPI flag&lt;o:p&gt;&lt;/o:p&gt; &lt;/p&gt;      &lt;p class="Text"&gt;Processor #0 is running nt!ExAllocatePoolWithTag&lt;o:p&gt;&lt;/o:p&gt; &lt;/p&gt;      &lt;p class="Text"&gt;Processor #1 is reported to be at IRQL 0 (LOW_LEVEL); probably incorrect&lt;o:p&gt;&lt;/o:p&gt; &lt;/p&gt;      &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt; &lt;/p&gt;      &lt;p class="Text"&gt;Processor #2 is waiting for Processor #0, #1 and/or #3 to respond to its IPI&lt;o:p&gt;&lt;/o:p&gt; &lt;/p&gt;      &lt;p class="Text"&gt;Processor #0 is running nt!ExFreePoolWithTag&lt;o:p&gt;&lt;/o:p&gt; &lt;/p&gt;      &lt;p class="Text"&gt;Processor #2 is reported to be at IRQL 0 (LOW_LEVEL); probably incorrect&lt;o:p&gt;&lt;/o:p&gt; &lt;/p&gt;      &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt; &lt;/p&gt;      &lt;p class="Text"&gt;Processor #3 has been tagged by bugcheck as being the cause&lt;o:p&gt;&lt;/o:p&gt; &lt;/p&gt;      &lt;p class="Text"&gt;Processor #3 hasn’t been looked at yet&lt;o:p&gt;&lt;/o:p&gt; &lt;/p&gt;      &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt; &lt;/p&gt;      &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Processor #3&lt;o:p&gt;&lt;/o:p&gt; &lt;/b&gt;&lt;/p&gt;      &lt;p class="Text"&gt;Analyzing Processor #3 was problematic. The Processor Context Record (PCR) was not completely captured in the dump. This happens when the bugcheck thread is unable to interrupt the target processor to gather the context – usually because it is running at the HIGH (31) IRQL.&lt;/p&gt;     &lt;span style="color: black; font-size: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;      &lt;p class="Text"&gt;When the context is missing, all of the registers are treated as being zero. The zero value &lt;span style="color: #7030a0"&gt;instruction pointer &lt;/span&gt;causes the stack to be incorrect when calling &lt;b&gt;knL&lt;/b&gt; and various other commands.&lt;o:p&gt;&lt;/o:p&gt; &lt;/p&gt;      &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;            &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-          &lt;br /&gt;==&amp;gt; Processor #3           &lt;br /&gt;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-           &lt;br /&gt;1: kd&amp;gt; ~3           &lt;br /&gt;WARNING: Process directory table base 7B59C400 doesn't match CR3 00185000           &lt;br /&gt;WARNING: Process directory table base 7B59C400 doesn't match CR3 00185000&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;3: kd&amp;gt; r          &lt;br /&gt;eax=00000000 ebx=00000000 ecx=00000000 edx=00000000 esi=00000000 edi=00000000           &lt;br /&gt;&lt;span style="color: #7030a0"&gt;eip=00000000 &lt;/span&gt;esp=00000000 ebp=00000000 iopl=0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; nv up di pl nz na po nc           &lt;br /&gt;cs=0000&amp;#160; ss=0000&amp;#160; ds=0000&amp;#160; es=0000&amp;#160; fs=0000&amp;#160; gs=0000&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; efl=00000000           &lt;br /&gt;00000000 ??&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ???&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;3: kd&amp;gt; knL          &lt;br /&gt;# ChildEBP RetAddr&amp;#160; &lt;br /&gt;WARNING: Frame IP not in any known module. Following frames may be wrong.           &lt;br /&gt;&lt;span style="color: #7030a0"&gt;00 00000000 00000000 0x0&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;      &lt;p class="Text"&gt;To determine the thread running on the processor, the &lt;b&gt;!thread&lt;/b&gt; command was used. The value for the _ETHREAD (8aaa17c8) comes from the PCR that Windows maintains as part of scheduling. Once again, like the &lt;b&gt;knL&lt;/b&gt; command, because the context was missing, the stack was not shown.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="color: #333333; mso-ansi-language: en" lang="EN"&gt;3: kd&amp;gt; !pcr          &lt;br /&gt;KPCR for Processor 3 at 87337000:           &lt;br /&gt;...           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CurrentThread: &lt;/span&gt;&lt;span style="color: lime; mso-ansi-language: en" lang="EN"&gt;8aaa17c8&lt;/span&gt;&lt;span style="color: #333333; mso-ansi-language: en" lang="EN"&gt;          &lt;br /&gt;...&lt;/span&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="color: #333333; mso-ansi-language: en" lang="EN"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="color: #333333; mso-ansi-language: en" lang="EN"&gt;3: kd&amp;gt; !thread          &lt;br /&gt;THREAD &lt;/span&gt;&lt;span style="color: lime; mso-ansi-language: en" lang="EN"&gt;8aaa17c8&lt;/span&gt;&lt;span style="color: #333333; mso-ansi-language: en" lang="EN"&gt;&amp;#160; Cid 0454.08ec&amp;#160; Teb: 00000000 Win32Thread: 00000000 RUNNING on processor 3          &lt;br /&gt;IRP List:           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; 8f8c6f68: (0006,0094) Flags: 40000404&amp;#160; Mdl: 00000000           &lt;br /&gt;Not impersonating           &lt;br /&gt;DeviceMap&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 89970d50           &lt;br /&gt;Owning Process&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 89f93ac0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Image:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ZyxApp.exe           &lt;br /&gt;Attached Process&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; N/A&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Image:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; N/A           &lt;br /&gt;Wait Start TickCount&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 117454&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Ticks: 589 (0:00:00:09.188)           &lt;br /&gt;Context Switch Count&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 37&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IdealProcessor: 3&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;UserTime&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 00:00:00.000           &lt;br /&gt;KernelTime&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 00:00:00.000           &lt;br /&gt;Win32 Start Address 0x7753fd0f           &lt;br /&gt;Stack Init 91aecfd0 Current 91aeca78 Base &lt;/span&gt;&lt;span style="color: #ffc000; mso-ansi-language: en" lang="EN"&gt;91aed000&lt;/span&gt;&lt;span style="color: #333333; mso-ansi-language: en" lang="EN"&gt; Limit &lt;/span&gt;&lt;span style="color: red; mso-ansi-language: en" lang="EN"&gt;91aea000&lt;/span&gt;&lt;span style="color: #333333; mso-ansi-language: en" lang="EN"&gt; Call 0          &lt;br /&gt;Priority 10 BasePriority 8 UnusualBoost 0 ForegroundBoost 0 IoPriority 2 PagePriority 5           &lt;br /&gt;ChildEBP RetAddr&amp;#160; Args to Child&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;00000000 00000000 00000000 00000000 00000000 0x0&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;      &lt;p class="Text"&gt;The important piece of information in the &lt;b&gt;!thread &lt;/b&gt;output was the stack limits. These values allow me to do a search of the raw stack for known symbols. I used &lt;b style="mso-bidi-font-weight: normal"&gt;dps &amp;lt;limit&amp;gt; &amp;lt;base&amp;gt;.&lt;/b&gt; What I was looking for was the first symbol after the 0xffffffff entries which has a value above it that points to a location within this stack. In this case, is it the &lt;b style="mso-bidi-font-weight: normal"&gt;hal!KfLowerIrql&lt;/b&gt; symbol that has a value (base pointer) above it. This symbol is the deepest function that the stack has got to; it doesn’t necessarily mean that the stack is at this depth now.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;3: kd&amp;gt; dps &lt;span style="color: red"&gt;91aea000&lt;/span&gt; &lt;span style="color: #ffc000"&gt;91aed000&lt;/span&gt;           &lt;br /&gt;91aea000&amp;#160; ffffffff           &lt;br /&gt;91aea004&amp;#160; ffffffff           &lt;br /&gt;…           &lt;br /&gt;91aec85c&amp;#160; ffffffff           &lt;br /&gt;91aec860&amp;#160; ffffffff           &lt;br /&gt;91aec864&amp;#160; ffffffff           &lt;br /&gt;91aec868&amp;#160; ffffffff           &lt;br /&gt;91aec86c&amp;#160; ffffffff           &lt;br /&gt;91aec870&amp;#160; ffffffff           &lt;br /&gt;91aec874&amp;#160; 0001187f           &lt;br /&gt;91aec878&amp;#160; 00000010           &lt;br /&gt;91aec87c&amp;#160; 00011a1f           &lt;br /&gt;91aec880&amp;#160; ffffffff           &lt;br /&gt;91aec884&amp;#160; 0001187f           &lt;br /&gt;91aec888&amp;#160; 82b7561f nt!MmSystemSpaceLock+0x1f           &lt;br /&gt;&lt;span style="color: red"&gt;91aec88c&lt;/span&gt;&lt;span style="color: #1f497d; mso-themecolor: text2"&gt;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;91aec89c&lt;/span&gt;&lt;span style="color: red"&gt; &lt;/span&gt;          &lt;br /&gt;91aec890&amp;#160; &lt;span style="color: lime"&gt;82e20ba9&lt;/span&gt; hal!KfLowerIrql+0x61           &lt;br /&gt;91aec894&amp;#160; 00011a00           &lt;br /&gt;91aec898&amp;#160; 82b7561f nt!MmSystemSpaceLock+0x1f           &lt;br /&gt;91aec89c&amp;#160; 91aec95c           &lt;br /&gt;91aec8a0&amp;#160; 82e1e92d hal!KeReleaseQueuedSpinLock+0x2d           &lt;br /&gt;91aec8a4&amp;#160; 82a3bdc7 nt!MiReturnNonPagedPoolVa+0x1d4           &lt;br /&gt;91aec8a8&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000001&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec8ac&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000000&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec8b0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;83cac9e8&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec8b4&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ffffffff&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec8b8&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ffffffff&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec8bc&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ffffffff&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec8c0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ffffffff&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec8c4&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ffffffff&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec8c8&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ffffffff&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec8cc&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ffffffff&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec8d0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;82e21cee hal!HalpLegacyApicWriteIcr+0xa&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec8d4&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;91aec8f0&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec8d8&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;82e2aea0 hal!HalpRequestIpiSpecifyVector+0x40&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec8dc&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000000&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec8e0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;83cac9e8&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec8e4&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;82b738cc nt!KiProcessorBlock+0xc&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec8e8&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;87300120&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec8ec&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000202&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec8f0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;91aec914&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec8f4&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;82aa6e36 nt!MiInsertPageInFreeOrZeroedList+0x25b&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec8f8&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;83cac9e8&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec8fc&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000000&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec900&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0000001f&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec904&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000001&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec908&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;83cac9e8&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec90c&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000003&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec910&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000007&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec914&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000fff&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec918&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000003&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec91c&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;82a40bcd nt!KeFlushMultipleRangeTb+0x26f&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec920&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000001&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec924&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000000&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec928&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;82a9fa43 nt!KiFlushTargetMultipleRangeTb&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec92c&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000000&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec930&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;91aec9bc&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec934&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;91aec9b8&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec938&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000001&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec93c&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000000&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec940&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;83e9cc04&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec944&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00018736&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec948&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;8733a480&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec94c&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000003&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec950&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;91aec9bc&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="color: #7030a0; mso-ansi-language: en" lang="EN"&gt;91aec954&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;91aeca40&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="color: #7030a0; mso-ansi-language: en" lang="EN"&gt;91aec958&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;82b29431 nt!MiFreePoolPages+0x42c&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec95c&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;91aec9b8&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec960&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1f000000&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec964&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;91aec9b8&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec968&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000000&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;      &lt;p class="Text"&gt;Using the first location found, I used the stack variables to build up a &lt;b&gt;k=&lt;/b&gt; command. With an x86 stack, if you select the stack location above the symbol as the &lt;/span&gt;&lt;span style="color: blue"&gt;base pointer&lt;/span&gt; and &lt;span style="color: red"&gt;stack pointer&lt;/span&gt;, and the symbol’s address as the &lt;span style="color: lime"&gt;instruction pointer&lt;/span&gt;, you’ll get a reconstructed stack.&lt;o:p&gt;&lt;/o:p&gt; &lt;/p&gt;      &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;3: kd&amp;gt; k= &lt;span style="color: blue"&gt;91aec89c&lt;/span&gt; &lt;span style="color: red"&gt;91aec88c &lt;/span&gt;&lt;span style="color: lime"&gt;82e20ba9&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;ChildEBP RetAddr&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec89c 82e1e92d hal!KfLowerIrql+0x61&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec8a0 82a3bdc7 hal!KeReleaseQueuedSpinLock+0x2d&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec9a8 82aab049 nt!MiReturnNonPagedPoolVa+0x1d4&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec9c0 82ab1685 nt!FindNodeOrParent+0x2091aec9d8 82abd820 nt!RtlLookupElementGenericTableFullAvl+0x16&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aeca0c 82e20ba9 nt!RtlLookupElementGenericTableAvl+0x18&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aeca1c 82b199d2 hal!KfLowerIrql+0x61&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aeca24 82d41ad1 nt!VfAvlUnlockShared+0x15&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aeca40 82b2aef1 nt!VfRemLockDeleteMemoryRange+0x5c&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aecaa8 963a55c5 nt!ExFreePoolWithTag+0x436&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aecac8 963a61d4 Zyx+0x5c5          &lt;br /&gt;91aecb00 82d3a6c3 Zyx+0x11d4           &lt;br /&gt;91aecb24 82a4054a nt!IovCallDriver+0x258           &lt;br /&gt;91aecb38 82c3b975 nt!IofCallDriver+0x1b           &lt;br /&gt;91aecb7c 82c2c591 nt!IopDeleteFile+0x10c           &lt;br /&gt;91aecb94 82a81d60 nt!ObpRemoveObjectRoutine+0x59           &lt;br /&gt;91aecba8 82a81cd0 nt!ObfDereferenceObjectWithTag+0x88           &lt;br /&gt;91aecbb0 82c4f308 nt!ObfDereferenceObject+0xd           &lt;br /&gt;91aecbf0 82c7dba9 nt!ObpCloseHandleTableEntry+0x21d           &lt;br /&gt;91aecc20 82c65f86 nt!ExSweepHandleTable+0x5f           &lt;br /&gt;91aecc40 82c73666 nt!ObKillProcess+0x54           &lt;br /&gt;91aeccb4 82c87051 nt!PspExitThread+0x5db           &lt;br /&gt;91aecccc 82aba8c0 nt!PsExitSpecialApc+0x22           &lt;br /&gt;91aecd1c 82a472a4 nt!KiDeliverApc+0x28b           &lt;br /&gt;91aecd1c 775570b4 nt!KiServiceExit+0x64           &lt;br /&gt;0147ff88 00000000 0x775570b4&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;      &lt;p class="Text"&gt;In this case, because &lt;b style="mso-bidi-font-weight: normal"&gt;nt!KiFlushTargetMultipleRangeTb&lt;/b&gt; was present on Processor #1 as well as being in the Processor #3 raw stack, I found the first symbol lower than this symbol on the (raw) stack that had a valid base pointer above it.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The stack was thus built around the &lt;b style="mso-bidi-font-weight: normal"&gt;nt!MiFreePoolPages&lt;/b&gt; function instead.&lt;b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;b&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec94c&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000003&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec950&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;91aec9bc&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="color: red; mso-ansi-language: en" lang="EN"&gt;91aec954&lt;/span&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;91aeca40&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec958&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;span style="color: lime"&gt;82b29431&lt;/span&gt; nt!MiFreePoolPages+0x42c&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec95c&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;91aec9b8&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec960&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1f000000&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec964&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;91aec9b8&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aec968&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000000&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;3: kd&amp;gt; k= &lt;span style="color: blue"&gt;91aeca40&lt;/span&gt; &lt;span style="color: red"&gt;91aec954&lt;/span&gt; &lt;span style="color: lime"&gt;82b29431&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;ChildEBP RetAddr&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aeca40 82b2aef1 nt!MiFreePoolPages+0x42c&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aecaa8 963a55c5 nt!ExFreePoolWithTag+0x436&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;WARNING: Stack unwind information not available. Following frames may be wrong.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aecac8 963a61d4 Zyx+0x5c5&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aecb00 82d3a6c3 Zyx+0x11d4&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aecb24 82a4054a nt!IovCallDriver+0x258&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aecb38 82c3b975 nt!IofCallDriver+0x1b&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aecb7c 82c2c591 nt!IopDeleteFile+0x10c&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aecb94 82a81d60 nt!ObpRemoveObjectRoutine+0x59&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aecba8 82a81cd0 nt!ObfDereferenceObjectWithTag+0x88&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aecbb0 82c4f308 nt!ObfDereferenceObject+0xd&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aecbf0 82c7dba9 nt!ObpCloseHandleTableEntry+0x21d&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aecc20 82c65f86 nt!ExSweepHandleTable+0x5f&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aecc40 82c73666 nt!ObKillProcess+0x54&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aeccb4 82c87051 nt!PspExitThread+0x5db&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aecccc 82aba8c0 nt!PsExitSpecialApc+0x22&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aecd1c 82a472a4 nt!KiDeliverApc+0x28b&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aecd1c 775570b4 nt!KiServiceExit+0x64&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;0147ff88 00000000 0x775570b4&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Text"&gt;It’s very hard to get much further this stack since the exact registers are not known. In particular, it is hard to determine what function above &lt;b style="mso-bidi-font-weight: normal"&gt;nt!MiFreePoolPages&lt;/b&gt; the thread is executing at the moment.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;As with the Processor #1 investigation, it is interesting to note that Processor #3 is also involved in a memory operation; specifically, it is doing a &lt;b style="mso-bidi-font-weight: normal"&gt;nt!ExFreePoolWithTag&lt;/b&gt; much like Processor #0 is.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Inter-Processor Interrupts&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;      &lt;p class="Text"&gt;The only time an IPI (interrupt) is not processed immediately is when the target processor is at IPI IRQL or higher. The most common example being when it is already processing an IPI (interrupts of the same level cannot interrupt the handler for the same IRQL). In this case, the interrupt has to be queued until the interrupt mask allows its arrival. Usually, this design allows only one IPI to be processed at any one time.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-size: 10pt"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Text"&gt;A deadlock (like) condition can arise though if an IPI is issued to a processor that is at a higher IRQL, and this processor (thread) attempts to send an IPI. The IPI logic blocks the send if there is an outstanding IPI to complete on the processor. The assumption being that interrupt queuing should be avoided as there is a probability of loss if the queue overflows.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;Looking in the Windows Internals book, there is a single sentence that says “Each interrupt level has a specific purpose. For example, the kernel issues an interprocessor interrupt (IPI) to request that another processor perform an action, such as dispatching a particular thread for execution or updating its translation look-aside buffer cache.”.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This is very interesting as the translation look-aside buffer is part of the memory manager, and the memory operations are being undertaken on all the processors.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;3rd Party Driver&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;Instead of pulling my hair out combing through the threads on the system, the IPI code, the Memory Manager code or bugcheck code, I decided to look at the 3rd party driver in processor #3 to see if it was changing the IRQL.&lt;/span&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;The first step was to find the bound of the &lt;span style="color: #7030a0"&gt;Zyx+0x5c5 &lt;/span&gt;function.&amp;#160; The end address of the assembler is easy to determine, it is Zyx+0x5c5.&amp;#160; The question is, how big is the function? To work that out, you look at the assembler of the caller.&amp;#160; The caller’s assembler will point to the starting instruction in the Zyx+0x5c5 function.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;3: kd&amp;gt; k= &lt;span style="color: blue"&gt;91aeca40&lt;/span&gt; &lt;span style="color: red"&gt;91aec954&lt;/span&gt; &lt;span style="color: lime"&gt;82b29431&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;ChildEBP RetAddr&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aeca40 82b2aef1 nt!MiFreePoolPages+0x42c&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aecaa8 963a55c5 nt!ExFreePoolWithTag+0x436&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;WARNING: Stack unwind information not available. Following frames may be wrong.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="color: #943634; mso-ansi-language: en; mso-themecolor: accent2; mso-themeshade: 191" lang="EN"&gt;91aecac8 963a61d4 Zyx+0x5c5&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="color: #7030a0; mso-ansi-language: en" lang="EN"&gt;91aecb00 82d3a6c3 Zyx+0x11d4&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aecb24 82a4054a nt!IovCallDriver+0x258&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aecb38 82c3b975 nt!IofCallDriver+0x1b&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;91aecb7c 82c2c591 nt!IopDeleteFile+0x10c&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;3: kd&amp;gt; ub &lt;span style="color: #9b00d3"&gt;Zyx+0x11d4            &lt;br /&gt;&lt;/span&gt;Zyx+0x11b7:           &lt;br /&gt;963a61b7 ff7008&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; dword ptr [eax+8]           &lt;br /&gt;963a61ba 52&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; edx           &lt;br /&gt;963a61bb 6a01&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; 1           &lt;br /&gt;963a61bd ff7018&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; dword ptr [eax+18h]           &lt;br /&gt;963a61c0 e827fdffff&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160; Zyx+0xeec (963a5eec)           &lt;br /&gt;963a61c5 e9f1000000&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; jmp&amp;#160;&amp;#160;&amp;#160;&amp;#160; Zyx+0x12bb (963a62bb)           &lt;br /&gt;963a61ca e8d3fcffff&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160; Zyx+0xea2 (963a5ea2)           &lt;br /&gt;963a61cf e89ef3ffff&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160; Zyx+0x572 (&lt;span style="color: #ffc000"&gt;963a5572&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;3: kd&amp;gt; u &lt;span style="color: #ffc000"&gt;963a5572&lt;/span&gt; &lt;span style="color: #943634; mso-themecolor: accent2; mso-themeshade: 191"&gt;Zyx+0x5c5 &lt;/span&gt;&lt;span style="color: red"&gt;           &lt;br /&gt;&lt;/span&gt;Zyx+0x572:           &lt;br /&gt;963a5572 8bff&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; edi,edi           &lt;br /&gt;963a5574 55&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; ebp           &lt;br /&gt;963a5575 8bec&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; ebp,esp           &lt;br /&gt;963a5577 51&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; ecx           &lt;br /&gt;963a5578 53&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; ebx           &lt;br /&gt;963a5579 56&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; esi           &lt;br /&gt;963a557a 57&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; edi           &lt;br /&gt;&lt;span style="color: red"&gt;963a557b b11f&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; cl,1Fh&lt;/span&gt; &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; 0x1F = 0n31 (HIGH)           &lt;br /&gt;&lt;span style="color: red"&gt;963a557d ff15006b3a96&amp;#160;&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160; dword ptr [Zyx+0x1b00 (&lt;/span&gt;&lt;span style="color: lime"&gt;963a6b00&lt;/span&gt;&lt;span style="color: red"&gt;)] &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; hal!KfRaiseIrql&lt;/span&gt; (via lookup)           &lt;br /&gt;963a5583 bb14813a96&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; ebx,offset Zyx+0x3114 (963a8114)           &lt;br /&gt;963a5588 8bcb&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; ecx,ebx           &lt;br /&gt;963a558a 8845ff&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; byte ptr [ebp-1],al           &lt;br /&gt;963a558d e8c2100000&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160; Zyx+0x1654 (963a6654) &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; [Unresolved]           &lt;br /&gt;963a5592 a1746d3a96&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; eax,dword ptr [Zyx+0x1d74 (963a6d74)]           &lt;br /&gt;963a5597 85c0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; test&amp;#160;&amp;#160;&amp;#160; eax,eax           &lt;br /&gt;963a5599 8b35586b3a96&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; esi,dword ptr [Zyx+0x1b58 (&lt;span style="color: blue"&gt;963a6b58&lt;/span&gt;)] &amp;lt;&amp;lt;&amp;lt;&amp;lt; nt!ExFreePoolWithTag (via lookup)           &lt;br /&gt;963a559f 7413&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; je&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Zyx+0x5b4 (963a55b4)           &lt;br /&gt;963a55a1 8b7808&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; edi,dword ptr [eax+8]           &lt;br /&gt;963a55a4 6a00&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; 0           &lt;br /&gt;963a55a6 50&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; eax           &lt;br /&gt;963a55a7 ffd6&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160; esi&amp;#160; &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; nt!ExFreePoolWithTag (via 963a5599)           &lt;br /&gt;963a55a9 85ff&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; test&amp;#160;&amp;#160;&amp;#160; edi,edi           &lt;br /&gt;963a55ab 8bc7&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; eax,edi           &lt;br /&gt;963a55ad a3746d3a96&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; dword ptr [Zyx+0x1d74 (963a6d74)],eax           &lt;br /&gt;963a55b2 75ed&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; jne&amp;#160;&amp;#160;&amp;#160;&amp;#160; Zyx+0x5a1 (963a55a1)           &lt;br /&gt;963a55b4 a1a06d3a96&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; eax,dword ptr [Zyx+0x1da0 (963a6da0)]           &lt;br /&gt;963a55b9 85c0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; test&amp;#160;&amp;#160;&amp;#160; eax,eax           &lt;br /&gt;963a55bb 7413&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; je&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Zyx+0x5d0 (963a55d0)           &lt;br /&gt;963a55bd 8b7808&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; edi,dword ptr [eax+8]           &lt;br /&gt;963a55c0 6a00&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; 0           &lt;br /&gt;963a55c2 50&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; eax           &lt;br /&gt;963a55c3 ffd6&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160; esi &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; nt!ExFreePoolWithTag (via 963a5599)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;3: kd&amp;gt; ln poi(&lt;span style="color: lime"&gt;963a6b00&lt;/span&gt;)           &lt;br /&gt;(82e20844)&amp;#160;&amp;#160; hal!KfRaiseIrql&amp;#160;&amp;#160; |&amp;#160; (82e208c6)&amp;#160;&amp;#160; hal!HalpDispatchSoftwareInterrupt           &lt;br /&gt;Exact matches:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="color: black"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Debug"&gt;&lt;span style="mso-ansi-language: en" lang="EN"&gt;3: kd&amp;gt; ln poi(&lt;span style="color: blue"&gt;963a6b58&lt;/span&gt;)           &lt;br /&gt;(82b2aaba)&amp;#160;&amp;#160; nt!ExFreePoolWithTag&amp;#160;&amp;#160; |&amp;#160; (82b2b660)&amp;#160;&amp;#160; nt!ExDeferredFreePool           &lt;br /&gt;Exact matches:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;      &lt;p class="Text"&gt;The next step was to work out what functions the &lt;b&gt;Zyx+0x5c5&lt;/b&gt; function called, and with what parameters. The assembler didn’t make this immediately obvious. The address of the function calls were lookups. This is common when the address is imported by the code, instead of being bound. To get the function name of the call, I dereferenced the pointer (&lt;b&gt;poi(&amp;lt;addr&amp;gt;&lt;/b&gt;) and passed the address to &lt;b&gt;ln&lt;/b&gt; so that it &lt;u&gt;l&lt;/u&gt;isted the &lt;u&gt;n&lt;/u&gt;earest symbols.&lt;o:p&gt;&lt;/o:p&gt; &lt;/p&gt;      &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;      &lt;p class="Text"&gt;The first function confirmed some the theory. A call to &lt;b&gt;hal!KfRaiseIrql&lt;/b&gt; was being made with a IRQL of &lt;b&gt;HIGH&lt;/b&gt; (31). And this was prior to a code path that called functions.&lt;o:p&gt;&lt;/o:p&gt; &lt;/p&gt;      &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;      &lt;p class="Text"&gt;The value of the @esi register was determined to be &lt;b&gt;nt!ExFreePoolWithTag&lt;/b&gt;. This matched the function name in the reconstructed stack (&lt;b&gt;nt!ExFreePoolWithTag+0x436&lt;/b&gt;) and confirmed that the stack was reconstructed in this area correctly.&lt;o:p&gt;&lt;/o:p&gt; &lt;/p&gt;      &lt;p class="Text"&gt;&lt;span style="color: black; font-size: 10pt"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;      &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Conclusion&lt;o:p&gt;&lt;/o:p&gt; &lt;/b&gt;&lt;/p&gt;      &lt;p class="Text"&gt;The Zyx function raised IRQL to HIGH_LEVEL before calling &lt;b&gt;nt!ExFreePoolWithTag&lt;/b&gt;&lt;span style="mso-bidi-font-weight: bold"&gt;. This function &lt;/span&gt;caused a Translation Look-aside Buffer (TLB) flush via &lt;b style="mso-bidi-font-weight: normal"&gt;nt!KiFlushTargetMultipleRangeTb&lt;/b&gt;) to occur. This in turn caused an IPI notification to the other processors (via &lt;b style="mso-bidi-font-weight: normal"&gt;nt!KiIpiSendPacket&lt;/b&gt;) to indicate the release of the TLB memory.&lt;o:p&gt;&lt;/o:p&gt; &lt;/p&gt;      &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt; &lt;/p&gt;      &lt;p class="Text"&gt;The Processor #0 IPI was stuck as incomplete because Processor #3 could not be interrupted, and Processor #3 did not lower its IRQL as it was waiting to send its own IPI upon completion of the Processor #0 IPI – thus a deadlock was formed.&lt;o:p&gt;&lt;/o:p&gt; &lt;/p&gt;      &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt; &lt;/p&gt;      &lt;p class="Text"&gt;I contacted the driver’s author and organized a new version that used the SYNCH (27) IRQL (the level immediately under IPI). The new build was sent to the customer and the immediate bugcheck that they were observing in their test environment disappeared.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Although this is not an ideal solution, it was sufficient for the time being.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;An ideal solution would be to follow the documentation for &lt;a href="http://msdn.microsoft.com/en-us/library/ff544593.aspx"&gt;ExFreePoolWithTag&lt;/a&gt; and not make the call with an IRQL greater than DISPATCH_LEVEL.&lt;/p&gt;     &lt;span style="color: black; font-size: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;      &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt; &lt;/p&gt;      &lt;p class="Text"&gt;I hope this case has provided a good foundation in how to recover and navigate through stacks without symbols or context. Once you understand the mechanics of calling conventions, the values needed to bound a disassembling operation and/or a stack reassemble are quite easy to determine.&lt;/p&gt;     &lt;span style="color: black; font-size: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;      &lt;p class="Text"&gt;&lt;span style="font-size: 10pt"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10230314" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Debugging/">Debugging</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/windows/">windows</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/bugcheck/">bugcheck</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/windbg/">windbg</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/debug/">debug</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/kernel/">kernel</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Andrew/">Andrew</category></item><item><title>Bcdedit Tips and Tricks For Debugging Part 1</title><link>http://blogs.msdn.com/b/ntdebugging/archive/2011/09/21/bcdedit-tips-and-tricks-for-debugging-part-1.aspx</link><pubDate>Wed, 21 Sep 2011 23:39:53 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10215065</guid><dc:creator>ntdebug</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ntdebugging/rsscomments.aspx?WeblogPostID=10215065</wfw:commentRss><comments>http://blogs.msdn.com/b/ntdebugging/archive/2011/09/21/bcdedit-tips-and-tricks-for-debugging-part-1.aspx#comments</comments><description>&lt;div class="WordSection1"&gt;   &lt;p class="Text"&gt;Hello everyone, my name is Sean Walker, and I am on the Platforms OEM team in Washington. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;This article is for those people who have had a hard time switching from the old boot.ini configuration to the new BCD store (myself included). Doing the simple tasks such as enabling kernel debugging over com1 are easy to do with bcdedit.exe or the msconfig GUI, you just enable them and reboot the computer. However, if you need to do something more advanced such as break into the early boot process during resume from hibernation, things get a lot more complicated.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;This article has some samples for enabling and disabling debug settings that you may not be familiar with, and a list of bcdedit debug settings for Windows Vista/Server 2008 and Windows 7/Server 2008 R2. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;This information has been helpful to me for quickly and accurately getting to the debug at hand rather than fumbling around with bcdedit. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;Much of the following information has been taken from various sources, including the windbg help files, the &lt;a href="http://blogs.msdn.com/windowsvistanow/archive/2009/07/28/bcdedit-and-debug-setup.aspx"&gt;OEM team blog&lt;/a&gt;, the &lt;a href="http://msdn.microsoft.com/en-us/library/ff542205(v=VS.85).aspx"&gt;MSDN bcdedit reference&lt;/a&gt;, and the &lt;a href="http://www.microsoft.com/whdc/devtools/debugging/default.mspx"&gt;WHDC debugger site&lt;/a&gt;. &lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b&gt;NOTE:&lt;/b&gt; For the examples below, you will need to run bcdedit.exe from an administrator (UAC-elevated) command prompt. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;To output a summary view of the current state of the BCD store, just run &amp;quot;bcdedit.exe&amp;quot; from the command prompt. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;To get detailed information about all of the store(s) that Windows knows about, use the following command:&lt;/p&gt;    &lt;p class="Debug"&gt;bcdedit /enum all&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b&gt;What is a BCD store?&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;A BCD store is a binary file that contains boot configuration data for Windows, basically it is a small registry file. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;Boot applications use the system BCD store, located on the system partition, during the boot process. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;You can also create additional BCD stores in separate files but only one store at a time can be designated as the system store.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b&gt;NOTE:&lt;/b&gt; The &amp;quot;/store&amp;quot; switch can be used to specify a particular BCD store for bcdedit commands (instead of the default store). &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;To enumerate all the settings in another BCD store, in this case e:\bcd_store\BCD, use the following command:&lt;/p&gt;    &lt;p class="Debug"&gt;bcdedit /store e:\bcd_store\BCD /enum all&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;This will show you which options are currently set, and what their values are. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;When /store switch is omitted, the system store is used.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;   &lt;b&gt;Using bootdebug&lt;/b&gt;     &lt;p class="Text"&gt;To enable debugging for early boot problems, you may need to enable the bootdebug switch. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;This is easy to do with bcdedit:&lt;/p&gt;    &lt;p class="Debug"&gt;bcdedit /set bootdebug on&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;However, this only sets bootdebug for the current &amp;quot;boot application&amp;quot;, which is generally winload.exe, so it does not break into the very early boot process. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;There are multiple applications used for booting, hibernating, and resuming (bootmgr.exe, winload.exe and winresume.exe are examples of these). &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;Each application (called BCD Objects) has its own settings (called BCD Elements) in the BCD store and each can be modified globally and/or individually.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;So, to deal with different (or multiple) debug scenarios, you just enable boot debugging based on the boot application you are concerned with. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;For early debugging, you can enable bootdebug for bootmgr:&lt;/p&gt;    &lt;p class="Debug"&gt;bcdedit /set {bootmgr} bootdebug on&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;To set bootdebug for winload.exe (which will most often be your current, and default, boot object) all three of the following will give you the same result:&lt;/p&gt;    &lt;p class="Debug"&gt;bcdedit /set bootdebug on &lt;/p&gt;    &lt;p class="Debug"&gt;bcdedit /set {current} bootdebug on&lt;/p&gt;    &lt;p class="Debug"&gt;bcdedit /set {default} bootdebug on&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;If you are modifying the settings in another store, or are booted into another OS on the same computer (such as WinPE), you need to specify the location of the BCD store:&lt;/p&gt;    &lt;p class="Debug"&gt;bcdedit /store d:\Boot\BCD /set {default} bootdebug on&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Not all of the boot objects have &amp;quot;friendly&amp;quot; names, so you may need to specify the full GUID (Globally Unique ID) to modify it. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;As an example, if you wanted to enable bootdebug on resume from hibernation, you would include the identifier (see figure 1) for the &amp;quot;Resume from Hibernate&amp;quot; object:&lt;/p&gt;    &lt;p class="Debug"&gt;bcdedit /set {89a932d0-d5bc-11e0-a0af-00215add5ebc} bootdebug on&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image001" border="0" alt="image001" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-00-metablogapi/7028.image001_5F00_4C7C8453.png" width="642" height="429" /&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Caption"&gt;Figure 1: Color coded bcdedit output&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b&gt;Why won't my USB or 1394 debug work?&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;When there are multiple debug ports of a certain type in a computer Windows may not default to the correct one for your situation. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;This happens most commonly when there are either multiple 1394 host controllers or USB EHCI controllers. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;When this occurs it can range from a slight inconvenience (different port is used so the cable needs to be plugged into another port), to complete failure (internal port is used, which is not accessible). &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;In the case of USB debugging the Intel USB 2.0 specification only provides one debug port, so debugging is not possible if the wrong host controller is used.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;There are several caveats with USB debugging, not the least of which is that you need to buy a separate, expensive, debug cable. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;Some of the difficulties and implementation details necessary to get USB debugging to work are encompassed in &lt;a href="http://www.microsoft.com/whdc/connect/usb/USBFAQ_intermed.mspx"&gt;the WHDC USB FAQ&lt;/a&gt; and in &lt;a href="http://blogs.msdn.com/b/usbcoreblog/archive/2010/10/25/setting-up-kernel-debugging-with-usb-2-0.aspx"&gt;Setting Up Kernel Debugging with USB 2.0&lt;/a&gt;.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b&gt;NOTE:&lt;/b&gt; A correction to the WHDC USB documentation for Windows 7/Windows 2008 R2 is that the busparams switch now takes decimal rather than hexadecimal values, and the &amp;quot;loadoptions&amp;quot; parameter is no longer required. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;So, to enable the busparams element (for USB or 1394 debugging) in Vista/2008, you would use something like this:&lt;/p&gt;    &lt;p class="Debug"&gt;bcdedit /set {current} loadoptions busparams=0.1D.7&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;And the Win7/2008 R2 example would be:&lt;/p&gt;    &lt;p class="Debug"&gt;bcdedit /set {current} busparams 0.29.7&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;In the case of loadoptions or busparams, deleting the setting is not as easy as changing a flag from yes to no. You must specifically delete the value to get rid of it, and one of the examples below can be used:&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;For Vista/2008:&lt;/p&gt;    &lt;p class="Debug"&gt;bcdedit /deletevalue {current} loadoptions&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;And Windows 7/2008 R2:&lt;/p&gt;    &lt;p class="Debug"&gt;bcdedit /deletevalue {current} busparams&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b&gt;Bcdedit settings and examples&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;This is just scratching the surface of using bcdedit for your troubleshooting and/or debugging needs, so there are more articles to follow. Part 2 will include some more detailed debugging scenarios, such as Hyper-V guest and host debugging. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;Below is a consolidated table with many of the debugging switches/settings as well as a number of different usage examples.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b&gt;Table of debug-related bcdedit settings&lt;/b&gt;&lt;/p&gt;    &lt;table style="border-bottom: #dddddd 1pt solid; border-left: #dddddd 1pt solid; width: 97%; margin-left: 4.1pt; border-top: #dddddd 1pt solid; border-right: #dddddd 1pt solid; mso-cellspacing: 1.5pt; mso-yfti-tbllook: 1184; mso-border-alt: solid #dddddd .75pt" class="MsoNormalTable" border="1" cellpadding="0" width="97%"&gt;&lt;tbody&gt;       &lt;tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;         &lt;td style="border-bottom: #c8cdde 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: #cccccc; border-top: #cccccc 1pt solid; border-right: #cccccc 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .25pt; mso-border-bottom-alt: solid #c8cdde .75pt" valign="bottom"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: #000066; font-size: 8pt; mso-bidi-font-weight: bold; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Option &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: #c8cdde 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: #cccccc; border-top: #cccccc 1pt solid; border-right: #cccccc 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .25pt; mso-border-bottom-alt: solid #c8cdde .75pt" valign="bottom"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: #000066; font-size: 8pt; mso-bidi-font-weight: bold; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Description &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="mso-yfti-irow: 1"&gt;         &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-bidi-font-weight: bold; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;bootdebug&lt;/span&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Enables or disables the boot debugger for a specified boot entry. Although this command works for any boot entry, it is effective only for boot applications.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Enable value(s): &lt;strong&gt;on, 1&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Disable value(s): &lt;strong&gt;off, 0&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;&lt;strong&gt;Bcdedit /set bootdebug on&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="mso-yfti-irow: 2"&gt;         &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-bidi-font-weight: bold; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;debug&lt;/span&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Enables or disables the kernel debugger for a specified boot entry.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Enable value(s): &lt;strong&gt;on, 1&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Disable value(s): &lt;strong&gt;off, 0&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height: 49.75pt; mso-yfti-irow: 3"&gt;         &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; height: 49.75pt; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-bidi-font-weight: bold; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;&lt;strong&gt;/dbgsettings&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; height: 49.75pt; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Used to modify the global settings for the debug connection (does not include hypervisor).&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Values:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Can change all settings at once instead of using the /set command to change them individually. Usage example:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt; mso-bidi-font-weight: bold; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;bcdedit /dbgsettings 1394&lt;/span&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt; channel:30&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="mso-yfti-irow: 4"&gt;         &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;&lt;strong&gt;debugport&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Used to specify the debugger type.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Values:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Serial port – &lt;strong&gt;com1, com2, comx&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;1394 port – &lt;strong&gt;1394&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;USB port - &lt;strong&gt;USB&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height: 30.85pt; mso-yfti-irow: 5"&gt;         &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; height: 30.85pt; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-bidi-font-weight: bold; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;&lt;strong&gt;channel&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; height: 30.85pt; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Specifies 1394 channel used.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Values:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;Decimal integer between &lt;strong&gt;0&lt;/strong&gt; and &lt;strong&gt;62&lt;/strong&gt;, inclusive.&lt;/span&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height: 25pt; mso-yfti-irow: 6"&gt;         &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; height: 25pt; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-bidi-font-weight: bold; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;&lt;strong&gt;baudrate&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; height: 25pt; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Used to specify the baud rate of a serial debug port.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Values: &lt;/span&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;&lt;strong&gt;9600, 19200, 38400, 57600, 115200&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height: 21.4pt; mso-yfti-irow: 7"&gt;         &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; height: 21.4pt; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-bidi-font-weight: bold; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;&lt;strong&gt;targetname&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; height: 21.4pt; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;Specifies a string to use as the identification for the USB 2.0 connection. This string can be any value.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;Usage example:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;&lt;strong&gt;bcdedit /dbgsettings usb targetname:usbdebug&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height: 32.65pt; mso-yfti-irow: 8"&gt;         &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; height: 32.65pt; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-bidi-font-weight: bold; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;&lt;strong&gt;/hypervisorsettings&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; height: 32.65pt; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;Used the same way as /dbgsettings to configure all settings at once. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;Usage example:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;&lt;strong&gt;bcdedit /hypervisorsettings 1394 channel:10&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height: 50.65pt; mso-yfti-irow: 9"&gt;         &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; height: 50.65pt; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-bidi-font-weight: bold; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;&lt;strong&gt;hypervisordebug&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; height: 50.65pt; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;Enables or disables hypervisor debug mode. This is for debugging a Hyper-V host system.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Enable value(s): &lt;strong&gt;on, 1&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Disable value(s): &lt;strong&gt;off, 0&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;Usage example:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;&lt;strong&gt;bcdedit /set {current} hypervisordebug on&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height: 40.75pt; mso-yfti-irow: 10"&gt;         &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; height: 40.75pt; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt; mso-bidi-font-weight: bold"&gt;&lt;strong&gt;/noumex&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: #333333"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; height: 40.75pt; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;Specifies that the kernel debugger ignores user-mode exceptions. By default, the kernel debugger breaks for certain user-mode exceptions, such as STATUS_BREAKPOINT and STATUS_SINGLE_STEP. The &lt;span style="mso-bidi-font-weight: bold"&gt;&lt;strong&gt;/noumex&lt;/strong&gt;&lt;/span&gt; parameter is effective only when there is no user-mode debugger attached to the process.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height: 33.1pt; mso-yfti-irow: 11"&gt;         &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; height: 33.1pt; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt; mso-bidi-font-weight: bold"&gt;&lt;strong&gt;/start&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; height: 33.1pt; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;This option specifies the debugger start policy. If a start policy is not specified, ACTIVE is the default.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;Values: &lt;strong&gt;active, disable, autoenable&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height: 50.65pt; mso-yfti-irow: 12"&gt;         &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; height: 50.65pt; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt; mso-bidi-font-weight: bold"&gt;&lt;strong&gt;loadoptions&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; height: 50.65pt; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;Used to describe settings that are not covered by other types. One setting that is relevant here is busparams.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;Values: Any value followed by the setting. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;Usage example (Vista/2008):&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;&lt;strong&gt;bcdedit /set {current} loadoptions busparams=0.1d.0&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height: 50.65pt; mso-yfti-irow: 13"&gt;         &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; height: 50.65pt; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt; mso-bidi-font-weight: bold"&gt;&lt;strong&gt;busparams&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; height: 50.65pt; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;A boot setting (specified with &lt;strong&gt;loadoptions&lt;/strong&gt; key word) used to point to the PCI address of the debugger in use. The PCI bus, device, and function are used, in the format &lt;strong&gt;bb.dd.ff&lt;/strong&gt;. This is generally used to identify the location of a 1394 or USB debug port. In Vista/2008, hexadecimal values are used, whereas decimal values are used for Win7.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;Values: Decimal values between 0 and 255.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;Usage example:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;In Win7 - &lt;strong&gt;bcdedit /set busparams 0.29.0&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;In Vista - &lt;strong&gt;bcdedit /set loadoptions busparams=0.1d.0&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height: 50.65pt; mso-yfti-irow: 14"&gt;         &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; height: 50.65pt; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt; mso-bidi-font-weight: bold"&gt;&lt;strong&gt;kernel&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; height: 50.65pt; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;The loadoptions parameter used to point to a different kernel binary. This can be used to test with a checked or instrumented version of the kernel without replacing the existing one. The updated binary MUST be placed in the %windir%\system32 folder to be used&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;Values: The 8.3 filename of the replacement kernel include the exe extension.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;Usage examples: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;In Win7 – &lt;strong&gt;bcdedit /set kernel kernchk.exe&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;In Vista - &lt;strong&gt;bcdedit /set loadoptions kernel=kernchk.exe&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height: 50.65pt; mso-yfti-irow: 15"&gt;         &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; height: 50.65pt; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt; mso-bidi-font-weight: bold"&gt;&lt;strong&gt;hal&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; height: 50.65pt; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;The loadoptions parameter used to point to a different hal binary. This can be used to test with a checked or instrumented version of the kernel without replacing the existing one. The updated binary MUST be placed in the %windir%\system32 folder to be used&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;Values: the 8.3 filename of the replacement kernel include the .dll extension.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;Usage examples: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;In Win7 – &lt;strong&gt;bcdedit /set hal halchk.dll&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;In Vista - &lt;strong&gt;bcdedit /set loadoptions hal=halchk.dll&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height: 34.9pt; mso-yfti-irow: 16; mso-yfti-lastrow: yes"&gt;         &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; height: 34.9pt; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt; mso-bidi-font-weight: bold"&gt;&lt;strong&gt;testsigning&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: #cccccc 1pt solid; border-left: #cccccc 1pt solid; padding-bottom: 4.1pt; padding-left: 4.1pt; padding-right: 4.1pt; background: white; height: 34.9pt; border-top: #cccccc 1pt solid; border-right: #d5d5d3 1pt solid; padding-top: 4.1pt; mso-border-alt: solid #cccccc .75pt; mso-border-right-alt: solid #d5d5d3 .75pt" valign="top"&gt;           &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;Controls whether Windows 7, Windows Server 2008, or Windows Vista will load any type of test-signed kernel-mode code. This option is not set by default, which means test-signed kernel-mode drivers on 64-bit versions of Windows 7, Windows Server 2008, and Windows Vista will not load without setting the testsigning switch&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Enable value(s): &lt;strong&gt;on, 1&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Disable value(s): &lt;strong&gt;off, 0&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Usage example:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="Text"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: black; font-size: 8pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Bcdedit /set testsigning on&lt;/span&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10215065" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Debugging/">Debugging</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/windows/">windows</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/boot/">boot</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/debug/">debug</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Walker/">Walker</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/bcdedit/">bcdedit</category></item><item><title>Determining The Interrupt Line For A Particular PCI-E Slot</title><link>http://blogs.msdn.com/b/ntdebugging/archive/2011/09/01/determining-the-interrupt-line-for-a-particular-pci-e-slot.aspx</link><pubDate>Thu, 01 Sep 2011 20:21:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10204639</guid><dc:creator>ntdebug</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ntdebugging/rsscomments.aspx?WeblogPostID=10204639</wfw:commentRss><comments>http://blogs.msdn.com/b/ntdebugging/archive/2011/09/01/determining-the-interrupt-line-for-a-particular-pci-e-slot.aspx#comments</comments><description>&lt;p&gt;Hi debuggers, this is Graham McIntyre again. These days I’m working more closely with hardware so I thought I’d share some hardware related debugging tips.&amp;#160; I recently debugged an issue where a PCI-E storage device failed to work after hot swapping it from one slot to another slot on the system without rebooting.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;We determined the issue was due to the device not receiving interrupts once it was moved.&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;So in the process I learned how line based interrupts are routed to a particular PCI slot.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Interrupt routing is quite a hefty subject, but here’s one example of how to determine what the expected interrupt line is for a particular PCI-E slot using a live kernel debug.&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;There are two ways the routing can be defined in the ACPI tables:&lt;/p&gt;  &lt;div class="WordSection1"&gt;   &lt;ol&gt;     &lt;li&gt;       &lt;div class="Text"&gt;Static routing (most common for APIC systems)&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div class="Text"&gt;Link Node routing (most common for PIC systems)&lt;/div&gt;     &lt;/li&gt;   &lt;/ol&gt; &lt;/div&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;Since APIC is much more common, I am focusing on method 1 for static routing. Though, it is legal to use Link Node routing with IOAPICs, it’s not common, so I am omitting how to parse that.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This is also specifically for devices that use physical line based interrupts (LBI), not Message Signaled Interrupts (MSI).&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;Here is the general method for determining the static routing IRQ for a particular device:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;     &lt;div class="Text"&gt;Locate the devstack for the device, and determine its parent devices in the PCI hierarchy. (!pcitree)&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div class="Text"&gt;Determine the interrupt pin which the device uses&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div class="Text"&gt;Walk the parent devices to find the closest PCI Routing Table (_PRT) which will describe the mapping of interrupt pin to IRQ.&lt;/div&gt;   &lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;       &lt;div class="Text"&gt;If the parent device does not have a _PRT, then swizzle the pin, since the pin number can change when moving to the upstream side of the PCI bridge (you may end up swizzling the pin several times).&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;We will discuss how to swizzle the pin number later in this article.&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div class="Text"&gt;If the parent device has a _PRT, then move to the next step&lt;/div&gt;     &lt;/li&gt;   &lt;/ol&gt;    &lt;li&gt;     &lt;div class="Text"&gt;Convert the IntPin number from PCI to ACPI numbering&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div class="Text"&gt;Parse the _PRT method to find the static routing table&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div class="Text"&gt;Find the routing entry which represents our IntPin&lt;/div&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;Here’s the in-depth steps, along with an example:&lt;/p&gt;  &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Step 1: &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;Locate the devstack for the device, and determine its parent devices in the PCI hierarchy.&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;To determine this, use !pcitree to dump the PCI hierarchy. Then locate your device by ven/dev ID.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;You could also use !devnode to dump the hierarchy.&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;The way !pcitree shows the hierarchy may be a little confusing.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;When it encounters a PCI bridge, it dumps the child buses under the bridge. The indenting tells you what bus a device is on. A device is always indented one level from the entry of the parent bus.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;In my case, I know the device I'm interested in is VEN &lt;span style="background: yellow; mso-highlight: yellow"&gt;FEFE &lt;/span&gt;DEV &lt;span style="background: lime; mso-highlight: lime"&gt;1550&lt;/span&gt;.&lt;/p&gt;  &lt;p class="Debug"&gt;kd&amp;gt; !pcitree&lt;/p&gt;  &lt;p class="Debug"&gt;Bus 0x0 (FDO Ext fffffa80053efe00)&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;(d=0,&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;f=0) 80863406 devext 0xfffffa80054d51b0 devstack 0xfffffa80054d5060 0600 Bridge/HOST to PCI&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;(d=1,&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;f=0) 80863408 devext 0xfffffa80054d9b70 devstack 0xfffffa80054d9a20 0604 Bridge/PCI to PCI&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Bus 0x1 (FDO Ext fffffa80054e8680)&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;(d=0,&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;f=0) 14e41639 devext 0xfffffa80051b91b0 devstack 0xfffffa80051b9060 0200 Network Controller/Ethernet&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;(d=0,&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;f=1) 14e41639 devext 0xfffffa80051ba1b0 devstack 0xfffffa80051ba060 0200 Network Controller/Ethernet&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;(d=3,&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;f=0) 8086340a devext 0xfffffa80054dab70 devstack 0xfffffa80054daa20 0604 Bridge/PCI to PCI&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Bus 0x2 (FDO Ext fffffa80054e9460)&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;(d=0,&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;f=0) 14e41639 devext 0xfffffa80051bcb70 devstack 0xfffffa80051bca20 0200 Network Controller/Ethernet&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;(d=0,&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;f=1) 14e41639 devext 0xfffffa80051cab70 devstack 0xfffffa80051caa20 0200 Network Controller/Ethernet&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;(d=4,&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;f=0) 8086340b devext 0xfffffa80054dbb70 devstack 0xfffffa80054dba20 0604 Bridge/PCI to PCI&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Bus 0x3 (FDO Ext fffffa80054ec190)&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;(d=0,&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;f=0) 10000079 devext 0xfffffa80051cd1b0 devstack 0xfffffa80051cd060 0104 Mass Storage Controller/RAID&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;(d=5,&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;f=0) 8086340c devext 0xfffffa80054dcb70 devstack 0xfffffa80054dca20 0604 Bridge/PCI to PCI&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Bus 0x4 (FDO Ext fffffa80054ede00)&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;No devices have been enumerated on this bus.&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;(d=6,&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;f=0) 8086340d devext 0xfffffa80054ddb70 devstack 0xfffffa80054dda20 0604 Bridge/PCI to PCI&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Bus 0x5 (FDO Ext fffffa80054ee9c0)&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;No devices have been enumerated on this bus.&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="color: red"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;(d=7,&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;f=0) 8086340e devext 0xfffffa80054deb70 devstack 0xfffffa80054dea20 0604 Bridge/PCI to PCI &amp;lt;&amp;lt; Root Port&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Bus 0x6 (FDO Ext fffffa80054f1190)&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #00b050"&gt;(d=0,&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;f=0) abcd8632 devext 0xfffffa80051d91b0 devstack 0xfffffa80051d9060 0604 Bridge/PCI to PCI &amp;lt;&amp;lt; Upstream switch port&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Bus 0x7 (FDO Ext fffffa80051cd850)&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;(d=4,&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;f=0) abcd8632 devext 0xfffffa80051d71b0 devstack 0xfffffa80051d7060 0604 Bridge/PCI to PCI&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;Bus 0x8 (FDO Ext fffffa8006f44ac0)&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;No devices have been enumerated on this bus.&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;(d=5,&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;f=0) abcd8632 devext 0xfffffa80058d6a10 devstack 0xfffffa80058d68c0 0604 Bridge/PCI to PCI&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Bus 0x9 (FDO Ext fffffa80051ba850)&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;No devices have been enumerated on this bus.&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #7030a0"&gt;(&lt;b style="mso-bidi-font-weight: normal"&gt;d=6&lt;/b&gt;,&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;f=0) abcd8632 devext 0xfffffa8007075b70 devstack 0xfffffa8007075a20 0604 Bridge/PCI to PCI &amp;lt;&amp;lt; Parent PDO (Downstream Switch Port)&lt;/span&gt;&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Bus 0xa (FDO Ext fffffa8007312b60)&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/b&gt;&lt;span style="color: #0070c0"&gt;(d=0,&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;f=0) &lt;span style="background: yellow; mso-highlight: yellow"&gt;fefe&lt;/span&gt;&lt;span style="background: lime; mso-highlight: lime"&gt;1550&lt;/span&gt; devext 0xfffffa8006f67b70 devstack 0xfffffa8006f67a20 0180 Mass Storage Controller/'Other' &amp;lt;&amp;lt; Device&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;(d=7,&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;f=0) abcd8632 devext 0xfffffa80051e5b70 devstack 0xfffffa80051e5a20 0604 Bridge/PCI to PCI&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Bus 0xb (FDO Ext fffffa80052d2e00)&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;No devices have been enumerated on this bus.&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;(d=14, f=0) 8086342e devext 0xfffffa80054dfb70 devstack 0xfffffa80054dfa20 0800 Base System Device/Interrupt Controller&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;(d=14, f=1) 80863422 devext 0xfffffa80054e0b70 devstack 0xfffffa80054e0a20 0800 Base System Device/Interrupt Controller&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;(d=14, f=2) 80863423 devext 0xfffffa80054e1b70 devstack 0xfffffa80054e1a20 0800 Base System Device/Interrupt Controller&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;(d=1a, f=0) 80862937 devext 0xfffffa80054e2b70 devstack 0xfffffa80054e2a20 0c03 Serial Bus Controller/USB&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;(d=1a, f=1) 80862938 devext 0xfffffa80054e31b0 devstack 0xfffffa80054e3060 0c03 Serial Bus Controller/USB&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;(d=1a, f=7) 8086293c devext 0xfffffa80054e3b70 devstack 0xfffffa80054e3a20 0c03 Serial Bus Controller/USB&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;(d=1d, f=0) 80862934 devext 0xfffffa80054e41b0 devstack 0xfffffa80054e4060 0c03 Serial Bus Controller/USB&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;(d=1d, f=1) 80862935 devext 0xfffffa80054e4b70 devstack 0xfffffa80054e4a20 0c03 Serial Bus Controller/USB&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;(d=1d, f=7) 8086293a devext 0xfffffa80054e51b0 devstack 0xfffffa80054e5060 0c03 Serial Bus Controller/USB&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;(d=1e, f=0) 8086244e devext 0xfffffa80054e5b70 devstack 0xfffffa80054e5a20 0604 Bridge/PCI to PCI&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Bus 0xc (FDO Ext fffffa80054f2e00)&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;(d=3,&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;f=0) 102b0532 devext 0xfffffa80051d51b0 devstack 0xfffffa80051d5060 0300 Display Controller/VGA&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;(d=1f, f=0) 80862918 devext 0xfffffa80054e61b0 devstack 0xfffffa80054e6060 0601 Bridge/PCI to ISA&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;(d=1f, f=2) 80862921 devext 0xfffffa80054e6b70 devstack 0xfffffa80054e6a20 0101 Mass Storage Controller/IDE&lt;/p&gt;  &lt;p class="Debug"&gt;Total PCI Root busses processed = 1&lt;/p&gt;  &lt;p class="Debug"&gt;Total PCI Segments processed = 1&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;To recap the devices in the tree (Bus,Device,Function):&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="color: red"&gt;(0,7,0) : Root Port, PCI-PCI Bridge (devstack 0xfffffa80054dea20)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="color: #00b050"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;(6,0,0) : Upstream Switch Port (devstack 0xfffffa80051d9060)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="color: #7030a0"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;(7,6,0) : Downstream Switch Port (the PDO for the slot) (devstack 0xfffffa8007075a20)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/b&gt;&lt;span style="color: #0070c0"&gt;(a,0,0) : Device&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;(devstack 0xfffffa8006f67a20)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;I scanned the output looking for my ven/dev ID, and found it at Bus A, Device 0, Function 0.&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Step 2: &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;Determine which interrupt pin the device uses.&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;For this step, you can use !pci to dump the PCI config space for the device. The output will show you the interrupt pin the device uses, labeled as IntPin.&lt;/p&gt;  &lt;p class="Debug"&gt;!pci 1 a 0 0&lt;/p&gt;  &lt;p class="Debug"&gt;PCI Bus 10&lt;/p&gt;  &lt;p class="Debug"&gt;00:0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;FEFE:1550.01&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Cmd[0007:imb...]&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Sts[0018:c....]&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Device&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;SubID:1344:1008&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Other mass storage controller&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;cf8:800a0000&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="color: red"&gt;IntPin:1&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;IntLine:2e&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Rom:0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;cis:0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;cap:40&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;MEM[2]:df5fd000&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;MEM[3]:df5fc000&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;IO[4]:cff1&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;MEM[5]:df5fe000&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;So our IntPin is &lt;span style="color: red"&gt;1&lt;/span&gt;.&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Step 3: Walk the parent devices to find the closest PCI Routing Table (_PRT) which will describe the mapping of interrupt pin to IRQ.&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;Now, we will traverse the parent PCI devnodes until we find a PCI bridge which has an associated ACPI object with a _PRT method. This may be the root port, or an integrated bridge.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;     &lt;div class="Text"&gt;Start by running !devstack on the parent.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;We can determine the parent device using the indentations of the !pcitree output.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div class="Text"&gt;If the devstack shows an ACPI filter driver, then dump the filter using !acpikd.acpiext to find the associated AcpiObject&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div class="Text"&gt;Dump the ACPI object and its children to see if it has a _PRT method defined&lt;/div&gt;   &lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;       &lt;div class="Text"&gt;If it does not have a _PRT, then you need to swizzle the Interrupt Pin to find what the pin number will be on the upstream side of the bridge&lt;/div&gt;     &lt;/li&gt;      &lt;ol&gt;       &lt;li&gt;         &lt;div class="Text"&gt;We have to use a method called “swizzling” because the pin may become a different pin on the upstream side of the bridge. The way to calculate the pin is:&lt;/div&gt;       &lt;/li&gt;        &lt;ol&gt;         &lt;li&gt;           &lt;div class="Text"&gt;&lt;b&gt;IntPin = ((((IntPin -1) + DeviceNumber) % 4) +1)&lt;/b&gt;&lt;/div&gt;         &lt;/li&gt;       &lt;/ol&gt;        &lt;li&gt;         &lt;div class="Text"&gt;Where IntPin is the current IntPin value, and DeviceNumber the device number of the device you’re swizzling.&lt;/div&gt;       &lt;/li&gt;        &lt;li&gt;         &lt;div class="Text"&gt;You will start with the IntPin value from !pci output of the device itself. If you need to swizzle multiple times, you take the result of the previous swizzle as the input to the next swizzle&lt;/div&gt;       &lt;/li&gt;        &lt;li&gt;         &lt;div class="Text"&gt;The device number for the first time will be the device number of the target device, and subsequent times will be the device number of the parent device you’re swizzling.&lt;/div&gt;       &lt;/li&gt;     &lt;/ol&gt;      &lt;li&gt;       &lt;div class="Text"&gt;If it does have a _PRT, then move onto &lt;strong&gt;Step 4&lt;/strong&gt;.&lt;/div&gt;     &lt;/li&gt;   &lt;/ol&gt; &lt;/ol&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;Example:&lt;/p&gt;  &lt;p class="Text"&gt;First, we’ll swizzle the pin of the device itself &lt;span style="color: #0070c0"&gt;(a,&lt;span style="background: yellow; mso-highlight: yellow"&gt;0&lt;/span&gt;,0)&lt;/span&gt;.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The IntPin is &lt;span style="color: red"&gt;1&lt;/span&gt; so:&lt;/p&gt;  &lt;p class="Text"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;IntPin = ((((&lt;span style="color: red"&gt;1&lt;/span&gt;-1)+&lt;span style="background: yellow; mso-highlight: yellow"&gt;0&lt;/span&gt;) % 4) +1)&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;lt;&amp;lt; The Swizzled Pin is still IntPin &lt;span style="background: lime; mso-highlight: lime"&gt;1&lt;/span&gt;&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;Next, I dumped the parent device &lt;span style="font-family: consolas; color: #7030a0"&gt;(7,&lt;span style="background: yellow; mso-highlight: yellow"&gt;6&lt;/span&gt;,0), !devstack&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;span style="font-family: consolas; color: #7030a0"&gt;0xfffffa8007075a20&lt;/span&gt;&lt;span style="font-family: consolas"&gt;. &lt;/span&gt;It didn’t have an ACPI filter driver on the stack. So I need to swizzle the pin.&lt;/p&gt;  &lt;p class="Text"&gt;&lt;span style="font-family: consolas"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;IntPin = ((((&lt;span style="background: lime; mso-highlight: lime"&gt;1&lt;/span&gt;-1)+&lt;span style="background: yellow; color: #7030a0; mso-highlight: yellow"&gt;6&lt;/span&gt;) % 4) +1)&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;lt;&amp;lt; The Swizzled Pin is now &lt;span style="background: aqua; mso-highlight: aqua"&gt;3&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;I now dump the next parent up, &lt;span style="font-family: consolas; color: #00b050"&gt;(6,&lt;span style="background: yellow; mso-highlight: yellow"&gt;0&lt;/span&gt;,0), !devstack 0xfffffa80051d9060. &lt;/span&gt;It also didn’t have an ACPI filter driver on the stack so I need to swizzle the pin again.&lt;/p&gt;  &lt;p class="Text"&gt;&lt;span style="font-family: consolas"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;IntPin = ((((&lt;span style="background: aqua; mso-highlight: aqua"&gt;3&lt;/span&gt;-1)+&lt;span style="background: yellow; color: #7030a0; mso-highlight: yellow"&gt;0&lt;/span&gt;) % 4) +1)&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;lt;&amp;lt; The Swizzled Pin is still &lt;span style="background: red; mso-highlight: red"&gt;3&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;I am now at the root port. The first devstack which has a _PRT method in my case is the root port.&lt;/p&gt;  &lt;p class="Debug"&gt;kd&amp;gt; !devstack &lt;span style="background: aqua; mso-highlight: aqua"&gt;0xfffffa80054dea20&lt;/span&gt;&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;!DevObj&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;!DrvObj&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;!DevExt&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;ObjectName&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fffffa80054f1040&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;\Driver\pci&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;fffffa80054f1190&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fffffa80054e5800&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;\Driver\ACPI&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #e36c0a; mso-themecolor: accent6; mso-themeshade: 191"&gt;fffffa80051c1510&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;lt;&amp;lt; Has an ACPI filter driver in the devstack&lt;/span&gt;&lt;/p&gt;  &lt;p class="Debug"&gt;&amp;gt; fffffa80054dea20&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;\Driver\pci&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;fffffa80054deb70&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;NTPNP_PCI0006&lt;/p&gt;  &lt;p class="Debug"&gt;!DevNode fffffa80054e1750 :&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;DeviceInst is &amp;quot;PCI\VEN_8086&amp;amp;DEV_340E&amp;amp;SUBSYS_02351028&amp;amp;REV_13\3&amp;amp;33fd14ca&amp;amp;0&amp;amp;38&amp;quot;&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ServiceName is &amp;quot;pci&amp;quot;     &lt;br style="mso-special-character: line-break" /&gt;    &lt;br style="mso-special-character: line-break" /&gt;&lt;/p&gt;  &lt;p class="Debug"&gt;kd&amp;gt; !acpikd.acpiext &lt;span style="color: #e36c0a; mso-themecolor: accent6; mso-themeshade: 191"&gt;fffffa80051c1510&lt;/span&gt;&lt;/p&gt;  &lt;p class="Debug"&gt;ACPI!DEVICE_EXTENSION fffffa80051c1510 - 70000&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;DevObject&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fffffa80054e5800&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;PhysObject&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fffffa80054dea20&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;NextObject&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;fffffa80054dea20&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;AcpiObject &lt;span style="color: #948a54; mso-themecolor: background2; mso-themeshade: 128"&gt;fffffa80052e3890&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;/span&gt;ParentExt&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;fffffa80051c07d0&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;PnpState&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;Started&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;OldPnpState Stopped &lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Dispatch&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;fffff880011cbb50&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;RefCounts&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;4-Device 1-Irp 0-Hiber 0-Wake&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;State&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;D0&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;SxD Table&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;S0-&amp;gt;D0 S4-&amp;gt;D3 S5-&amp;gt;D3 &lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Flags&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0540100002000240&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Types&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Filter Enumerated ValidPnP &lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Caps&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;PCIBus &lt;/p&gt;  &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Props&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;HasAddress Enabled AcpiPower&lt;/p&gt;  &lt;p class="Text"&gt;   &lt;br /&gt;Dump the namespace object. Use /s to display the subtree under this object and look for a _PRT method.&lt;/p&gt;  &lt;p class="Debug"&gt;kd&amp;gt; !amli dns /s &lt;span style="color: #948a54; mso-themecolor: background2; mso-themeshade: 128"&gt;fffffa80052e3890&lt;/span&gt;&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Debug"&gt;ACPI Name Space: \_SB.PCI0.PEX7 (fffffa80052e3890)&lt;/p&gt;  &lt;p class="Debug"&gt;Device(PEX7)&lt;/p&gt;  &lt;p class="Debug"&gt;| Integer(_ADR:Value=0x0000000000070000[458752])&lt;/p&gt;  &lt;p class="Debug"&gt;| Integer(_STA:Value=0x000000000000000f[15])&lt;/p&gt;  &lt;p class="Debug"&gt;| Method(_PRT:Flags=0x0,CodeBuff=fffffa80052e3aa9,Len=144) &lt;b style="mso-bidi-font-weight: normal"&gt;&amp;lt;&amp;lt; A _PRT method exists for this object&lt;/b&gt;&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;Now, we have a swizzled IntPin value of &lt;span style="background: red; mso-highlight: red"&gt;3&lt;/span&gt;, and a pointer to the _PRT method.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;We can move on to the next step.&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Step 4: Convert the pin number from PCI to ACPI numbering&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;The !pci or !devext output, and subsequent swizzling will show pin numbering in PCI format where 1 = INTA. But the ACPI table uses 0 for INTA. So you need to subtract one from the PCI pin number to get the ACPI pin number.&lt;/p&gt;  &lt;table style="border-bottom-style: none; border-right-style: none; border-collapse: collapse; border-top-style: none; margin-left: 66.2pt; border-left-style: none; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" class="MsoTableGrid" border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;     &lt;tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;       &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0in; padding-left: 5.4pt; width: 49.1pt; padding-right: 5.4pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0in; mso-border-alt: solid windowtext .5pt" valign="top" width="65"&gt;         &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0in; padding-left: 5.4pt; width: 85.5pt; padding-right: 5.4pt; border-left-color: windowtext; border-top: windowtext 1pt solid; border-left-width: 1pt; border-right: windowtext 1pt solid; padding-top: 0in; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt" valign="top" width="114"&gt;         &lt;p class="Text"&gt;PCI pin number&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0in; padding-left: 5.4pt; width: 94.5pt; padding-right: 5.4pt; border-left-color: windowtext; border-top: windowtext 1pt solid; border-left-width: 1pt; border-right: windowtext 1pt solid; padding-top: 0in; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt" valign="top" width="126"&gt;         &lt;p class="Text"&gt;ACPI pin number&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 1"&gt;       &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0in; border-top-color: windowtext; padding-left: 5.4pt; width: 49.1pt; padding-right: 5.4pt; border-top-width: 1pt; border-right: windowtext 1pt solid; padding-top: 0in; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="65"&gt;         &lt;p class="Text"&gt;INTA&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0in; padding-left: 5.4pt; width: 85.5pt; padding-right: 5.4pt; border-top-style: none; border-left-style: none; border-right: windowtext 1pt solid; padding-top: 0in; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="114"&gt;         &lt;p class="Text"&gt;1&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0in; padding-left: 5.4pt; width: 94.5pt; padding-right: 5.4pt; border-top-style: none; border-left-style: none; border-right: windowtext 1pt solid; padding-top: 0in; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="126"&gt;         &lt;p class="Text"&gt;0&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 2"&gt;       &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0in; border-top-color: windowtext; padding-left: 5.4pt; width: 49.1pt; padding-right: 5.4pt; border-top-width: 1pt; border-right: windowtext 1pt solid; padding-top: 0in; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="65"&gt;         &lt;p class="Text"&gt;INTB&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0in; padding-left: 5.4pt; width: 85.5pt; padding-right: 5.4pt; border-top-style: none; border-left-style: none; border-right: windowtext 1pt solid; padding-top: 0in; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="114"&gt;         &lt;p class="Text"&gt;2&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0in; padding-left: 5.4pt; width: 94.5pt; padding-right: 5.4pt; border-top-style: none; border-left-style: none; border-right: windowtext 1pt solid; padding-top: 0in; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="126"&gt;         &lt;p class="Text"&gt;1&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 3"&gt;       &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0in; border-top-color: windowtext; padding-left: 5.4pt; width: 49.1pt; padding-right: 5.4pt; border-top-width: 1pt; border-right: windowtext 1pt solid; padding-top: 0in; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="65"&gt;         &lt;p class="Text"&gt;INTC&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0in; padding-left: 5.4pt; width: 85.5pt; padding-right: 5.4pt; border-top-style: none; border-left-style: none; border-right: windowtext 1pt solid; padding-top: 0in; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="114"&gt;         &lt;p class="Text"&gt;3&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0in; padding-left: 5.4pt; width: 94.5pt; padding-right: 5.4pt; border-top-style: none; border-left-style: none; border-right: windowtext 1pt solid; padding-top: 0in; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="126"&gt;         &lt;p class="Text"&gt;2&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 4; mso-yfti-lastrow: yes"&gt;       &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0in; border-top-color: windowtext; padding-left: 5.4pt; width: 49.1pt; padding-right: 5.4pt; border-top-width: 1pt; border-right: windowtext 1pt solid; padding-top: 0in; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="65"&gt;         &lt;p class="Text"&gt;INTD&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0in; padding-left: 5.4pt; width: 85.5pt; padding-right: 5.4pt; border-top-style: none; border-left-style: none; border-right: windowtext 1pt solid; padding-top: 0in; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="114"&gt;         &lt;p class="Text"&gt;4&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0in; padding-left: 5.4pt; width: 94.5pt; padding-right: 5.4pt; border-top-style: none; border-left-style: none; border-right: windowtext 1pt solid; padding-top: 0in; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="126"&gt;         &lt;p class="Text"&gt;3&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;Once you’ve converted to ACPI pin numbering, you have to dump the _PRT method to find the package which maps to that pin number.&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;For my example since the PCI IntPin value is 3, which corresponds to INTC, the ACPI pin number is 2&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Step 5: Parse the _PRT method to find the static routing table&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: consolas"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="Text"&gt;Now that we located the correct _PRT entry, we need to use the AMLI debugger extension to parse the method and find the static routing table.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The command !amli u will unassemble an ACPI method&lt;span style="font-family: consolas"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="Debug"&gt;kd&amp;gt; !amli u \_SB.PCI0.PEX7._PRT&lt;/p&gt;  &lt;p class="Debug"&gt;AMLI_DBGERR: Failed to get address of ACPI!gDebugger&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3aa9 : If(LNot(PICF))&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3ab1 : {&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3ab1 : | Name(P10B, Package(0x4)&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3ab9 : | {&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3ab9 : | | Package(0x4)&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3abc : | | {&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3abc : | | | 0xffff,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3abf : | | | 0x0,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3ac1 : | | | LK00,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3ac5 : | | | 0x0&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3ac7 : | | },&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3ac7 : | | Package(0x4)&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3aca : | | {&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3aca : | | | 0xffff,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3acd : | | | 0x1,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3acf : | | | LK01,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3ad3 : | | | 0x0&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3ad5 : | | },&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3ad5 : | | Package(0x4)&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3ad8 : | | {&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3ad8 : | | | 0xffff,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3adb : | | | 0x2,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3add : | | | LK02,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3ae1 : | | | 0x0&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3ae3 : | | },&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3ae3 : | | Package(0x4)&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3ae6 : | | {&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3ae6 : | | | 0xffff,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3ae9 : | | | 0x3,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3aeb : | | | LK03,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3aef : | | | 0x0&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3af1 : | | }&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3af1 : | })&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3af1 : | Store(P10B, Local0)&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3af7 : }&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3af7 : Else&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3af9 : {&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3af9 : | Name(A10B, Package(0x4)&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b01 : | {&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b01 : | | Package(0x4)&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b04 : | | {&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b04 : | | | 0xffff,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b07 : | | | 0x0,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b09 : | | | 0x0,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b0b : | | | 0x26&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b0d : | | },&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b0d : | | Package(0x4)&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b10 : | | {&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b10 : | | | 0xffff,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b13 : | | | 0x1,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b15 : | | | 0x0,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b17 : | | | 0x2d&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b19 : | | },&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b19 : | | Package(0x4)&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b1c : | | {&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b1c : | | | 0xffff,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b1f : | | | 0x2,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b21 : | | | 0x0,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b23 : | | | 0x2f&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b25 : | | },&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b25 : | | Package(0x4)&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b28 : | | {&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b28 : | | | 0xffff,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b2b : | | | 0x3,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b2d : | | | 0x0,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b2f : | | | 0x2e&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b31 : | | }&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b31 : | })&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b31 : | Store(A10B, Local0)&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b37 : }&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b37 : Return(Local0)&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b39 : Zero&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b3a : Zero&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b3b : Zero&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b3c : Zero&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b3d : Zero&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b3e : Zero&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b3f : Zero&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b40 : HNSO&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b44 : Not(Zero, )&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b47 : Zero&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b48 : Zero&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b49 : AMLI_DBGERR: UnAsmOpcode: invalid opcode class 0&lt;/p&gt;  &lt;p class="Debug"&gt;AMLI_DBGERR: Failed to unassemble scope at 382d4a0 (size=4096)&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;There are 2 different _PRT tables here, each with 4 packages (think of it as 2 arrays, each containing 4 structures). The first is using link nodes, the second is using static interrupts.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The first list is used if we are in PIC mode, the second if we are in APIC mode.&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;We can check the value of PICF to determine the mode. (I expect it to be APIC but let’s check)&lt;/p&gt;  &lt;p class="Debug"&gt;kd&amp;gt; !amli dns \PICF&lt;/p&gt;  &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Debug"&gt;ACPI Name Space: \PICF (fffffa80052ded18)&lt;/p&gt;  &lt;p class="Debug"&gt;Integer(PICF:Value=0x0000000000000001[1])&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;So we’re in APIC mode (PICF != 0), we use the static routing mode. So we will use the 2&lt;sup&gt;nd&lt;/sup&gt; table.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;What does each package represent?&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Each is a PCI Routing Table. From &lt;a href="http://www.acpi.info/spec.htm"&gt;ACPI spec&lt;/a&gt; section 6.2.12, which describes the _PRT:&lt;/p&gt;  &lt;p style="text-align: left; margin-left: 3in" class="MsoCaption" align="left"&gt;Table &lt;span style="mso-no-proof: yes"&gt;6-14&lt;/span&gt;&amp;#160;&amp;#160; Mapping Fields&lt;/p&gt;  &lt;table style="border-bottom-style: none; border-right-style: none; width: 435.5pt; border-collapse: collapse; border-top-style: none; margin-left: 65.85pt; border-left-style: none; mso-border-alt: solid windowtext 1.5pt; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-border-insideh: .75pt solid windowtext; mso-border-insidev: .75pt solid windowtext" class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" width="581"&gt;&lt;thead&gt;     &lt;tr style="page-break-inside: avoid; mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;       &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1.5pt solid; padding-bottom: 0in; padding-left: 5.4pt; width: 46.75pt; padding-right: 5.4pt; background: #d9d9d9; border-top: windowtext 1.5pt solid; border-right: windowtext 1pt solid; padding-top: 0in; mso-border-left-alt: 1.5pt; mso-border-top-alt: 1.5pt; mso-border-bottom-alt: .75pt; mso-border-right-alt: .75pt; mso-border-color-alt: windowtext; mso-border-style-alt: solid" valign="top" width="62"&gt;         &lt;p class="TableHead"&gt;Field&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0in; padding-left: 5.4pt; width: 54.3pt; padding-right: 5.4pt; background: #d9d9d9; border-left-style: none; border-top: windowtext 1.5pt solid; border-right: windowtext 1pt solid; padding-top: 0in; mso-border-alt: solid windowtext .75pt; mso-border-left-alt: solid windowtext .75pt; mso-border-top-alt: solid windowtext 1.5pt" valign="top" width="72"&gt;         &lt;p class="TableHead"&gt;Type&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0in; padding-left: 5.4pt; width: 334.45pt; padding-right: 5.4pt; background: #d9d9d9; border-left-style: none; border-top: windowtext 1.5pt solid; border-right: windowtext 1.5pt solid; padding-top: 0in; mso-border-left-alt: .75pt; mso-border-top-alt: 1.5pt; mso-border-bottom-alt: .75pt; mso-border-right-alt: 1.5pt; mso-border-color-alt: windowtext; mso-border-style-alt: solid" valign="top" width="446"&gt;         &lt;p class="TableHead"&gt;Description&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/thead&gt;&lt;tbody&gt;     &lt;tr style="page-break-inside: avoid; mso-yfti-irow: 1"&gt;       &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1.5pt solid; padding-bottom: 0in; padding-left: 5.4pt; width: 46.75pt; padding-right: 5.4pt; border-top-style: none; border-right: windowtext 1pt solid; padding-top: 0in; mso-border-alt: solid windowtext .75pt; mso-border-left-alt: solid windowtext 1.5pt; mso-border-top-alt: solid windowtext .75pt" valign="top" width="62"&gt;         &lt;p class="Table"&gt;Address&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0in; padding-left: 5.4pt; width: 54.3pt; padding-right: 5.4pt; border-top-style: none; border-left-style: none; border-right: windowtext 1pt solid; padding-top: 0in; mso-border-alt: solid windowtext .75pt; mso-border-left-alt: solid windowtext .75pt; mso-border-top-alt: solid windowtext .75pt" valign="top" width="72"&gt;         &lt;p class="Table"&gt;DWORD&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0in; padding-left: 5.4pt; width: 334.45pt; padding-right: 5.4pt; border-top-style: none; border-left-style: none; border-right: windowtext 1.5pt solid; padding-top: 0in; mso-border-alt: solid windowtext .75pt; mso-border-left-alt: solid windowtext .75pt; mso-border-top-alt: solid windowtext .75pt; mso-border-right-alt: solid windowtext 1.5pt" valign="top" width="446"&gt;         &lt;p class="Table"&gt;The address of the device (uses the same format as _ADR).&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="page-break-inside: avoid; mso-yfti-irow: 2"&gt;       &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1.5pt solid; padding-bottom: 0in; padding-left: 5.4pt; width: 46.75pt; padding-right: 5.4pt; border-top-style: none; border-right: windowtext 1pt solid; padding-top: 0in; mso-border-alt: solid windowtext .75pt; mso-border-left-alt: solid windowtext 1.5pt; mso-border-top-alt: solid windowtext .75pt" valign="top" width="62"&gt;         &lt;p class="Table"&gt;Pin&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0in; padding-left: 5.4pt; width: 54.3pt; padding-right: 5.4pt; border-top-style: none; border-left-style: none; border-right: windowtext 1pt solid; padding-top: 0in; mso-border-alt: solid windowtext .75pt; mso-border-left-alt: solid windowtext .75pt; mso-border-top-alt: solid windowtext .75pt" valign="top" width="72"&gt;         &lt;p class="Table"&gt;BYTE&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0in; padding-left: 5.4pt; width: 334.45pt; padding-right: 5.4pt; border-top-style: none; border-left-style: none; border-right: windowtext 1.5pt solid; padding-top: 0in; mso-border-alt: solid windowtext .75pt; mso-border-left-alt: solid windowtext .75pt; mso-border-top-alt: solid windowtext .75pt; mso-border-right-alt: solid windowtext 1.5pt" valign="top" width="446"&gt;         &lt;p class="Table"&gt;The PCI pin number of the device (0–INTA, 1–INTB, 2–INTC, 3–INTD).&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="page-break-inside: avoid; mso-yfti-irow: 3"&gt;       &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1.5pt solid; padding-bottom: 0in; padding-left: 5.4pt; width: 46.75pt; padding-right: 5.4pt; border-top-style: none; border-right: windowtext 1pt solid; padding-top: 0in; mso-border-alt: solid windowtext .75pt; mso-border-left-alt: solid windowtext 1.5pt; mso-border-top-alt: solid windowtext .75pt" valign="top" width="62"&gt;         &lt;p class="Table"&gt;Source&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0in; padding-left: 5.4pt; width: 54.3pt; padding-right: 5.4pt; border-top-style: none; border-left-style: none; border-right: windowtext 1pt solid; padding-top: 0in; mso-border-alt: solid windowtext .75pt; mso-border-left-alt: solid windowtext .75pt; mso-border-top-alt: solid windowtext .75pt" valign="top" width="72"&gt;         &lt;p class="Table"&gt;NamePath &lt;/p&gt;          &lt;p class="Table"&gt;Or&lt;/p&gt;          &lt;p class="Table"&gt;BYTE&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0in; padding-left: 5.4pt; width: 334.45pt; padding-right: 5.4pt; border-top-style: none; border-left-style: none; border-right: windowtext 1.5pt solid; padding-top: 0in; mso-border-alt: solid windowtext .75pt; mso-border-left-alt: solid windowtext .75pt; mso-border-top-alt: solid windowtext .75pt; mso-border-right-alt: solid windowtext 1.5pt" valign="top" width="446"&gt;         &lt;p class="Table"&gt;Name of the device that allocates the interrupt to which the above pin is connected. The name can be a fully qualified path, a relative path, or a simple name segment that utilizes the namespace search rules. &lt;b style="mso-bidi-font-weight: normal"&gt;Note&lt;/b&gt;: This field is a NamePath and not a String literal, meaning that it should not be surrounded by quotes. If this field is the integer constant Zero (or a BYTE value of 0), then the interrupt is allocated from the global interrupt pool.&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="page-break-inside: avoid; mso-yfti-irow: 4; mso-yfti-lastrow: yes"&gt;       &lt;td style="border-bottom: windowtext 1.5pt solid; border-left: windowtext 1.5pt solid; padding-bottom: 0in; padding-left: 5.4pt; width: 46.75pt; padding-right: 5.4pt; border-top-style: none; border-right: windowtext 1pt solid; padding-top: 0in; mso-border-left-alt: 1.5pt; mso-border-top-alt: .75pt; mso-border-bottom-alt: 1.5pt; mso-border-right-alt: .75pt; mso-border-color-alt: windowtext; mso-border-style-alt: solid" valign="top" width="62"&gt;         &lt;p class="Table"&gt;Source Index&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: windowtext 1.5pt solid; padding-bottom: 0in; padding-left: 5.4pt; width: 54.3pt; padding-right: 5.4pt; border-top-style: none; border-left-style: none; border-right: windowtext 1pt solid; padding-top: 0in; mso-border-alt: solid windowtext .75pt; mso-border-left-alt: solid windowtext .75pt; mso-border-top-alt: solid windowtext .75pt; mso-border-bottom-alt: solid windowtext 1.5pt" valign="top" width="72"&gt;         &lt;p class="Table"&gt;DWORD&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: windowtext 1.5pt solid; padding-bottom: 0in; padding-left: 5.4pt; width: 334.45pt; padding-right: 5.4pt; border-top-style: none; border-left-style: none; border-right: windowtext 1.5pt solid; padding-top: 0in; mso-border-left-alt: solid windowtext .75pt; mso-border-top-alt: solid windowtext .75pt" valign="top" width="446"&gt;         &lt;p class="Table"&gt;Index that indicates which resource descriptor in the resource template of the device pointed to in the Source field this interrupt is allocated from. If the &lt;b style="mso-bidi-font-weight: normal"&gt;Source&lt;/b&gt; field is the BYTE value zero, then this field is the global system interrupt number to which the pin is connected.&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3af9 : | Name(A10B, Package(0x4)&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b01 : | {&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b01 : | | Package(0x4)&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b04 : | | {&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b04 : | | | 0xffff,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b07 : | | | 0x0,&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;lt;&amp;lt; INTA&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b09 : | | | 0x0,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b0b : | | | 0x26&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;lt;&amp;lt; Interrupt line&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b0d : | | },&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b0d : | | Package(0x4)&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b10 : | | {&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b10 : | | | 0xffff,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b13 : | | | 0x1,&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;lt;&amp;lt; INTB&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b15 : | | | 0x0,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b17 : | | | 0x2d&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b19 : | | },&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b19 : | | Package(0x4)&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b1c : | | {&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b1c : | | | 0xffff,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b1f : | | | 0x2,&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;lt;&amp;lt; INTC&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b21 : | | | 0x0,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b23 : | | | 0x2f&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b25 : | | },&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b25 : | | Package(0x4)&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b28 : | | {&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b28 : | | | 0xffff,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b2b : | | | 0x3,&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;lt;&amp;lt; INTD&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b2d : | | | 0x0,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b2f : | | | 0x2e&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b31 : | | }&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b31 : | })&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Step 6 - Find the routing entry which represents our IntPin&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;Now, we just have to locate the entry in the routing table with a IntPin value of 2.&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b19 : | | Package(0x4)&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b1c : | | {&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b1c : | | | 0xffff,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b1f : | | | 0x2, &lt;b style="mso-bidi-font-weight: normal"&gt;&amp;lt;&amp;lt;&amp;lt; IntPin 2 (INTC)&lt;/b&gt;&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b21 : | | | 0x0,&lt;/p&gt;  &lt;p class="Debug"&gt;fffffa80052e3b23 : | | | 0x2f &lt;b style="mso-bidi-font-weight: normal"&gt;&amp;lt;&amp;lt; IRQ is 0x2f&lt;/b&gt;&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;So the device should be assigned IRQ 0x2F. &lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;However, you may have noticed from the !pci output above that in this case the device was actually assigned IntLine (IRQ) 0x2e!&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Since the wrong interrupt line was assigned after the device changed slots in the system, the device did not receive interrupts and hence was not functional.&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;I hope this was useful to help understand how interrupts are assigned to LBI devices. &lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;More reading / references:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;PCI IRQ Routing on a Multiprocessor ACPI System:&lt;/p&gt;  &lt;p class="Text"&gt;&lt;a href="http://msdn.microsoft.com/en-us/windows/hardware/gg454523.aspx#EDD"&gt;&lt;span style="color: windowtext; text-decoration: none; text-underline: none"&gt;http://msdn.microsoft.com/en-us/windows/hardware/gg454523.aspx#EDD&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;ACPI 4.0 spec&lt;/p&gt;  &lt;p class="Text"&gt;&lt;a href="http://www.acpi.info/DOWNLOADS/ACPIspec40a.doc"&gt;&lt;span style="color: windowtext; text-decoration: none; text-underline: none"&gt;http://www.acpi.info/DOWNLOADS/ACPIspec40a.doc&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10204639" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Debugging/">Debugging</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Architecture/">Architecture</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/windows/">windows</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/hardware/">hardware</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/internals/">internals</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Disk/">Disk</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Graham/">Graham</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/windbg/">windbg</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/kernel/">kernel</category></item><item><title>For testing purposes only, and other desktop watermarks</title><link>http://blogs.msdn.com/b/ntdebugging/archive/2011/08/05/for-testing-purposes-only-and-other-desktop-watermarks.aspx</link><pubDate>Fri, 05 Aug 2011 20:08:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10193262</guid><dc:creator>ntdebug</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ntdebugging/rsscomments.aspx?WeblogPostID=10193262</wfw:commentRss><comments>http://blogs.msdn.com/b/ntdebugging/archive/2011/08/05/for-testing-purposes-only-and-other-desktop-watermarks.aspx#comments</comments><description>&lt;div class="WordSection1"&gt;   &lt;p class="Text"&gt;Hi all, Matt here again.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;One of our team’s main functions is to work with our development teams to create hotfixes when customers run into issues that can only be resolved through a code change.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The developers will often prepare a private test fix that either tests the proposed change, or adds additional instrumentation to help pinpoint the issue. The private test fix is sent to the customer reporting the problem so they can confirm that it does indeed correct (or identify) the flaw.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;When testing a private test fix, customers frequently ask, why does my desktop now show a message on the lower right corner of the desktop, and what does it mean?&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The message reads “For testing purposes only”, and looks like this:&lt;/p&gt;    &lt;p class="Text"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="For testing purposes only" border="0" alt="For testing purposes only" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-00-metablogapi/5076.image001_5F00_2201C046.png" width="217" height="91" /&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Often, users are concerned that his message means that they aren’t allowed to use the server in production, or maybe that it is now “unsupported.”&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;These aren’t the case!&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Since this message appears as a result of installing a fix during the course of a Microsoft Support case, the servers are, by definition, being supported.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The purpose of this message is simply to remind users that code that Microsoft Support has asked them to test has been installed on the system, and this code may not have yet undergone the full suite of quality assurance testing that fixes that are made public usually do.&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;For comparison, let’s look at some of the other watermarks you may find in the lower corner of the desktop – as these can often be confused for the above message, and may explain some of the customer concerns around these messages.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;First up is the old trusty text you see when a box is booted into ‘Safe Mode’. I’m sure every IT Pro has seen this at one time or another, so I won’t go into detail, but rest assured, the testing purposes text is completely unrelated to booting in safe mode or having a subset of services running.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Safe Mode" border="0" alt="Safe Mode" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-00-metablogapi/7217.image002_5F00_2C52E4A6.png" width="158" height="75" /&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Next up is our ‘Evaluation copy’ watermark.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This message is shown on the desktops of copies of Windows that have a “time bomb” (ones that will cease to function after a certain date.)&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This message is typically seen on beta versions of Windows which are designed to stop functioning sometime after the desired beta testing period ends.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Evaluation copy" border="0" alt="Evaluation copy" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-00-metablogapi/2746.image003_5F00_1A0A1DE4.png" width="157" height="37" /&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Third, we have our Windows is not genuine message.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This is shown if, for example, a copy of Windows is not activated during the grace period after the installation process, or if a number of hardware changes have been made and Windows needs to be re-activated.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This has nothing to do with the ‘testing purposes’ message.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;See &lt;a href="http://technet.microsoft.com/en-us/library/dd979803.aspx"&gt;http://technet.microsoft.com/en-us/library/dd979803.aspx&lt;/a&gt; for more information about this message.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="This copy of Windows is not genuine" border="0" alt="This copy of Windows is not genuine" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-00-metablogapi/3835.image004_5F00_44764F01.png" width="229" height="63" /&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Fourth, we have the general Windows build stamp.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This is enabled via the registry using the &lt;span style="font-family: consolas"&gt;PaintDesktopVersion&lt;/span&gt; DWORD (&lt;a href="http://technet.microsoft.com/en-us/library/cc782257(WS.10).aspx"&gt;http://technet.microsoft.com/en-us/library/cc782257(WS.10).aspx&lt;/a&gt;).&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Some administrators like to enable this option so they always know what version of Windows they are using, sort of like a mini-&lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb897557"&gt;bginfo&lt;/a&gt;.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Unlike the others, this message does not indicate anything else about a server’s state.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Windows 7" border="0" alt="Windows 7" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-00-metablogapi/3010.image005_5F00_04403587.png" width="91" height="96" /&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Finally, we have ‘Test Mode’.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This is actually somewhat related to the testing purposes message.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This ‘Test Mode’ text is shown when test signing is enabled on a PC.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This is done by running “&lt;span style="font-family: consolas"&gt;bcdedit /set testsigning on&lt;/span&gt;” from an UAC-elevated command prompt.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Test signing is used to allow developers to load drivers they are still working on that have not yet been code signed with an official certificate.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This is actually one of the steps we need to do when loading our test fixes.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;For more information on Test Signing, see &lt;a href="http://msdn.microsoft.com/en-us/library/ff553484%28v=VS.85%29.aspx"&gt;http://msdn.microsoft.com/en-us/library/ff553484%28v=VS.85%29.aspx&lt;/a&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Test Mode" border="0" alt="Test Mode" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-00-metablogapi/5008.image006_5F00_58FB9E7F.png" width="106" height="68" /&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;So now that you know what causes these various watermarks to appear, perhaps you’re wondering how to make the “For testing purposes only” message disappear.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This is a question we are frequently asked.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;While you are running a private test fix, there is no way to disable this message.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Your only option is to remove the private test fix from your system.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This is something your engineer will ask you to do before you install the final, public version of a hotfix.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;You can easily identify and uninstall private test fixes by going into Control Panel, Programs and Features, View Installed Updates, then look for hotfixes with the words FOR TESTING PURPOSES ONLY in their name, like the one shown in the image below.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;You may also notice that the KB number listed for these fixes is often a place holder, and not a real KB article ID.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Installed Updates" border="0" alt="Installed Updates" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-00-metablogapi/3326.image007_5F00_6AD8324C.png" width="749" height="263" /&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;If the ‘For testing purposes only’ message is still displayed even after uninstalling the private test fix, there is one more place to check.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;If a system has the Microsoft Test Root Authority certificate installed into its Trusted Root Certification Authorities store, the text will be displayed.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;We use this certificate to allow a PC to run test code that has been signed by our development team, but not yet fully tested and signed off with the official Microsoft certificate.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;To remove this certificate from your system, go to Start -&amp;gt; Run, and enter certmgr.msc and hit enter.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;In the Certificate Manager MMC, browse to Trusted Root Certification Authorities, then into Certificates.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;You should see one labeled Microsoft Test Root Authority, as shown below.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This will need to be deleted and the system rebooted to remove the testing purposes message.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;u&gt;Do not do this if you still have a private test fix installed &lt;/u&gt;though, as it would prevent that binary from continuing to function and may mean you can no longer boot in to Normal or Safe mode.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="certmgr" border="0" alt="certmgr" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-00-metablogapi/7711.image009_5F00_5ED64218.png" width="465" height="313" /&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;If you reboot and find that ‘Test Mode’ has replaced the ‘For testing purposes only’ text, you’ll need to launch a command prompt with administrative privileges, then run “&lt;span style="font-family: consolas"&gt;bcdedit /set testsigning off&lt;/span&gt;” and reboot.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;You can always check if test signing is enabled by running “&lt;span style="font-family: consolas"&gt;bcdedit /enum&lt;/span&gt;” and looking for this line:&lt;/p&gt;    &lt;p class="Text"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="bcdedit /enum" border="0" alt="bcdedit /enum" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-00-metablogapi/5483.image010_5F00_022336BE.png" width="516" height="190" /&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;That’s all for today.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Hopefully this post helped clear up any confusion about our different desktop watermarks.&lt;/p&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10193262" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Tools/">Tools</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/windows/">windows</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/windows+internals/">windows internals</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Matt/">Matt</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/utilities/">utilities</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Burrough/">Burrough</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/bcdedit/">bcdedit</category></item><item><title>LUN Discovery in a Nutshell</title><link>http://blogs.msdn.com/b/ntdebugging/archive/2011/07/21/lun-discovery-in-a-nutshell.aspx</link><pubDate>Thu, 21 Jul 2011 20:56:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10188724</guid><dc:creator>ntdebug</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ntdebugging/rsscomments.aspx?WeblogPostID=10188724</wfw:commentRss><comments>http://blogs.msdn.com/b/ntdebugging/archive/2011/07/21/lun-discovery-in-a-nutshell.aspx#comments</comments><description>&lt;div class="WordSection1"&gt;   &lt;p class="Text"&gt;The way the disk configuration is determined on a Windows system is by a process called “discovery”. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;If the disk configuration is ISCSI or Fibre the process is very similar.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;I will describe the process on each and you will see they are very similar.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;To simplify things this blog will not describe multipath facilities, the availability of multiple paths to a LUN/Target can cause storport to create more device objects than number of LUNs available.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;First, let me explain some SCSI terminologies I will be using to describe this process:&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b&gt;Target - &lt;/b&gt;A SCSI target is an addressable unit that contains logical units (see LUN). A target can be described as a container of LUNs.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The address can be an IP address as in the case of ISCSI or a 16 bit node address if fibre. Commands are sent to a target using its address.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b&gt;LUN - &lt;/b&gt;A LUN is a logical unit that is in a target. A LUN most often describes a disk or tape unit inside a target.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The LUN that is the target of a command is specified in the command packet.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b&gt;Check Condition - &lt;/b&gt;A &lt;a href="http://en.wikipedia.org/wiki/SCSI_check_condition"&gt;check condition&lt;/a&gt; is a status response to a SCSI command.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;There are a number of &lt;a href="http://en.wikipedia.org/wiki/SCSI_Sense_Code"&gt;status codes&lt;/a&gt; a target can return, one of them is a check condition.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;A check condition requires the host to send a command called “&lt;a href="http://en.wikipedia.org/wiki/SCSI_Request_Sense_Command"&gt;request sense&lt;/a&gt;”. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;The target will respond with data containing &lt;a href="http://www.t10.org/lists/2sensekey.htm"&gt;sense codes&lt;/a&gt; defining the event that caused the check condition to occur.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b&gt;Now let’s talk about the discovery process on the different mediums and how it is accomplished: &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b&gt;&lt;u&gt;Fibre&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Whenever a scan is requested for a bus controlled by an iSCSI or Fibre Channel adapter, the Microsoft storport driver will attempt to send to all targets a “report LUNS” command. The response to a report LUNS command will contain information regarding all the LUNS on the target. Then storport will send “inquiry” commands to all LUNS reported to get specific LUN information.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Even though the number of targets can be as high as 128, the time this takes is usually very short. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;The adapter keeps a table to translate OS Target ID to the Destination ID which is the actual address on the fabric (or SessionID in case of iscsi).&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The Adapter miniport driver creates this table from data it receives from the name server. No I/O is done if the command fails due to a nonexistent target.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The device object representing the LUN is built from the inquiry data received from the LUN. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;One device object will be built in storport for each LUN discovered.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/span&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b&gt;&lt;u&gt;ISCSI&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The iSCSI discovery occurs the same way as far as sending the report LUN command to each target as done in Fibre. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;However, the discovery will happen when a connection is made to a target.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;When the iSCSI miniport driver successfully logs into a target it will notify the port driver to do a bus scan of the ISCSI adapter. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;The enumeration is identical as far as the scan itself.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b&gt;Common question are:&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b&gt;What happens when I add a LUN to an existing target?&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;When a LUN is added, the target does not immediately notify the host. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;When an I/O is sent to an existing LUN, the I/O will get a “check condition” status. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;When the request sense is issued the sense data will indicate that the “report LUNS data has changed”. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;The port driver (usually storport) picks this up and the port driver will scan the bus and discover the new LUN. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;This would be the same for iSCSI and fibre.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This means that if the target does not issue a check condition to notify the OS of a new LUN the LUN will not appear on the system and the user will need to manually scan for the new disk.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b&gt;How does the operating system know that a new target was added? &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;If a new target is added on an iSCSI bus, the scan will be initiated after the miniport driver successfully logs in to the target.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;So what about fiber? &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;When a new target is added to a fibre channel, the adapter will receive a RSCN (&lt;a href="http://en.wikipedia.org/wiki/Registered_State_Change_Notification"&gt;registered state change notification&lt;/a&gt;) packet from the fabric. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;This indication will be passed on to the port driver by the miniport (depending on adapter driver) to scan the bus. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;Then the new target will be picked up by the scan and the target will be sent a report LUNS to get the LUNS on the target.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Again, this means if the miniport or the fibre does not notify the OS of a new target its devices will not appear on the system and the user will need to manually scan for the new disks.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Editor's Note: The external links provided in this article contained accurate information at the time of publication.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;For official information regarding the SCSI specification, please see the latest revision of the SAM working draft at &lt;a href="http://www.t10.org/drafts.htm#sam4"&gt;http://www.t10.org/drafts.htm#sam4&lt;/a&gt;.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The T10 webpage may ask for personal information and agreements before giving access to the drafts, this is outside of the control of The NtDebugging Blog.&lt;/p&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10188724" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/i_2F00_o/">i/o</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/hardware/">hardware</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Bob/">Bob</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/internals/">internals</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/storport/">storport</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/SCSI/">SCSI</category></item><item><title>Updated Archive of the Debug Ninja’s Twitter Debug Tips</title><link>http://blogs.msdn.com/b/ntdebugging/archive/2011/07/20/updated-archive-of-the-debug-ninja-s-twitter-debug-tips.aspx</link><pubDate>Wed, 20 Jul 2011 21:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10188337</guid><dc:creator>ntdebug</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ntdebugging/rsscomments.aspx?WeblogPostID=10188337</wfw:commentRss><comments>http://blogs.msdn.com/b/ntdebugging/archive/2011/07/20/updated-archive-of-the-debug-ninja-s-twitter-debug-tips.aspx#comments</comments><description>&lt;p&gt;Every Wednesday (usually) I post a debug tip to our twitter page at &lt;a href="https://twitter.com/#!/ntdebugging"&gt;https://twitter.com/#!/ntdebugging&lt;/a&gt;. This blog is an archive of these tips to allow our readers to find this information easily. I will update this blog periodically with the new tips; follow us on twitter if you want to see the tips as I post them.&lt;/p&gt;
&lt;p&gt;The goal of these tips is to share debug commands, and forms of commands (parameters, flags, etc) that my colleagues and I find useful. I hope you can add these commands to your toolkit and they will help you debug more efficiently.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tips:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;!thread/!process [address] e - on x64 will not show you the meaningless Args to Child information.&lt;/p&gt;
&lt;p&gt;.frame /c [FrameNumber] - sets context to specified stack frame. Provides more reliable information than .trap on x64.&lt;/p&gt;
&lt;p&gt;kn - Dumps call stack with frame numbers, easier than counting stacks for .frame.&lt;/p&gt;
&lt;p&gt;.frame /r [FrameNumber] - same as .frame /c, but shows registers without changing context.&lt;/p&gt;
&lt;p&gt;Note: With .frame /c or /r you can only trust the nonvolatile registers. See http://msdn.microsoft.com/en-us/library/9z1stfyw(VS.80).aspx for vol/nonvol regs.&lt;/p&gt;
&lt;p&gt;k=rbp rip FrameCount - Dumps call stack starting at rbp/rip on x64. Useful when the stack is corrupt. #debug ^DN&lt;/p&gt;
&lt;p&gt;.process/.thread /p /r [address] - sets new process context, sets .cache forcedecodeuser, and reloads user symbols. #debug ^DebugNinja&lt;/p&gt;
&lt;p&gt;!process [address] 17 - Sets the context for this command, avoids the need for .process to see user stacks. Try !process 0 17 #debug ^DN&lt;/p&gt;
&lt;p&gt;~~[ThreadID]s - Changes threads in user mode. Use Thread ID number from output such as !locks. Ex: ~~[1bd4]s #debug ^DN&lt;/p&gt;
&lt;p&gt;runas /netonly /u:&amp;lt;account&amp;gt; windbg.exe - Launch windbg with domain account. Use when dbg computer isn't in domain and symbol server is. ^DN&lt;/p&gt;
&lt;p&gt;!heap -p -a &amp;lt;address&amp;gt; - Shows information about the heap block containing &amp;lt;address&amp;gt;, even if you aren't using pageheap. #debug ^DN&lt;/p&gt;
&lt;p&gt;ub - Unassembles starting at a location prior to your address. Accepts l&amp;lt;number&amp;gt; to specify how many instructions to go back. ub . l20 ^DN&lt;/p&gt;
&lt;p&gt;!stacks 2 [FilterString] - Finds kernel mode call stacks that contain the FilterString in a symbol. #debug ^DN&lt;/p&gt;
&lt;p&gt;!thread [address] 17 (or 1e on x64) - Sets context for this command, avoids the need for .thread/.process for user stacks. #debug ^DN&lt;/p&gt;
&lt;p&gt;.hh [Text] - Opens the debugger help. [Text] is the topic to lookup in the index. Example: .hh !pte&amp;nbsp;&amp;nbsp; #debug ^DN&lt;/p&gt;
&lt;p&gt;?? can dump structs using C++ style expressions. Ex: ??((nt!_KTHREAD*)(0xfffffa800ea43bb0))-&amp;gt;ApcState #debug ^DN&lt;/p&gt;
&lt;p&gt;bp /t EThread - Sets a kernel mode breakpoint that only triggers when hit in the context of this thread. #debug ^DN&lt;/p&gt;
&lt;p&gt;bp /p EProcess - Sets a kernel mode breakpoint that only triggers when hit in the context of this process. #debug ^DN&lt;/p&gt;
&lt;p&gt;gc - If you run 'p' and hit a breakpoint, gc takes you where p would have gone if you had not hit the bp.&amp;nbsp; #debug ^DN&lt;/p&gt;
&lt;p&gt;gu - Go until the current function returns.&amp;nbsp; Effectively this unwinds one stack frame.&amp;nbsp; #debug #windbg ^DN&lt;/p&gt;
&lt;p&gt;pc - Steps through until the next 'call' instruction. Combine with other commands to find who returned your error&amp;gt; pc;p;r eax #debug ^DN&lt;/p&gt;
&lt;p&gt;pt - Steps through until the next 'ret' instruction. Similar to gu, but pt stops on the ret and gu stops after the ret. #debug ^DN&lt;/p&gt;
&lt;p&gt;.ignore_missing_pages 1 - supresses the error: "Page 2a49 not present in the dump file. Type ".hh dbgerr004" for details" #debug ^DN&lt;/p&gt;
&lt;p&gt;.exr -1 shows the most recent exception.&amp;nbsp; Useful in user dumps of crashes, especially for no execute crashes (NX/DEP). #debug ^DN&lt;/p&gt;
&lt;p&gt;wt - Trace calls until they return to the current address. More useful with -or to get return values. Use -l for depth. ^DN #debug&lt;/p&gt;
&lt;p&gt;.thread /w - Changes to the WOW64 32-bit context from 64-bit kernel mode. Wow64exts doesn't work in kernel mode. #debug ^DN&lt;/p&gt;
&lt;p&gt;??sizeof(structure) - Gets the size of a structure, it's easier than counting. #debug ^DN&lt;/p&gt;
&lt;p&gt;sxe ld:module.dll - Enables an exception which will break into the debugger when module.dll is loaded. #debug ^DN&lt;/p&gt;
&lt;p&gt;vertarget - Shows OS version of the debug target. Also shows machine name, uptime, and session time (when the dump was taken). #debug ^DN&lt;/p&gt;
&lt;p&gt;!vm 1 - In a kernel debugger, shows basic information about memory usage. Available, committed, pagefile, pool, sysptes, etc. #debug ^DN&lt;/p&gt;
&lt;p&gt;.time - Shows session time (when dump was taken) and system uptime. In user mode shows process uptime, kernel/user time. #debug ^DN&lt;/p&gt;
&lt;p&gt;ba w size [address] - Break on write access only. Replace size with the num bytes you want to watch. Ex: ba w 4 005d5f10 #debug ^DN&lt;/p&gt;
&lt;p&gt;.bugcheck - Displays the bugcheck code of a blue screen crash. The format is more concise than !analyze.&amp;nbsp; #debug ^DN&lt;/p&gt;
&lt;p&gt;.process -i &amp;lt;address&amp;gt; - Make the process active and break into the debugger. Use in live kernel debugs to get into process context. ^DN&lt;/p&gt;
&lt;p&gt;.reload /f /o - Overwrites cached files in your downstream symbol store.&amp;nbsp; Useful when your store has corrupt pdbs. #debug ^DN&lt;/p&gt;
&lt;p&gt;-&amp;gt;* - Use with dt to dump pointers. Example: dt _EPROCESS [Address] ObjectTable-&amp;gt;*&lt;/p&gt;
&lt;p&gt;!for_each_module s -a @#Base @#End "PTag" - Find the drivers using pool tag "PTag". #debug ^DN&lt;/p&gt;
&lt;p&gt;.unload [DllName] - Unloads the debug extension you didn't intend to load. Omit DllName to unload the last dll loaded. #debug ^DN&lt;/p&gt;
&lt;p&gt;!exqueue dumps the executive worker queues.&amp;nbsp; Use flags 7f to dump the worker threads and the queues. #debug ^DN&lt;/p&gt;
&lt;p&gt;lmvm &amp;lt;module&amp;gt; - Dumps information about the module.&amp;nbsp; Remember to use &amp;lt;module&amp;gt; and not &amp;lt;module.dll&amp;gt;. #debug ^DN&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10188337" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Debugging/">Debugging</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Debug+Ninja/">Debug Ninja</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/debug/">debug</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Debug+Tips/">Debug Tips</category></item><item><title>A Classic Case of Whodunit</title><link>http://blogs.msdn.com/b/ntdebugging/archive/2011/06/29/a-classic-case-of-whodunit.aspx</link><pubDate>Wed, 29 Jun 2011 22:25:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10181637</guid><dc:creator>ntdebug</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ntdebugging/rsscomments.aspx?WeblogPostID=10181637</wfw:commentRss><comments>http://blogs.msdn.com/b/ntdebugging/archive/2011/06/29/a-classic-case-of-whodunit.aspx#comments</comments><description>&lt;div class="WordSection1"&gt;   &lt;p class="Text"&gt;Sometimes we encounter problems that just don't make sense.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;I don't mean a high powered lawyer talking about Chewbacca, I mean sometimes computers do things that defy logic.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The below bugcheck is one example.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;At first glance, some people will blame the first third party code they see and declare &amp;quot;It's the anti-virus!&amp;quot;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;That is a classic example of people defying logic, but this article is about computers defying logic, so there must be something else going on here.&lt;/p&gt;    &lt;p class="Debug"&gt;3: kd&amp;gt; .bugcheck&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Bugcheck code 00000050&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Arguments c73fdb0b 00000001 809327b8 00000000&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;3: kd&amp;gt; k&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;ChildEBP RetAddr&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d5a8 8085e6cd nt!KeBugCheckEx+0x1b&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d620 8088bc18 nt!MmAccessFault+0xb25&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d620 809327b8 nt!_KiTrap0E+0xdc&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d6bc 808ef973 nt!ObReferenceObjectByHandle+0x16e&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d75c 80888c7c nt!NtQueryInformationFile+0xcd&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d75c 8082ea49 nt!KiFastCallEntry+0xfc&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d7e8 b88db606 nt!ZwQueryInformationFile+0x11&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d864 b88db6c3 NAVAP+0x2e606&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d88c b88b30f6 NAVAP+0x2e6c3&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d8e0 b88b3338 NAVAP+0x60f6&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d900 b88b6a37 NAVAP+0x6338&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d948 b8993348 NAVAP+0x9a37&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d96c b8995af8 SYMEVENT!SYMEvent_GetSubTask+0x1438&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d9e8 b898fe32 SYMEVENT!EventObjectDestroy+0x338&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d9f8 b89963e8 SYMEVENT+0x4e32&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4da48 8081dcdf SYMEVENT!EventObjectCreate+0x3e8&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4da5c 808f8275 nt!IofCallDriver+0x45&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4db44 80936b13 nt!IopParseDevice+0xa35&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4dbc4 80932e04 nt!ObpLookupObjectName+0x5a9&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4dc18 808ea231 nt!ObOpenObjectByName+0xea&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4dc94 808eb4cb nt!IopCreateFile+0x447&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4dcf0 808edf4a nt!IoCreateFile+0xa3&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4dd30 80888c7c nt!NtCreateFile+0x30&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4dd30 7c82ed54 nt!KiFastCallEntry+0xfc&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;059293e0 00000000 0x7c82ed54&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The basic premise of all troubleshooting is logic.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;I often use a series of questions to shape the logic for the problem I am investigating.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;I start all blue screen debugs with the same question, &amp;quot;Why did the system crash?&amp;quot;.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The answer to this question is usually in the bugcheck code.&lt;/p&gt;    &lt;p class="Debug"&gt;3: kd&amp;gt; .bugcheck&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Bugcheck code 00000050&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Arguments &lt;span style="color: #0070c0"&gt;c73fdb0b &lt;/span&gt;00000001 &lt;span style="color: #c00000"&gt;809327b8 &lt;/span&gt;00000000&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The debugger.chm help file has a description of this error under the topic &amp;quot;Bug Check 0x50: PAGE_FAULT_IN_NONPAGED_AREA&amp;quot;.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;It explains that this error happens when invalid memory is accessed, and it shows what the four bugcheck parameters mean.&lt;/p&gt;    &lt;table border="2" cellspacing="0" cellpadding="2" width="262"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="68"&gt;&lt;strong&gt;Parameter&lt;/strong&gt;&lt;/td&gt;          &lt;td valign="top" width="190"&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="68"&gt;1&lt;/td&gt;          &lt;td valign="top" width="190"&gt;Memory address referenced&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="68"&gt;2&lt;/td&gt;          &lt;td valign="top" width="190"&gt;0: Read operation            &lt;br /&gt;1: Write operation&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="68"&gt;3&lt;/td&gt;          &lt;td valign="top" width="190"&gt;Address that referenced memory (if known)&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="68"&gt;4&lt;/td&gt;          &lt;td valign="top" width="190"&gt;reserved&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Interpreting our bugcheck code, address &lt;span style="color: #0070c0"&gt;c73fdb0b &lt;/span&gt;was written to by the instruction at address &lt;span style="color: #c00000"&gt;809327b8&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;If you refer to the &lt;a href="http://www.intel.com/products/processor/manuals/"&gt;documentation on page fault handling in x86&lt;/a&gt; you will see that the processor stores the address being faulted on in cr2 prior to calling the page fault handler.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;We can use this to reconfirm the data in the bugcheck code.&lt;/p&gt;    &lt;p class="Debug"&gt;3: kd&amp;gt; r cr2&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Last set context:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;cr2=&lt;span style="color: #0070c0"&gt;c73fdb0b&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;We can confirm that virtual address &lt;span style="color: #0070c0"&gt;c73fdb0b &lt;/span&gt;really is invalid by looking at the PTE.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;3: kd&amp;gt; !pte &lt;span style="color: #0070c0"&gt;c73fdb0b&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;VA c73fdb0b&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;PDE at C06031C8&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;PTE at C0639FE8&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;contains 000000021BB36963&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;contains 0000000000000000&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;pfn 21bb36&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;-G-DA--KWEV&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;font style="background-color: #ffff00"&gt;not valid&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The next question is why did the instruction at address &lt;span style="color: #c00000"&gt;809327b8 &lt;/span&gt;attempt to write to &lt;span style="color: #0070c0"&gt;c73fdb0b&lt;/span&gt;?&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The call stack and trap frame can answer this question.&lt;/p&gt;    &lt;p class="Debug"&gt;3: kd&amp;gt; kv&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;ChildEBP RetAddr&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Args to Child&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d5a8 8085e6cd 00000050 c73fdb0b 00000001 nt!KeBugCheckEx+0x1b (FPO: [Non-Fpo]) (CONV: stdcall)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d620 8088bc18 00000001 c73fdb0b 00000000 nt!MmAccessFault+0xb25 (FPO: [Non-Fpo]) (CONV: stdcall)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d620 809327b8 00000001 c73fdb0b 00000000 nt!_KiTrap0E+0xdc (FPO: [0,0] TrapFrame @ b7b4d638)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d6bc 808ef973 000012e4 00000080 00000180 nt!ObReferenceObjectByHandle+0x16e (FPO: [Non-Fpo]) (CONV: stdcall)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d75c 80888c7c 000012e4 b7b4d858 b7b4d810 nt!NtQueryInformationFile+0xcd (FPO: [Non-Fpo]) (CONV: stdcall)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d75c 8082ea49 000012e4 b7b4d858 b7b4d810 nt!KiFastCallEntry+0xfc (FPO: [0,0] TrapFrame @ b7b4d778)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d7e8 b88db606 000012e4 b7b4d858 b7b4d810 nt!ZwQueryInformationFile+0x11 (FPO: [5,0,0])&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;WARNING: Stack unwind information not available. Following frames may be wrong.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d864 b88db6c3 000012e4 e1e5ba38 00000000 NAVAP+0x2e606&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d88c b88b30f6 8b0bff88 b88b3040 b7b4d8fc NAVAP+0x2e6c3&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d8e0 b88b3338 8b0bff88 00003f80 b88b3040 NAVAP+0x60f6&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d900 b88b6a37 00000000 b7b4d9ac b88b6a42 NAVAP+0x6338&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d948 b8993348 e11998b8 b7b4d9a4 00000001 NAVAP+0x9a37&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d96c b8995af8 00000000 b7b4d9ac b8997526 SYMEVENT!SYMEvent_GetSubTask+0x1438&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d9e8 b898fe32 b7b4da2c e162be44 b7b4da2c SYMEVENT!EventObjectDestroy+0x338&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d9f8 b89963e8 b7b4da2c 8b60cc50 b7b4da2c SYMEVENT+0x4e32&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4da48 8081dcdf 8b916f10 8b3557c8 8b3557c8 SYMEVENT!EventObjectCreate+0x3e8&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4da5c 808f8275 b7b4dc04 8cb7dcb0 00000000 nt!IofCallDriver+0x45 (FPO: [Non-Fpo]) (CONV: fastcall)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4db44 80936b13 8cb7dcc8 00000000 8b452008 nt!IopParseDevice+0xa35 (FPO: [Non-Fpo]) (CONV: stdcall)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4dbc4 80932e04 00000000 b7b4dc04 00000040 nt!ObpLookupObjectName+0x5a9 (FPO: [Non-Fpo]) (CONV: stdcall)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4dc18 808ea231 00000000 00000000 2775a801 nt!ObOpenObjectByName+0xea (FPO: [Non-Fpo]) (CONV: stdcall)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4dc94 808eb4cb 059293e8 80100080 05929384 nt!IopCreateFile+0x447 (FPO: [Non-Fpo]) (CONV: stdcall)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4dcf0 808edf4a 059293e8 80100080 05929384 nt!IoCreateFile+0xa3 (FPO: [Non-Fpo]) (CONV: stdcall)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4dd30 80888c7c 059293e8 80100080 05929384 nt!NtCreateFile+0x30 (FPO: [Non-Fpo]) (CONV: stdcall)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4dd30 7c82ed54 059293e8 80100080 05929384 nt!KiFastCallEntry+0xfc (FPO: [0,0] TrapFrame @ b7b4dd64)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;059293e0 00000000 00000000 00000000 00000000 0x7c82ed54&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;3: kd&amp;gt; .trap b7b4d638&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;ErrCode = 00000002&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;eax=00000000 ebx=8b40af78 ecx=00000180 edx=&lt;span style="color: #92d050"&gt;b7b4d6e8 &lt;/span&gt;esi=8b81bb40 edi=e5c265c8&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;eip=809327b8 esp=b7b4d6ac ebp=b7b4d6bc iopl=0&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;nv up ei ng nz na pe nc&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;cs=0008&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ss=0010&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ds=0023&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;es=0023&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fs=0030&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;gs=0000&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;efl=00010286&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;nt!ObReferenceObjectByHandle+0x16e:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="color: #c00000"&gt;809327b8 &lt;/span&gt;894a04&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;mov&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;dword ptr [edx+4],ecx ds:0023:b7b4d6ec=00000000&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Reading the instruction that we failed on, at address &lt;span style="color: #c00000"&gt;809327b8&lt;/span&gt;, we can see that it dereferenced edx+4 where edx is &lt;span style="color: #92d050"&gt;b7b4d6e8&lt;/span&gt;.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This would result in a write to the memory at address &lt;span style="color: #00b050"&gt;b7b4d6ec&lt;/span&gt;.&lt;/p&gt;    &lt;p class="Debug"&gt;3: kd&amp;gt; !pte &lt;span style="color: #00b050"&gt;b7b4d6ec&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;VA b7b4d6ec&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;PDE at C0602DE8&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;PTE at C05BDA68&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;contains 000000010BA77863&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;contains 00000001BB583963&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;pfn 10ba77&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;---DA--KWEV&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;pfn 1bb583&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;-G-DA--KWEV&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;3: kd&amp;gt; dd &lt;span style="color: #00b050"&gt;b7b4d6ec&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d6ec&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000000 00000000 00000000 00000000&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d6fc&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000000 b7b4d804 808ef01e 00000098&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d70c&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000005 00000000 8b81bb40 808ef045&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d71c&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;b7b4d86c 00000000 b7b4d838 b7b4d800&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d72c&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000000 00000000 00000007 00000001&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d73c&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;00000000 00000000 b7b4d6dc 00000000&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d74c&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ffffffff 80880c90 80802b70 ffffffff&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;b7b4d75c&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;b7b4d778 80888c7c 000012e4 b7b4d858&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;This is where the logic starts to break down.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The code wanted to write to &lt;span style="color: #00b050"&gt;b7b4d6ec&lt;/span&gt;, which is a valid address.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The bugcheck code and cr2 say we failed writing to address &lt;span style="color: #0070c0"&gt;c73fdb0b&lt;/span&gt;.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This does not make sense.&lt;/p&gt;    &lt;p class="Text"&gt;&amp;#160;&lt;/p&gt;    &lt;p class="Text"&gt;The analogy I often use for scenarios such as this one is: If I ask my intern to get me a Mountain Dew from the break room, and he comes back to say we are out of coffee, am I at fault or is my intern broken?&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Applying the same logic to this crash, if ObReferenceObjectByHandle asks the hardware to write to address &lt;span style="color: #00b050"&gt;b7b4d6ec &lt;/span&gt;and the hardware came back saying it cannot write to address &lt;span style="color: #0070c0"&gt;c73fdb0b&lt;/span&gt;, is the software at fault or is the hardware broken?&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Clearly the hardware is broken if it does not do what the software asks of it.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;In this instance, the customer replaced the processor and afterwards the system was stable.&lt;/p&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10181637" width="1" height="1"&gt;</description></item><item><title>NTFS And 4K Disks</title><link>http://blogs.msdn.com/b/ntdebugging/archive/2011/06/28/ntfs-and-4k-disks.aspx</link><pubDate>Tue, 28 Jun 2011 15:36:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10180983</guid><dc:creator>ntdebug</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ntdebugging/rsscomments.aspx?WeblogPostID=10180983</wfw:commentRss><comments>http://blogs.msdn.com/b/ntdebugging/archive/2011/06/28/ntfs-and-4k-disks.aspx#comments</comments><description>&lt;div class="WordSection1"&gt;   &lt;p class="Text"&gt;Since the 1960’s, hard disks have always used a block size of 512 bytes for the default read/write block size.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Recently drive manufacturers have been moving toward a larger block size to improve performance and reliability.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Currently there are two types of disks available with a 4KB sector size: 512 byte emulated, and 4KB block sized disks.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;strong&gt;Disks with 4KB block size and 512 bytes per sector emulation&lt;/strong&gt;&lt;/p&gt;    &lt;p class="Text"&gt;For performance reasons, drive manufacturers have already produced disks with 4KB native block size, which use firmware to emulate 512 bytes per sector.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Because of the emulated 512 byte sector size, the file system and most disk utilities will be blissfully unaware that they are running on a 4KB disk.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;As a result, the on-disk structures will be completely unaffected by the underlying 4KB block size.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This allows for improved performance without altering the bytes per sector presented to the file system.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;These disks are referred to as 512e (pronounced “five-twelve-eee”) disks.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;strong&gt;Disks with 4KB block size without emulation&lt;/strong&gt;&lt;/p&gt;    &lt;p class="Text"&gt;When the logical bytes per sector value is extended to 4KB without emulation, the actual file system will have to adjust to this new environment.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Actually, NTFS is already capable of functioning in this environment &lt;span class="GramE"&gt;provided that&lt;/span&gt; no attached FS filter drivers make false assumptions about sector size.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Below are the highlights of what you should expect to see on a disk with a 4KB logical sector size.&lt;/p&gt;    &lt;p class="Text"&gt;&amp;#160;&lt;/p&gt;    &lt;p class="Text"&gt;1. It will not be possible to format with a cluster size that is smaller than the 4KB native block size.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This is because cluster size is defined as a multiple of sector size.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This multiple will always be expressed as 2n .&lt;/p&gt;    &lt;p class="Text"&gt;2. File records will assume the size of the logical block size of 4KB, rather than the previous size of 1KB.&amp;#160; This actually improves scalability to some degree, but the down-side is that each NTFS file record will require 4KB or more in the MFT.&lt;/p&gt;    &lt;p class="Text"&gt;3. Sparse and compressed files will continue to have 16 clusters per compression unit.&lt;/p&gt;    &lt;p class="Text"&gt;4. Since file records are 4 times their normal size, it will be possible to encode more mapping pairs per file record.&amp;#160; As a result, larger files can be compressed with NTFS compression without running into file system limitations.&lt;/p&gt;    &lt;p class="Text"&gt;5. Since the smallest allowable cluster size is 4KB, NTFS compression will only work on volumes with a 4KB cluster size.&lt;/p&gt;    &lt;p class="Text"&gt;6. Bytes per index record will be unaffected by the 4K block size since all index records are 4KB in size.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The on-disk folder directory structures will be completely unaffected by the new block size, but a performance increase may be seen while accessing folder structure metadata.&lt;/p&gt;    &lt;p class="Text"&gt;7. The BIOS Parameter Block (BPB) will continue to have the same format as before, but the only positive value for clusters per File Record Segment (FRS) will be 1.&amp;#160; In the case where clusters per FRS is 1, the FRS byte size is computed by the following equation:&lt;/p&gt;    &lt;p class="Text"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-00-metablogapi/3515.image_5F00_4F9AAA18.png" width="450" height="54" /&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;span style="font-family: &amp;quot;Lucida Console&amp;quot;; font-size: 9pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: calibri"&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;NTFS BIOS Parameter Block Information&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&amp;#160;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; BytesPerSector&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: yellow"&gt;4096&lt;/span&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; Sectors Per Cluster :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: yellow"&gt;1&lt;/span&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; ReservedSectors&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; Fats&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; RootEntries&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; Small Sectors&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 ( 0 MB )&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; Media Type&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 248 ( 0xf8 )&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; SectorsPerFat&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; SectorsPerTrack&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 63&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; Heads&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 255&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; Hidden Sectors&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 64&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; Large Sectors&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 ( 0 MB )&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&amp;#160;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; ClustersPerFRS&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: yellow"&gt;1&lt;/span&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; Clust/IndxAllocBuf&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: yellow"&gt;1&lt;/span&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; NumberSectors&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 50431 ( 196.996 MB )&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; MftStartLcn&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 16810&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; Mft2StartLcn&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; SerialNumber&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160; 8406742282501311868&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; Checksum&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 (0x0)&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;&amp;#160;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;If the cluster size is larger than the FRS size, then ClustersPerFrs will be a negative number as shown in the example below (0xf4 is -12 decimal).&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;In this case, the record size is computed with the equation:&lt;/p&gt;    &lt;p class="Text"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-00-metablogapi/4682.image_5F00_1CCAA3A4.png" width="284" height="78" /&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&amp;#160;&lt;/p&gt;    &lt;p class="Text"&gt;In short, NTFS will always force a 4096 byte cluster size on disk with a 4KB sector size regardless of the cluster size.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;NTFS BIOS Parameter Block Information&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&amp;#160;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; BytesPerSector&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 4096&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; Sectors Per Cluster :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 4&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; ReservedSectors&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; Fats&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; RootEntries&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; Small Sectors&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 ( 0 MB )&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; Media Type&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 248 ( 0xf8 )&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; SectorsPerFat&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; SectorsPerTrack&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 63&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; Heads&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 255&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; Hidden Sectors&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 64&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; Large Sectors&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 ( 0 MB )&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&amp;#160;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; ClustersPerFRS&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: yellow"&gt;f4&lt;/span&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; Clust/IndxAllocBuf&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; f4&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; NumberSectors&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 50431 ( 196.996 MB )&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; MftStartLcn&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 4202&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; Mft2StartLcn&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; SerialNumber&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160; 7270585088516976380&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; Checksum&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 (0x0)&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&amp;#160; &lt;/p&gt;    &lt;p class="Text"&gt;8. Aside from the 4KB file record size, there are a few other things to know about 4KB drives.&amp;#160; The code for implementing update sequence arrays (USA’s) has always worked on a 512 byte assumed sector size and it will continue to do so.&amp;#160; Since file records are 4 times their normal size, the update sequence arrays for file records now contain 9 entries instead of 3.&amp;#160; One byte is required for the sequence number (blue) and eight array entries for the trailing bytes (red).&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The original purpose of USA is to allow NTFS to detect torn writes.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Since the file record size is now equal to the block size, the hardware is capable of writing the entire file record at once, rather than in two parts.&lt;/p&gt;    &lt;p class="Text"&gt;&amp;#160;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160;&amp;#160;&amp;#160; _MULTI_SECTOR_HEADER MultiSectorHeader {&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ULONG&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Signature&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 0x454c4946 &amp;quot;FILE&amp;quot;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; USHORT&amp;#160;&amp;#160;&amp;#160;&amp;#160; SequenceArrayOffset&amp;#160;&amp;#160; : &lt;span style="background: yellow; mso-highlight: yellow"&gt;0x0030&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; USHORT&amp;#160;&amp;#160;&amp;#160;&amp;#160; SequenceArraySize&amp;#160;&amp;#160;&amp;#160;&amp;#160; : &lt;span style="background: yellow"&gt;0x0009&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160;&lt;/p&gt;    &lt;p class="Debug"&gt;0x0000&amp;#160;&amp;#160; 46 49 4c 45 &lt;span style="background: yellow"&gt;30 00&lt;/span&gt; &lt;span style="background: yellow"&gt;09 00&lt;/span&gt;-dd 24 10 00 00 00 00 00&amp;#160;&amp;#160; FILE0...Ý$.....&lt;/p&gt;    &lt;p class="Debug"&gt;0x0010&amp;#160;&amp;#160; 01 00 01 00 48 00 01 00-b0 01 00 00 00 10 00 00&amp;#160;&amp;#160; ....H...°......&lt;/p&gt;    &lt;p class="Debug"&gt;0x0020&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00-06 00 00 00 00 00 00 00&amp;#160;&amp;#160; ................&lt;/p&gt;    &lt;p class="Debug"&gt;0x0030&amp;#160;&amp;#160; &lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="background: yellow; color: #0070c0"&gt;02 00&lt;/span&gt;&lt;/b&gt;&lt;span style="background: yellow; color: #0070c0"&gt; &lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="background: yellow; color: red"&gt;00 00 00 00 00 00-00 00 00 00 00 00 00 00&lt;/span&gt;&lt;/b&gt;&amp;#160;&amp;#160; ................&lt;/p&gt;    &lt;p class="Debug"&gt;0x0040&amp;#160;&amp;#160; &lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="background: yellow; color: red"&gt;00 00&lt;/span&gt;&lt;/b&gt;&lt;span style="color: red"&gt; &lt;/span&gt;00 00 00 00 00 00-10 00 00 00 60 00 00 00&amp;#160;&amp;#160; ...........`...&lt;/p&gt;    &lt;p class="Debug"&gt;0x0050&amp;#160;&amp;#160; 00 00 18 00 00 00 00 00-48 00 00 00 18 00 00 00&amp;#160;&amp;#160; .......H......&lt;/p&gt;    &lt;p class="Debug"&gt;0x0060&amp;#160;&amp;#160; f8 f1 5b 89 36 d2 cb 01-f8 f1 5b 89 36 d2 cb 01&amp;#160;&amp;#160; øñ[‰6ÒË.øñ[‰6ÒË.&lt;/p&gt;    &lt;p class="Debug"&gt;0x0070&amp;#160;&amp;#160; f8 f1 5b 89 36 d2 cb 01-f8 f1 5b 89 36 d2 cb 01&amp;#160;&amp;#160; øñ[‰6ÒË.øñ[‰6ÒË.&lt;/p&gt;    &lt;p class="Debug"&gt;0x0080&amp;#160;&amp;#160; 06 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00&amp;#160;&amp;#160; ................&lt;/p&gt;    &lt;p class="Debug"&gt;0x0090&amp;#160;&amp;#160; 00 00 00 00 00 01 00 00-00 00 00 00 00 00 00 00&amp;#160;&amp;#160; ................&lt;/p&gt;    &lt;p class="Debug"&gt;0x00a0&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00-30 00 00 00 68 00 00 00&amp;#160;&amp;#160; ........0...h...&lt;/p&gt;    &lt;p class="Debug"&gt;0x00b0&amp;#160;&amp;#160; 00 00 18 00 00 00 03 00-4a 00 00 00 18 00 01 00&amp;#160;&amp;#160; .......J......&lt;/p&gt;    &lt;p class="Debug"&gt;0x00c0&amp;#160;&amp;#160; 05 00 00 00 00 00 05 00-f8 f1 5b 89 36 d2 cb 01&amp;#160;&amp;#160; ........øñ[‰6ÒË.&lt;/p&gt;    &lt;p class="Debug"&gt;0x00d0&amp;#160;&amp;#160; f8 f1 5b 89 36 d2 cb 01-f8 f1 5b 89 36 d2 cb 01&amp;#160;&amp;#160; øñ[‰6ÒË.øñ[‰6ÒË.&lt;/p&gt;    &lt;p class="Debug"&gt;0x00e0&amp;#160;&amp;#160; f8 f1 5b 89 36 d2 cb 01-00 00 01 00 00 00 00 00&amp;#160;&amp;#160; øñ[‰6ÒË.........&lt;/p&gt;    &lt;p class="Debug"&gt;0x00f0&amp;#160;&amp;#160; 00 00 01 00 00 00 00 00-06 00 00 00 00 00 00 00&amp;#160;&amp;#160; ................&lt;/p&gt;    &lt;p class="Debug"&gt;0x0100&amp;#160;&amp;#160; 04 03 24 00 4d 00 46 00-54 00 00 00 00 00 00 00&amp;#160;&amp;#160; ..$.M.F.T.......&lt;/p&gt;    &lt;p class="Debug"&gt;0x0110&amp;#160;&amp;#160; 80 00 00 00 48 00 00 00-01 00 40 00 00 00 01 00&amp;#160;&amp;#160; €...H.....@.....&lt;/p&gt;    &lt;p class="Debug"&gt;0x0120&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00-ff 00 00 00 00 00 00 00&amp;#160;&amp;#160; ........ÿ.......&lt;/p&gt;    &lt;p class="Debug"&gt;0x0130&amp;#160;&amp;#160; 40 00 00 00 00 00 00 00-00 00 10 00 00 00 00 00&amp;#160;&amp;#160; @..............&lt;/p&gt;    &lt;p class="Debug"&gt;0x0140&amp;#160;&amp;#160; 00 00 10 00 00 00 00 00-00 00 10 00 00 00 00 00&amp;#160;&amp;#160; ..............&lt;/p&gt;    &lt;p class="Debug"&gt;0x0150&amp;#160;&amp;#160; 22 00 01 aa 41 00 ff ff-b0 00 00 00 50 00 00 00&amp;#160;&amp;#160; &amp;quot;..ªA.ÿÿ°...P...&lt;/p&gt;    &lt;p class="Debug"&gt;0x0160&amp;#160;&amp;#160; 01 00 40 00 00 00 05 00-00 00 00 00 00 00 00 00&amp;#160;&amp;#160; ..@.............&lt;/p&gt;    &lt;p class="Debug"&gt;0x0170&amp;#160;&amp;#160; 01 00 00 00 00 00 00 00-40 00 00 00 00 00 00 00&amp;#160;&amp;#160; ........@.......&lt;/p&gt;    &lt;p class="Debug"&gt;0x0180&amp;#160;&amp;#160; 00 20 00 00 00 00 00 00-08 10 00 00 00 00 00 00&amp;#160;&amp;#160; . .............&lt;/p&gt;    &lt;p class="Debug"&gt;0x0190&amp;#160;&amp;#160; 08 10 00 00 00 00 00 00-21 01 a9 41 21 01 fd fd&amp;#160;&amp;#160; .......!.©A!.ýý&lt;/p&gt;    &lt;p class="Debug"&gt;0x01a0&amp;#160;&amp;#160; 00 69 b4 05 80 fa ff ff-ff ff ff ff 00 00 00 00&amp;#160;&amp;#160; .i´.€úÿÿÿÿÿÿ....&lt;/p&gt;    &lt;p class="Debug"&gt;0x01b0&amp;#160;&amp;#160; 00 00 10 00 00 00 00 00-22 00 01 aa 41 00 ff ff&amp;#160;&amp;#160; .......&amp;quot;..ªA.ÿÿ&lt;/p&gt;    &lt;p class="Debug"&gt;0x01c0&amp;#160;&amp;#160; b0 00 00 00 50 00 00 00-01 00 40 00 00 00 05 00&amp;#160;&amp;#160; °...P.....@.....&lt;/p&gt;    &lt;p class="Debug"&gt;0x01d0&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00-01 00 00 00 00 00 00 00&amp;#160;&amp;#160; ................&lt;/p&gt;    &lt;p class="Debug"&gt;0x01e0&amp;#160;&amp;#160; 40 00 00 00 00 00 00 00-00 20 00 00 00 00 00 00&amp;#160;&amp;#160; @........ ......&lt;/p&gt;    &lt;p class="Debug"&gt;0x01f0&amp;#160;&amp;#160; 08 10 00 00 00 00 00 00-08 10 00 00 00 00 &lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="color: #0070c0"&gt;02 00&lt;/span&gt;&lt;/b&gt;&amp;#160;&amp;#160; ..............&lt;/p&gt;    &lt;p class="Debug"&gt;.&lt;/p&gt;    &lt;p class="Debug"&gt;.&lt;/p&gt;    &lt;p class="Debug"&gt;.&lt;/p&gt;    &lt;p class="Debug"&gt;0x03c0&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00&amp;#160;&amp;#160; ................&lt;/p&gt;    &lt;p class="Debug"&gt;0x03d0&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00&amp;#160;&amp;#160; ................&lt;/p&gt;    &lt;p class="Debug"&gt;0x03e0&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00&amp;#160;&amp;#160; ................&lt;/p&gt;    &lt;p class="Debug"&gt;0x03f0&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 &lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="color: #0070c0"&gt;02 00&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #0070c0"&gt;&amp;#160;&amp;#160; &lt;/span&gt;................&lt;/p&gt;    &lt;p class="Debug"&gt;.&lt;/p&gt;    &lt;p class="Debug"&gt;.&lt;/p&gt;    &lt;p class="Debug"&gt;.&lt;/p&gt;    &lt;p class="Debug"&gt;0x05d0&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00&amp;#160;&amp;#160; ................&lt;/p&gt;    &lt;p class="Debug"&gt;0x05e0&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00&amp;#160;&amp;#160; ................&lt;/p&gt;    &lt;p class="Debug"&gt;0x05f0&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 &lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="color: #0070c0"&gt;02 00&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #0070c0"&gt;&amp;#160;&amp;#160; &lt;/span&gt;................&lt;/p&gt;    &lt;p class="Debug"&gt;.&lt;/p&gt;    &lt;p class="Debug"&gt;.&lt;/p&gt;    &lt;p class="Debug"&gt;.&lt;/p&gt;    &lt;p class="Debug"&gt;0x07d0&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00&amp;#160;&amp;#160; ................&lt;/p&gt;    &lt;p class="Debug"&gt;0x07e0&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00&amp;#160;&amp;#160; ................&lt;/p&gt;    &lt;p class="Debug"&gt;0x07f0&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 &lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="color: #0070c0"&gt;02 00&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #0070c0"&gt;&amp;#160;&amp;#160; &lt;/span&gt;................&lt;/p&gt;    &lt;p class="Debug"&gt;.&lt;/p&gt;    &lt;p class="Debug"&gt;.&lt;/p&gt;    &lt;p class="Debug"&gt;.&lt;/p&gt;    &lt;p class="Debug"&gt;0x09d0&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00&amp;#160;&amp;#160; ................&lt;/p&gt;    &lt;p class="Debug"&gt;0x09e0&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00&amp;#160;&amp;#160; ................&lt;/p&gt;    &lt;p class="Debug"&gt;0x09f0&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 &lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="color: #0070c0"&gt;02 00&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #0070c0"&gt;&amp;#160;&amp;#160; &lt;/span&gt;................&lt;/p&gt;    &lt;p class="Debug"&gt;.&lt;/p&gt;    &lt;p class="Debug"&gt;.&lt;/p&gt;    &lt;p class="Debug"&gt;.&lt;/p&gt;    &lt;p class="Debug"&gt;0x0bd0&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00&amp;#160;&amp;#160; ................&lt;/p&gt;    &lt;p class="Debug"&gt;0x0be0&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00&amp;#160;&amp;#160; ................&lt;/p&gt;    &lt;p class="Debug"&gt;0x0bf0&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 &lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="color: #0070c0"&gt;02 00&lt;/span&gt;&lt;/b&gt;&amp;#160;&amp;#160; ................&lt;/p&gt;    &lt;p class="Debug"&gt;.&lt;/p&gt;    &lt;p class="Debug"&gt;.&lt;/p&gt;    &lt;p class="Debug"&gt;.&lt;/p&gt;    &lt;p class="Debug"&gt;0x0dd0&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00&amp;#160;&amp;#160; ................&lt;/p&gt;    &lt;p class="Debug"&gt;0x0de0&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00&amp;#160;&amp;#160; ................&lt;/p&gt;    &lt;p class="Debug"&gt;0x0df0&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 &lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="color: #0070c0"&gt;02 00&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #0070c0"&gt;&amp;#160;&amp;#160; &lt;/span&gt;................&lt;/p&gt;    &lt;p class="Debug"&gt;.&lt;/p&gt;    &lt;p class="Debug"&gt;.&lt;/p&gt;    &lt;p class="Debug"&gt;.&lt;/p&gt;    &lt;p class="Debug"&gt;0x0fd0&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00&amp;#160;&amp;#160; ................&lt;/p&gt;    &lt;p class="Debug"&gt;0x0fe0&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00&amp;#160;&amp;#160; ................&lt;/p&gt;    &lt;p class="Debug"&gt;0x0ff0&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 &lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="color: #0070c0"&gt;02 00&lt;/span&gt;&lt;/b&gt;&amp;#160;&amp;#160; ................&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;I &lt;span class="GramE"&gt;don’t&lt;/span&gt; actually own a 4KB disk, but I was able to give you this preview thanks to a nifty tool called VStorControl.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Vstor is a &lt;span class="GramE"&gt;tool which&lt;/span&gt; allows you to create virtualized SCSI disks with arbitrary block sizes and is available for download with the Windows 7 SDK.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;That’s all for now,&lt;/p&gt;    &lt;p class="Text"&gt;Dennis Middleton “The NTFS Doctor”&lt;/p&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10180983" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/windows/">windows</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/hardware/">hardware</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/internals/">internals</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Dennis/">Dennis</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Disk/">Disk</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/NTFS/">NTFS</category></item><item><title>What Is In A RHS Dump File Created By Windows Error Reporting</title><link>http://blogs.msdn.com/b/ntdebugging/archive/2011/05/30/what-is-in-a-rhs-dump-file-created-by-windows-error-reporting.aspx</link><pubDate>Mon, 30 May 2011 20:23:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10169702</guid><dc:creator>ntdebug</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ntdebugging/rsscomments.aspx?WeblogPostID=10169702</wfw:commentRss><comments>http://blogs.msdn.com/b/ntdebugging/archive/2011/05/30/what-is-in-a-rhs-dump-file-created-by-windows-error-reporting.aspx#comments</comments><description>&lt;div class="WordSection1"&gt;   &lt;p class="Text"&gt;Hello all, East here. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;I wanted to give you a hint on how to use a RHS dump to find what thread was part of the Windows Server 2008 R2 cluster RHS recovery deadlock.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;First let me start off with letting you know that Windows Server 2008 R2 will create two types of user-mode dumps:&lt;/p&gt;    &lt;p style="text-indent: 0.5in" class="Text"&gt;1 - A heap dump (.hdmp) - which is an extended mini-dump that contains additional data such as the process memory.&lt;/p&gt;    &lt;p style="text-indent: 0.5in" class="Text"&gt;2 - A mini dump (.mdmp) - which will only contain mainly stack information and not enough info to help you get further.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;When a Windows Server 2008 R2 cluster has a resource that does not respond to one of the main cluster queries in a timely fashion, RHS will try to recover that resource by restarting it in an isolated process as well as creating a WER report and a user-mode dump of the deadlock.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;NOTE: More info about RHS and WER reports can be seen in the following blog - &lt;a href="http://blogs.msdn.com/b/clustering/archive/2009/06/27/9806160.aspx"&gt;http://blogs.msdn.com/b/clustering/archive/2009/06/27/9806160.aspx&lt;/a&gt;&lt;span style="color: windowtext; text-decoration: none; text-underline: none"&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&amp;#160;&lt;/p&gt;    &lt;p class="Text"&gt;When a deadlock is detected the cluster log will show:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;quot;00000dd4.00000aac::2011/05/13-16:12:39.559 ERR&amp;#160;&amp;#160; [RHS] WER report is submitted. Result : WerReportQueued.&amp;quot; &lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;You should find the WER report file and dumps located at the default location:&lt;/p&gt;    &lt;p style="text-indent: 0.5in" class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&amp;lt;SystemDrive&amp;gt;\Users\All Users\Microsoft\Windows\WER\ReportQueue&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Here is what a cluster created Windows Error Report looks like:&lt;/p&gt;    &lt;p class="Debug"&gt;Version=1&lt;/p&gt;    &lt;p class="Debug"&gt;EventType=WSFC Resource Deadlock&lt;/p&gt;    &lt;p class="Debug"&gt;EventTime=129497767591366327&lt;/p&gt;    &lt;p class="Debug"&gt;ReportType=1&lt;/p&gt;    &lt;p class="Debug"&gt;Consent=1&lt;/p&gt;    &lt;p class="Debug"&gt;ReportIdentifier=d2277837-7d7b-11e0-b5d0-00155d06402c&lt;/p&gt;    &lt;p class="Debug"&gt;Response.type=4&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;Sig[0].Name=Resource Name&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;Sig[0].Value=&lt;b&gt;New flexdisk&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;Sig[1].Name=Resource Type&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;Sig[1].Value=&lt;b&gt;flexdisk&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;Sig[2].Name=Call Type&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;Sig[2].Value=&lt;b&gt;ISALIVE&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;DynamicSig[1].Name=OS Version&lt;/p&gt;    &lt;p class="Debug"&gt;DynamicSig[1].Value=6.1.7601.2.1.0.274.10&lt;/p&gt;    &lt;p class="Debug"&gt;DynamicSig[2].Name=Locale ID&lt;/p&gt;    &lt;p class="Debug"&gt;DynamicSig[2].Value=1033&lt;/p&gt;    &lt;p class="Debug"&gt;File[0].CabName=memory.hdmp&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;File[0].Path=WERC1F2.tmp.hdmp&lt;/span&gt; &amp;lt;----------------------------- &lt;b&gt;Name of the dump file&amp;#160;&amp;#160;&amp;#160; &lt;/b&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;File[0].Flags=2097152&lt;/p&gt;    &lt;p class="Debug"&gt;File[0].Type=3&lt;/p&gt;    &lt;p class="Debug"&gt;File[0].Original.Path=C:\Windows\Temp\WERC1F2.tmp.hdmp&lt;/p&gt;    &lt;p class="Debug"&gt;File[1].CabName=minidump.mdmp&lt;/p&gt;    &lt;p class="Debug"&gt;File[1].Path=WERC2CE.tmp.mdmp&lt;/p&gt;    &lt;p class="Debug"&gt;File[1].Flags=2162690&lt;/p&gt;    &lt;p class="Debug"&gt;File[1].Type=2&lt;/p&gt;    &lt;p class="Debug"&gt;File[1].Original.Path=C:\Windows\Temp\WERC2CE.tmp.mdmp&lt;/p&gt;    &lt;p class="Debug"&gt;FriendlyEventName=WSFC Resource Deadlock&lt;/p&gt;    &lt;p class="Debug"&gt;ConsentKey=WSFC Resource Host Monitor&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;AppName=Failover Cluster Resource Host Subsystem&lt;/span&gt; &amp;lt;--------- &lt;b&gt;The application that had an issue - RHS&lt;/b&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;AppPath=C:\Windows\Cluster\rhs.exe&lt;/p&gt;    &lt;p class="Debug"&gt;ReportDescription=WSFC Resource Deadlock&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Now you have the area to look for in the cluster log, and an idea of which resource caused RHS to deadlock, and what it was doing at the time:&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The Resource Name = &lt;b&gt;New flexdisk&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The Resource Type = &lt;b&gt;flexdisk&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The type of call the resource was engaged in = &lt;b&gt;ISALIVE&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;You have all this information in the cluster log as well:&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="background: lime; mso-highlight: lime"&gt;00000dd4.00000aac&lt;/span&gt;::2011/05/13-16:12:39.136 ERR&amp;#160;&amp;#160; [RHS] RhsCall::DeadlockMonitor: Call ISALIVE timed out for resource 'New flexdisk'.&amp;#160; &lt;span style="background: yellow; mso-highlight: yellow"&gt;RHS deadlock during an Isalive check for the New flexdisk resource.&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000dd4.00000aac::2011/05/13-16:12:39.136 INFO&amp;#160; [RHS] Enabling RHS termination watchdog with timeout 1200000 and recovery action 3.&lt;/p&gt;    &lt;p class="Debug"&gt;00000dd4.00000aac::2011/05/13-16:12:39.136 ERR&amp;#160;&amp;#160; [RHS] Resource New flexdisk handling deadlock. Cleaning current operation and terminating RHS process.&lt;/p&gt;    &lt;p class="Debug"&gt;00000dd4.00000aac::2011/05/13-16:12:39.136 ERR&amp;#160;&amp;#160; [RHS] About to send WER report.&lt;/p&gt;    &lt;p class="Debug"&gt;000004dc.00000fb4::2011/05/13-16:12:39.136 WARN&amp;#160; [RCM] HandleMonitorReply: FAILURENOTIFICATION for 'New flexdisk', gen(3) result 4.&lt;/p&gt;    &lt;p class="Debug"&gt;000004dc.00000fb4::2011/05/13-16:12:39.136 INFO&amp;#160; [RCM] rcm::RcmResource::HandleMonitorReply: Resource 'New flexdisk' consecutive failure count 1.&lt;/p&gt;    &lt;p class="Debug"&gt;00000dd4.00000aac::2011/05/13-16:12:39.559 ERR&amp;#160;&amp;#160; [RHS] WER report is submitted. Result : WerReportQueued. &lt;span style="background: yellow; mso-highlight: yellow"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;WER report and user-mode dump created&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;000004dc.00000fb4::2011/05/13-16:12:39.559 ERR&amp;#160;&amp;#160; [RCM] rcm::RcmMonitor::RecoverProcess: Recovering monitor process 3540 / 0xdd4&lt;/p&gt;    &lt;p class="Debug"&gt;000004dc.00000fb4::2011/05/13-16:12:39.575 INFO&amp;#160; [RCM] Created monitor process 3280 / 0xcd0&lt;/p&gt;    &lt;p class="Debug"&gt;00000cd0.00000200::2011/05/13-16:12:39.575 INFO&amp;#160; [RHS] Initializing.&lt;/p&gt;    &lt;p class="Debug"&gt;000004dc.00000fb4::2011/05/13-16:12:39.591 INFO&amp;#160; [RCM] rcm::RcmResource::ReattachToMonitorProcess: (New flexdisk, OfflineCallIssued)&lt;/p&gt;    &lt;p class="Debug"&gt;000004dc.00000fb4::2011/05/13-16:12:39.591 WARN&amp;#160; [RCM] Canceling pending control GET_RO_PRIVATE_PROPERTIES for resource 'New flexdisk' due to monitor crash.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Now if you want to get adventurous and review the dump file to see the call stacks of RHS and what the resource was doing, you will look at the WER dump with the extension “.hdmp”.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Since we are looking at a process with multiple threads, we need to find the one that is showing the WER reporting calls and the one showing the RHS deadlock.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Run the following command after opening the dump under your debugger “~*k”.&amp;#160; In the below example, thread 3 is the one we are interested in. You can tell this because the process and thread ID matches the cluster log above.&amp;#160; If you don’t have a cluster log, this is the thread with wer.dll on the stack.&lt;/p&gt;    &lt;p class="Debug"&gt;0:000&amp;gt; ~*k&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Id: dd4.9d4 Suspend: 0 Teb: 000007ff`fffdd000 Unfrozen&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Child-SP&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RetAddr&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Call Site&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`001cf128 000007fe`fd611420 ntdll!ZwWaitForMultipleObjects+0xa&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`001cf130 00000000`772c1220 KERNELBASE!WaitForMultipleObjectsEx+0xe8&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`001cf230 00000000`ff763d53 kernel32!WaitForMultipleObjects+0xb0&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`001cf2c0 00000000`ff74802c rhs!cxl::WaitHandle::WaitAny+0x3f&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`001cf3b0 00000000`ff7458a1 rhs!Rhs::WaitForTermination+0x74&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`001cf450 00000000`ff769099 rhs!wmain+0x4b1&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`001cfbd0 00000000`772c652d rhs!__wmainCRTStartup+0x13d&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`001cfc10 00000000`774fc521 kernel32!BaseThreadInitThunk+0xd&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`001cfc40 00000000`00000000 ntdll!RtlUserThreadStart+0x1d&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;1&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Id: dd4.d0c Suspend: 0 Teb: 000007ff`fffdb000 Unfrozen&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Child-SP&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RetAddr&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Call Site&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`00c3fa98 000007fe`fd611420 ntdll!ZwWaitForMultipleObjects+0xa&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`00c3faa0 00000000`772c1220 KERNELBASE!WaitForMultipleObjectsEx+0xe8&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`00c3fba0 00000000`ff763d53 kernel32!WaitForMultipleObjects+0xb0&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`00c3fc30 00000000`ff75785c rhs!cxl::WaitHandle::WaitAny+0x3f&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`00c3fd20 00000000`ff766988 rhs!PingAliveCallScheduler::Run+0x184&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`00c3fda0 00000000`772c652d rhs!cxl::Thread::ThreadStartRoutine+0x18&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`00c3fdf0 00000000`774fc521 kernel32!BaseThreadInitThunk+0xd&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`00c3fe20 00000000`00000000 ntdll!RtlUserThreadStart+0x1d&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;2&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Id: dd4.e78 Suspend: 0 Teb: 000007ff`fffd9000 Unfrozen&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Child-SP&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RetAddr&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Call Site&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`00baf998 00000000`774eb007 ntdll!ZwWaitForMultipleObjects+0xa&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`00baf9a0 00000000`772c652d ntdll!TppWaiterpThread+0x14d&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`00bafc40 00000000`774fc521 kernel32!BaseThreadInitThunk+0xd&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`00bafc70 00000000`00000000 ntdll!RtlUserThreadStart+0x1d&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;3&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Id: &lt;span style="background: lime; mso-highlight: lime"&gt;dd4.aac&lt;/span&gt; Suspend: 0 Teb: 000007ff`fffd7000 Unfrozen&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Child-SP&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RetAddr&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Call Site&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;00000000`00cbe5e8 000007fe`fd611420 ntdll!ZwWaitForMultipleObjects+0xa&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;00000000`00cbe5f0 00000000`772d2d53 KERNELBASE!WaitForMultipleObjectsEx+0xe8&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;00000000`00cbe6f0 00000000`773e8f7d kernel32!WaitForMultipleObjectsExImplementation+0xb3&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;00000000`00cbe780 00000000`773e62b2 user32!RealMsgWaitForMultipleObjectsEx+0x12a&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;00000000`00cbe820 00000000`773e62e0 user32!MsgWaitForMultipleObjectsEx+0x46&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;00000000`00cbe860 000007fe`f6f3c35c user32!MsgWaitForMultipleObjects+0x20&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;00000000`00cbe8a0 000007fe`f6f6dbd0 wer!UtilMsgWaitForMultipleObjects+0x54&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;00000000`00cbe930 000007fe`f6f54158 wer!CReportManager::ReportProblemOutOfProcess+0x5c4&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;00000000`00cbecc0 000007fe`f6f3b99b wer!CReportManager::ReportProblem+0x1eb&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;00000000`00cbede0 000007fe`f6f61cbe wer!CReportHandleInstance::SubmitReport+0x386&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;00000000`00cbee50 00000000`ff750dcf wer!WerReportSubmit+0x16a&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;00000000`00cbeef0 00000000`ff75117b rhs!RhsResource::WERReportDeadlock+0x43f&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;00000000`00cbfaf0 00000000`ff74b270 rhs!RhsResource::HandleDeadlock+0x187&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;00000000`00cbfb60 00000000`772c652d rhs!RhsCall::DeadlockMonitor+0x324&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;00000000`00cbfc60 00000000`774fc521 kernel32!BaseThreadInitThunk+0xd&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;00000000`00cbfc90 00000000`00000000 ntdll!RtlUserThreadStart+0x1d&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;4&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Id: dd4.e48 Suspend: 0 Teb: 000007ff`fffae000 Unfrozen&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Child-SP&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RetAddr&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Call Site&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`00e2f0f8 000007fe`fd611203 ntdll!ZwDelayExecution+0xa&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`00e2f100 000007fe`f78f1ad9 KERNELBASE!SleepEx+0xab&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`00e2f1a0 00000000`00326aa0 FlexRes+0x11ad9&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`00e2f1a8 00000000`00000000 0x326aa0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;lt;snipped to save space&amp;gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;We will switch context to thread 3 by using the “ ~3s ” command, and follow that with “ kn “ to show the stack with frame numbers.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Debug Tip: Since we already know that its thread id is “aac” we can also switch directly to thread 3 by using its thread id in the following command syntax:&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;“ ~~[aac]s ”&lt;/p&gt;    &lt;p class="Debug"&gt;0:003&amp;gt; kn&lt;/p&gt;    &lt;p class="Debug"&gt;# Child-SP&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; RetAddr&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Call Site&lt;/p&gt;    &lt;p class="Debug"&gt;00 00000000`00cbe5e8 000007fe`fd611420 ntdll!NtWaitForMultipleObjects+0xa&lt;/p&gt;    &lt;p class="Debug"&gt;01 00000000`00cbe5f0 00000000`772d2d53 KERNELBASE!WaitForMultipleObjectsEx+0xe8&lt;/p&gt;    &lt;p class="Debug"&gt;02 00000000`00cbe6f0 00000000`773e8f7d kernel32!WaitForMultipleObjectsExImplementation+0xb3&lt;/p&gt;    &lt;p class="Debug"&gt;03 00000000`00cbe780 00000000`773e62b2 user32!RealMsgWaitForMultipleObjectsEx+0x12a&lt;/p&gt;    &lt;p class="Debug"&gt;04 00000000`00cbe820 00000000`773e62e0 user32!MsgWaitForMultipleObjectsEx+0x46&lt;/p&gt;    &lt;p class="Debug"&gt;05 00000000`00cbe860 000007fe`f6f3c35c user32!MsgWaitForMultipleObjects+0x20&lt;/p&gt;    &lt;p class="Debug"&gt;06 00000000`00cbe8a0 000007fe`f6f6dbd0 wer!UtilMsgWaitForMultipleObjects+0x54&lt;/p&gt;    &lt;p class="Debug"&gt;07 00000000`00cbe930 000007fe`f6f54158 wer!CReportManager::ReportProblemOutOfProcess+0x5c4&lt;/p&gt;    &lt;p class="Debug"&gt;08 00000000`00cbecc0 000007fe`f6f3b99b wer!CReportManager::ReportProblem+0x1eb&lt;/p&gt;    &lt;p class="Debug"&gt;09 00000000`00cbede0 000007fe`f6f61cbe wer!CReportHandleInstance::SubmitReport+0x386&lt;/p&gt;    &lt;p class="Debug"&gt;0a 00000000`00cbee50 00000000`ff750dcf wer!WerReportSubmit+0x16a&lt;/p&gt;    &lt;p class="Debug"&gt;0b 00000000`00cbeef0 00000000`ff75117b rhs!RhsResource::WERReportDeadlock+0x43f&lt;/p&gt;    &lt;p class="Debug"&gt;0c 00000000`00cbfaf0 00000000`ff74b270 rhs!RhsResource::HandleDeadlock+0x187&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;b&gt;0d 00000000`00cbfb60 00000000`772c652d rhs!RhsCall::DeadlockMonitor+0x324&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;0e 00000000`00cbfc60 00000000`774fc521 kernel32!BaseThreadInitThunk+0xd&lt;/p&gt;    &lt;p class="Debug"&gt;0f 00000000`00cbfc90 00000000`00000000 ntdll!RtlUserThreadStart+0x1d&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The frame of our concern will be frame d. You can either go the context ( /c ) or just display the registers&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;( /r ) &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;for that frame context:&lt;/p&gt;    &lt;p class="Debug"&gt;0:003&amp;gt; .frame /r d&lt;/p&gt;    &lt;p class="Debug"&gt;0d 00000000`00cbfb60 00000000`772c652d rhs!RhsCall::DeadlockMonitor+0x324&lt;/p&gt;    &lt;p class="Debug"&gt;rax=000007fffffd7000 rbx=0000000000346920 rcx=00000000007316c0&lt;/p&gt;    &lt;p class="Debug"&gt;rdx=0000000000000000 rsi=000000000035f8b0 &lt;b&gt;rdi=&lt;span style="background: yellow; mso-highlight: yellow"&gt;000000000035f8b0&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;rip=00000000ff74b270 rsp=0000000000cbfb60 rbp=0000000000000000&lt;/p&gt;    &lt;p class="Debug"&gt;r8=00000000ffffffff&amp;#160; r9=00000000000004ff r10=0000000000000000&lt;/p&gt;    &lt;p class="Debug"&gt;r11=0000000000cbe810 r12=0000000000000000 r13=0000000000000000&lt;/p&gt;    &lt;p class="Debug"&gt;r14=0000000000000000 r15=000000004dcd5877&lt;/p&gt;    &lt;p class="Debug"&gt;iopl=0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; nv up ei pl zr na po nc&lt;/p&gt;    &lt;p class="Debug"&gt;cs=0033&amp;#160; ss=002b&amp;#160; ds=002b&amp;#160; es=002b&amp;#160; fs=0053&amp;#160; gs=002b&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; efl=00000246&lt;/p&gt;    &lt;p class="Debug"&gt;rhs!RhsCall::DeadlockMonitor+0x324:&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`ff74b270 448b442430&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; r8d,dword ptr [rsp+30h] ss:00000000`00cbfb90=ffffffff&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Here is where we get into tricky territory about where to look. I know from experience that the RDI register from above is going to end up containing my information for this resource. Another way to verify you are in the right area, dumping RDI will show the CallType.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Dump that out to find the thread containing the stack with:&lt;/p&gt;    &lt;p class="Debug"&gt;0:003&amp;gt; dqs &lt;span style="background: yellow; mso-highlight: yellow"&gt;000000000035f8b0&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`0035f8b0&amp;#160; 00000000`ff704eb8 rhs!&lt;b&gt;IsAliveCall&lt;/b&gt;::`vftable' == CallType&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`0035f8b8&amp;#160; 00000000`00000004&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`0035f8c0&amp;#160; 00000000`001e7da0&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`0035f8c8&amp;#160; &lt;b&gt;00000000`00000&lt;span style="background: red; mso-highlight: red"&gt;e48&lt;/span&gt; &lt;/b&gt;&lt;b&gt;&amp;lt;-- Thread id of concerning resource&lt;/b&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`0035f8d0&amp;#160; 00000000`00346920&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`0035f8d8&amp;#160; 0000000c`00000001&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`0035f8e0&amp;#160; 00000000`00000003&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`0035f8e8&amp;#160; 00000000`4dcd5876&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`0035f8f0&amp;#160; 00000000`048d2dd3&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`0035f8f8&amp;#160; 00000000`00000100&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`0035f900&amp;#160; 00000001`00000100&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`0035f908&amp;#160; 00000000`00000000&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`0035f910&amp;#160; 00430000`00000031&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`0035f918&amp;#160; 8a0000a4`52e48988&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`0035f920&amp;#160; 004c0041`00530049&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`0035f928&amp;#160; 00450045`00560049&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;If we scan our previous “~*k” output, we should find the thread id above to match our thread with the problem resource, &lt;b style="mso-bidi-font-weight: normal"&gt;FlexRes&lt;/b&gt;:&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;4&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Id: dd4.&lt;span style="background: red; mso-highlight: red"&gt;e48&lt;/span&gt; Suspend: 0 Teb: 000007ff`fffae000 Unfrozen&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Child-SP&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RetAddr&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Call Site&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`00e2f0f8 000007fe`fd611203 ntdll!ZwDelayExecution+0xa&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`00e2f100 000007fe`f78f1ad9 KERNELBASE!SleepEx+0xab&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`00e2f1a0 00000000`00326aa0 FlexRes+0x11ad9&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00000000`00e2f1a8 00000000`00000000 0x326aa0&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;In this case I was using an in house test app that just went to sleep instead of responding to the &lt;a href="http://msdn.microsoft.com/en-us/library/aa370972.aspx"&gt;LooksAlive()&lt;/a&gt; check, which caused &lt;a href="http://msdn.microsoft.com/en-us/library/aa370496(v=VS.85).aspx"&gt;IsAlive()&lt;/a&gt; to fail.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Also if you check the cluster log 5 minutes prior to the RhsCall::DeadlockMonitor error you will see the resource and thread id as well, showing what was going on prior to the Deadlock:&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;b&gt;&lt;span style="background: red; mso-highlight: red"&gt;00000dd4.00000e48&lt;/span&gt;&lt;/b&gt;::2011/05/13-16:07:37.270 INFO&amp;#160; [RES] flexdisk &amp;lt;New flexdisk&amp;gt;: Set new entry point&amp;#160; = ISALIVEERROR:1722,ISALIVEFAILTYPE:1,ISALIVEHANG:1 Error = 0.&lt;/p&gt;    &lt;p class="Debug"&gt;000004dc.00000fd4::2011/05/13-16:07:37.286 WARN&amp;#160; [RCM] ResourceControl(SET_PRIVATE_PROPERTIES) to New flexdisk returned 5024.&lt;/p&gt;    &lt;p class="Debug"&gt;00000dd4.00000e48::2011/05/13-16:07:38.023 INFO&amp;#160; [RES] flexdisk &amp;lt;New flexdisk&amp;gt;: Set new entry point&amp;#160; = ISALIVEERROR:1722,ISALIVEFAILTYPE:1,ISALIVEHANG:0 Error = 0.&lt;/p&gt;    &lt;p class="Debug"&gt;00000dd4.00000e48::2011/05/13-16:07:38.023 INFO&amp;#160; [RES] flexdisk &amp;lt;New flexdisk&amp;gt;: Going to Hang in IsAlive.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;In most cases the cluster log can provide enough information to help you narrow down possible cluster resource issues. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;If not, the user-mode dump may be able to help verify additional data, especially if you are debugging a third party resource dll that is deadlocking RHS.&lt;/p&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10169702" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Debugging/">Debugging</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Hangs/">Hangs</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/East/">East</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Cluster/">Cluster</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Deadlock/">Deadlock</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/windbg/">windbg</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/debug/">debug</category></item><item><title>Understanding Storage Timeouts and Event 129 Errors</title><link>http://blogs.msdn.com/b/ntdebugging/archive/2011/05/06/understanding-storage-timeouts-and-event-129-errors.aspx</link><pubDate>Fri, 06 May 2011 17:49:08 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10161890</guid><dc:creator>ntdebug</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ntdebugging/rsscomments.aspx?WeblogPostID=10161890</wfw:commentRss><comments>http://blogs.msdn.com/b/ntdebugging/archive/2011/05/06/understanding-storage-timeouts-and-event-129-errors.aspx#comments</comments><description>&lt;p class="Text"&gt;Greetings fellow debuggers, today I will be blogging about Event ID 129 messages.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;These warning events are logged to the system event log with the storage adapter (HBA) driver’s name as the source.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Windows’ STORPORT.SYS driver logs this message when it detects that a request has timed out, the HBA driver’s name is used in the error because it is the miniport associated with storport.&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;Below is an example 129 event:&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Debug"&gt;Event Type:&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Warning&lt;/p&gt;  &lt;p class="Debug"&gt;Event Source:&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;lt;HBA_Name&amp;gt;&lt;/p&gt;  &lt;p class="Debug"&gt;Event Category:&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;None&lt;/p&gt;  &lt;p class="Debug"&gt;Event ID:&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;129&lt;/p&gt;  &lt;p class="Debug"&gt;Date:&lt;span style="mso-tab-count: 3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;4/9/2009&lt;/p&gt;  &lt;p class="Debug"&gt;Time:&lt;span style="mso-tab-count: 3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;1:15:45 AM&lt;/p&gt;  &lt;p class="Debug"&gt;User:&lt;span style="mso-tab-count: 3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;N/A&lt;/p&gt;  &lt;p class="Debug"&gt;Computer:&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;lt;Computer_Name&amp;gt;&lt;/p&gt;  &lt;p class="Debug"&gt;Description:&lt;/p&gt;  &lt;p class="Debug"&gt;Reset to device, \Device\RaidPort1, was issued.&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;So what does this mean? &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;Let’s discuss the Windows I/O stack architecture to answer this.&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;Windows I/O uses a layered architecture where device drivers are on a “device stack.”&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;In a basic model, the top of the stack is the &lt;b&gt;file system&lt;/b&gt;. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;Next is the &lt;b&gt;volume manager,&lt;/b&gt; followed by the &lt;b&gt;disk driver&lt;/b&gt;. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;At the bottom of the device stack are the &lt;b&gt;port&lt;/b&gt; and &lt;b&gt;miniport drivers&lt;/b&gt;. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;When an I/O request reaches the file system, it takes the block number of the file and translates it to an offset in the volume. The volume manager then translates the volume offset to a block number on the disk and passes the request to the disk driver.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;When the request reaches the disk driver it will create a Command Descriptor Block (CDB) that will be sent to the SCSI device.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The disk driver imbeds the CDB into a structure called the &lt;a href="http://msdn.microsoft.com/en-us/library/ff565393(VS.85).aspx"&gt;&lt;b&gt;SCSI_REQUEST_BLOCK&lt;/b&gt;&lt;/a&gt; (SRB). &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;This &lt;b&gt;SRB&lt;/b&gt; is sent to the port driver as part of the &lt;a href="http://msdn.microsoft.com/en-us/library/ff550694.aspx"&gt;I/O request packet&lt;/a&gt; (&lt;b&gt;IRP&lt;/b&gt;).&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;The port driver does most of the request processing. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;There are different port drivers depending on the architecture. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;For example, &lt;a href="http://msdn.microsoft.com/en-us/library/ff551332(VS.85).aspx"&gt;ATAPORT.SYS&lt;/a&gt; is the port driver for ATA devices, and &lt;a href="http://msdn.microsoft.com/en-us/library/ff567541(v=VS.85).aspx"&gt;STORPORT.SYS&lt;/a&gt; is the port driver for SCSI devices.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Some of the responsibilities for a port driver are:&lt;/p&gt;  &lt;div class="WordSection1"&gt;   &lt;ul&gt;     &lt;li&gt;       &lt;div class="Text"&gt;Providing timing services for requests.&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div class="Text"&gt;Enforcing queue depth (making sure that a device does not get more requests that it can handle).&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div class="Text"&gt;Building &lt;a href="http://en.wikipedia.org/wiki/Vectored_I/O"&gt;scatter gather arrays&lt;/a&gt; for data buffers.&lt;/div&gt;     &lt;/li&gt;   &lt;/ul&gt; &lt;/div&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;The port driver interfaces with a driver called the “&lt;a href="http://msdn.microsoft.com/en-us/library/ff565309(VS.85).aspx"&gt;miniport&lt;/a&gt;”. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;The miniport driver is designed by the hardware manufacturer to work with a specific adapter and is responsible for taking requests from the port driver and sending them to the target LUN.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The port driver calls the &lt;a href="http://msdn.microsoft.com/en-us/library/ff557423(v=VS.85).aspx"&gt;&lt;b&gt;HwStorStartIo()&lt;/b&gt;&lt;/a&gt; function to send requests to the miniport, and the miniport will send the requests to the HBA so they can be sent over the physical medium (fibre, ethernet, etc) to the LUN. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;When the request is complete, the miniport will call &lt;a href="http://msdn.microsoft.com/en-us/library/ff567433(v=VS.85).aspx"&gt;&lt;b&gt;StorPortNotification()&lt;/b&gt;&lt;/a&gt; with the &lt;b&gt;NotificationType&lt;/b&gt; parameter value set to &lt;b&gt;RequestComplete&lt;/b&gt;, along with a pointer to the completed SRB.&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;When a request is sent to the miniport, STORPORT will put the request in a pending queue. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;When the request is completed, it is removed from this queue. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;While requests are in the pending queue they are timed.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;The timing mechanism is simple. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;There is one timer per logical unit and it is initialized to -1. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;When the first request is sent to the miniport the timer is set to the timeout value in the SRB. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;The disk timeout value is a tunable parameter in the registry at: &lt;a href="http://msdn.microsoft.com/en-us/library/ff563970(v=vs.85).aspx"&gt;HKLM\System\CurrentControlSet\Services\&lt;b&gt;Disk&lt;/b&gt;\TimeOutValue&lt;/a&gt;.&amp;#160; Some vendors will tune this value to best match their hardware, we do not advise changing this value without guidance from your storage vendor.&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;The timer is decremented once per second.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;When a request completes, the timer is refreshed with the timeout value of the head request in the pending queue. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;So, as long as requests complete the timer will never go to zero. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;If the timer does go to zero, it means the device has stopped responding.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;That is when the STORPORT driver logs the Event ID 129 error. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;STORPORT then has to take corrective action by trying to reset the unit. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;When the unit is reset, all outstanding requests are completed with an error and they are retried. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;When the pending queue empties, the timer is set to -1 which is its initial value.&lt;/p&gt;  &lt;p class="Text"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image002" border="0" alt="image002" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-77-00-metablogapi/1411.image002_5F00_0E56D836.png" width="480" height="205" /&gt;&lt;/p&gt;  &lt;p class="Caption"&gt;Each SRB has a timer value set. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;As requests are completed the queue timer is refreshed with the timeout value of the SRB at the head of the list.&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;The most common causes of the Event ID 129 errors are unresponsive LUNs or a dropped request.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Dropped requests can be caused by faulty routers or other hardware problems on the SAN.&lt;/p&gt;  &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="Text"&gt;I have never seen software cause an Event ID 129 error. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;If you are seeing Event ID 129 errors in your event logs, then you should start investigating the storage and fibre network.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10161890" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/i_2F00_o/">i/o</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/hardware/">hardware</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Bob/">Bob</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/internals/">internals</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/timeout/">timeout</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/storport/">storport</category></item><item><title>The Mystery of Lsass.exe Memory Consumption, (When all components get involved)</title><link>http://blogs.msdn.com/b/ntdebugging/archive/2011/04/27/the-mystery-of-lsass-exe-memory-consumption-when-all-components-get-involved.aspx</link><pubDate>Wed, 27 Apr 2011 21:31:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10158826</guid><dc:creator>ntdebug</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ntdebugging/rsscomments.aspx?WeblogPostID=10158826</wfw:commentRss><comments>http://blogs.msdn.com/b/ntdebugging/archive/2011/04/27/the-mystery-of-lsass-exe-memory-consumption-when-all-components-get-involved.aspx#comments</comments><description>&lt;div class="WordSection1"&gt;   &lt;p class="Text"&gt;Hi All, this is Karim Elsaid and I’m a Support Escalation Engineer working with the Dubai platforms support team.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Recently I was working on a very challenging and interesting case, and I wanted to share that experience with you.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;One of our customers was experiencing a problem on all his Domain Controllers (Running x86 Windows Server 2003), where intermittently the DCs ran out of resources.&amp;#160; When one of the servers ran out of resources it had to be restarted to restore its functionality. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;The following event was logged on the DC when the problem occurred:&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Event Type: Error      &lt;br /&gt;Event Source: NTDS General       &lt;br /&gt;Event Category: Internal Processing       &lt;br /&gt;Event ID: 1169       &lt;br /&gt;Date:       &lt;br /&gt;Time:       &lt;br /&gt;User: N/A       &lt;br /&gt;Computer:       &lt;br /&gt;Description:       &lt;br /&gt;Active Directory could not allocate the needed amount of memory.       &lt;br /&gt;      &lt;br /&gt;Memory (bytes):       &lt;br /&gt;4568       &lt;br /&gt;      &lt;br /&gt;Active Directory will continue to operate, but may not function correctly.       &lt;br /&gt;      &lt;br /&gt;User Action       &lt;br /&gt;Restart this domain controller. If this condition continues, increase the available       &lt;br /&gt;physical or virtual memory.       &lt;br /&gt;      &lt;br /&gt;Additional Data       &lt;br /&gt;Internal ID:       &lt;br /&gt;30205bd       &lt;br /&gt;For more information, see Help and Support Center at       &lt;br /&gt;&lt;a href="http://go.microsoft.com/fwlink/events.asp"&gt;&lt;span style="color: windowtext; text-decoration: none; text-underline: none"&gt;http://go.microsoft.com/fwlink/events.asp&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;This event gets logged when the Local Security Authority Subsystem (lsass.exe) process is unable to allocate memory from the heap.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;When this problem occurs, users are not able to authenticate and Exchange servers cease functioning until the DC gets rebooted.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;By the time we got the call, the DC that was exhibiting the issue had been rebooted, hence when we checked the lsass.exe memory usage it was very low, but when we checked another DC on the same site, the lsass.exe memory usage was around 1.7GB.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Well, that’s pretty high but it is worth mentioning that by default lsass.exe may utilize a large amount of virtual memory for the ESENT Cache (Active Directory database), nevertheless this should not cause any issues on DCs as it should back-off when needed.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The issue here is that the memory usage for lsass.exe kept growing and never got released back again - this is called a process memory leak.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;To confirm our theory we obtained a Perfmon Log from the DC and checked how Lsass.exe is doing with memory, which proved the theory that lsass.exe is actually leaking memory.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Performance Monitor" border="0" alt="Performance Monitor" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-77-00-metablogapi/7853.image001_5F00_53CD2046.png" width="618" height="480" /&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;We can see from the graph above a steady increase in lsass.exe private bytes.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The DC was booted without /3GB and hence the limit of the user mode process address space is 2GB.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;For more information on this topic, please check the previous post “&lt;a href="http://blogs.msdn.com/b/ntdebugging/archive/2007/10/10/the-memory-shell-game.aspx"&gt;The Memory Shell Game&lt;/a&gt;”&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Now, we need to explore the options on how to track and address such leaks. We could obtain an lsass.exe process dump and check the heap, or obtain a Full memory dump of the server while in the failed state, to check the lsass.exe heap usage and overall system state, but the thing is none of the above may immediately reveal what’s going on.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;We would need to be very lucky to get the dump while the actual memory call that happens inside lsass.exe process is executing, which is very slim.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;What we are looking for is a “pattern”, the pattern which is causing the actual leak inside the lsass.exe process.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;For that we will turn to a tool that I see many of the customers are not aware of, but in fact it is very handy and easy to troubleshoot such a memory leak problem. We will use the “User Mode Dump Heap” or UMDH. By using this tool it will do the job for us, it will monitor the all heap calls that happen in the lsass.exe process.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;All we need to do is to download the “&lt;a href="http://go.microsoft.com/fwlink/?LinkID=191420"&gt;Debugging Tools For Windows&lt;/a&gt;”, enable user mode stack acquisition from the command line, download the symbols from Microsoft public symbol servers, reboot the server and we are good to go.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;You can find information on UMDH; how to set it up and use it “&lt;a href="http://support.microsoft.com/kb/268343"&gt;Here&lt;/a&gt;”&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;So now, all heap blocks that the lsass.exe process allocates will get monitored by UMDH, and the tool will tell us information about that specific call stack.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;For example, the number of allocations using this stack, number of bytes consumed, etc…&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Back to our main problem: We have setup the DC for UMDH and started monitoring the lsass.exe process.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;We verified UMDH is working after the reboot by generating a sample log - &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;it is very critical to generate this simple log to make sure that you are able to resolve the symbols correctly.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;We kept generating UMDH logs daily and then the interesting pattern started to appear, which shows:&lt;/p&gt;    &lt;p class="Text"&gt;&amp;#160;&lt;/p&gt;    &lt;p class="Debug"&gt;+ &lt;span style="background: yellow; mso-highlight: yellow"&gt;123097760&lt;/span&gt; ( 123098480 -&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;720) 1538731 allocs&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;BackTrace4BA0&lt;/p&gt;    &lt;p class="Debug"&gt;+ 1538722 ( 1538731 -&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;9)&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;BackTrace4BA0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;allocations&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;ntdll!RtlAllocateHeapSlowly+00000041&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;ntdll!RtlAllocateHeap+00000E9F&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;msvcrt!malloc+0000006C&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NTDSA!ABBind_local+0000031C&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;NTDSA!NspiBind+0000013D&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!Invoke+00000030&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!NdrStubCall2+00000299&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!NdrServerCall2+00000019&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!DispatchToStubInCNoAvrf+00000038&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!RPC_INTERFACE::DispatchToStubWorker+0000011F&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!RPC_INTERFACE::DispatchToStub+000000A3&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!OSF_SCALL::DispatchHelper+00000149&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!OSF_SCALL::DispatchRPCCall+0000010D&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!OSF_SCALL::ProcessReceivedPDU+0000057F&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!OSF_SCALL::BeginRpcCall+00000194&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!OSF_SCONNECTION::ProcessReceiveComplete+00000435&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!ProcessConnectionServerReceivedEvent+00000021&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!LOADABLE_TRANSPORT::ProcessIOEvents+000001B8&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!ProcessIOEventsWrapper+0000000D&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!BaseCachedThreadRoutine+0000009D&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!ThreadStartRoutine+0000001B&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;kernel32!BaseThreadStart+00000034&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;From the backtrace 4BA0 we can see that there are ~1.5 heap allocation calls that have occurred without being freed from the first day we started to monitor lsass using UMDH.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;There is also another call stack with exactly the same symptoms:&lt;/p&gt;    &lt;p class="Text"&gt;&amp;#160;&lt;/p&gt;    &lt;p class="Debug"&gt;+ &lt;span style="background: yellow; mso-highlight: yellow"&gt;51525199&lt;/span&gt; ( 51525506 -&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;307) 1538802 allocs&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;BackTrace4B92&lt;/p&gt;    &lt;p class="Debug"&gt;+ 1538793 ( 1538802 -&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;9)&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;BackTrace4B92&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;allocations&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;ntdll!RtlAllocateHeapSlowly+00000041&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;ntdll!RtlAllocateHeap+00000E9F&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;LSASRV!LsapAllocatePrivateHeapNoZero+0000004F&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!operator new+0000000D&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!W2AAttachHelper+00000032&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!CNlDelUnicodeAnsi::Convert+00000014&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NTDSA!ABBind_local+0000005D&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;NTDSA!NspiBind+0000013D&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!Invoke+00000030&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!NdrStubCall2+00000299&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!NdrServerCall2+00000019&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!DispatchToStubInCNoAvrf+00000038&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!RPC_INTERFACE::DispatchToStubWorker+0000011F&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!RPC_INTERFACE::DispatchToStub+000000A3&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!OSF_SCALL::DispatchHelper+00000149&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!OSF_SCALL::DispatchRPCCall+0000010D&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!OSF_SCALL::ProcessReceivedPDU+0000057F&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!OSF_SCALL::BeginRpcCall+00000194&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!OSF_SCONNECTION::ProcessReceiveComplete+00000435&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!ProcessConnectionServerReceivedEvent+00000021&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!LOADABLE_TRANSPORT::ProcessIOEvents+000001B8&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!ProcessIOEventsWrapper+0000000D&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!BaseCachedThreadRoutine+0000009D&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;RPCRT4!ThreadStartRoutine+0000001B&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;kernel32!BaseThreadStart+00000034&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;From both call stacks above we can see that the originating function that leads to the heap allocation is “&lt;span style="background: yellow; mso-highlight: yellow"&gt;NTDSA!NspiBind&lt;/span&gt;&lt;span style="font-size: 9pt"&gt;”&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;NSPI is the interface which the Exchange Address Book provider uses to talk to the Global Catalogs. Typically when Outlook clients want to talk to the directory for address book, they talk to the Exchange server directly and then the Exchange server will look up the appropriate GC, forward the request to it and finally send the result back to the originating clients.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This method is called the DSproxy method.&amp;#160; Outlook clients can also send referral requests (RFR) to the Exchange server to get a referral to a GC and then start talking to this GC directly.&amp;#160; You can find more information about this operation “&lt;a href="http://support.microsoft.com/kb/256976"&gt;Here&lt;/a&gt;”&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;With this new information in hand, we turned our attention to the Exchange server for a while. We did so by obtaining&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;a netmon trace from the Exchange server, and started examining it to reveal a massive number of RFR requests originating from outlook client machines toward the Exchange server:&lt;/p&gt;    &lt;p class="Debug"&gt;3795&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;11:50:59.1426170&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;10.3876170&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;GC_SERVER&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;EXCHSERVER &lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;NSPI&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;NSPI:NspiBind Response, ReturnValue=0x0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{MSRPC:535, TCP:488, IPv4:118}&lt;/p&gt;    &lt;p class="Debug"&gt;3796&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;11:50:59.1426170&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;10.3876170&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;EXCHSERVER &lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;10.208.164.176&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NSPI&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NSPI:NspiBind Response, ReturnValue=0x0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;{MSRPC:502, TCP:496, IPv4:326}&lt;/p&gt;    &lt;p class="Debug"&gt;3797&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;11:50:59.1426170&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;10.3876170&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;EXCHSERVER &lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;10.208.164.176&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NSPI&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NSPI:NspiBind Response, ReturnValue=0x0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;{MSRPC:509, TCP:508, IPv4:326}&lt;/p&gt;    &lt;p class="Debug"&gt;3798&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;11:50:59.1426170&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;10.3876170&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;EXCHSERVER &lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;10.208.164.176&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NSPI&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NSPI:NspiBind Response, ReturnValue=0x0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;{MSRPC:494, TCP:484, IPv4:326}&lt;/p&gt;    &lt;p class="Debug"&gt;9807&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;11:51:13.1894920&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;24.4344920&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;10.208.164.176&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;EXCHSERVER &lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;NSPI&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NSPI:NspiBind Request, Flags=0x0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{MSRPC:1144, TCP:1142, IPv4:326}&lt;/p&gt;    &lt;p class="Debug"&gt;10084&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;11:51:13.3769920&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;24.6219920&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;EXCHSERVER &lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;GC_SERVER&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;NSPI&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;NSPI:NspiBind Request, Flags=0x0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{MSRPC:1145, TCP:1143, IPv4:118}&lt;/p&gt;    &lt;p class="Debug"&gt;10085&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;11:51:13.3769920&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;24.6219920&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;GC_SERVER&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;EXCHSERVER &lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;NSPI&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;NSPI:NspiBind Response, ReturnValue=0x0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{MSRPC:1145, TCP:1143, IPv4:118}&lt;/p&gt;    &lt;p class="Debug"&gt;10086&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;11:51:13.3926170&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;24.6376170&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;EXCHSERVER &lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;10.208.164.176&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NSPI&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NSPI:NspiBind Response, ReturnValue=0x0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;{MSRPC:1144, TCP:1142, IPv4:326}&lt;/p&gt;    &lt;p class="Debug"&gt;10103&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;11:51:13.3926170&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;24.6376170&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;10.208.164.176&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;EXCHSERVER &lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;NSPI&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NSPI:NspiBind Request, Flags=0x0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{MSRPC:1182, TCP:1180, IPv4:326}&lt;/p&gt;    &lt;p class="Debug"&gt;10108&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;11:51:13.3926170&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;24.6376170&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;10.208.164.176&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;EXCHSERVER &lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;NSPI&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NSPI:NspiBind Request, Flags=0x0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{MSRPC:1151, TCP:1149, IPv4:326}&lt;/p&gt;    &lt;p class="Debug"&gt;10111&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;11:51:13.3926170&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;24.6376170&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;10.208.164.176&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;EXCHSERVER &lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;NSPI&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NSPI:NspiBind Request, Flags=0x0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{MSRPC:1200, TCP:1196, IPv4:326}&lt;/p&gt;    &lt;p class="Debug"&gt;10115&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;11:51:13.3926170&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;24.6376170&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;10.208.164.176&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;EXCHSERVER &lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;NSPI&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NSPI:NspiBind Request, Flags=0x0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{MSRPC:1164, TCP:1163, IPv4:326}&lt;/p&gt;    &lt;p class="Debug"&gt;10148&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;11:51:13.4863670&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;24.7313670&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;10.34.51.69&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;EXCHSERVER &lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;NSPI&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;NSPI:NspiBind Request, Flags=0x0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{MSRPC:447, TCP:446, IPv4:367}&lt;/p&gt;    &lt;p class="Debug"&gt;10149&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;11:51:13.4863670&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;24.7313670&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;EXCHSERVER &lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;GC_SERVER&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;NSPI&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;NSPI:NspiBind Request, Flags=0x0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{MSRPC:473, TCP:448, IPv4:69}&lt;/p&gt;    &lt;p class="Debug"&gt;10172&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;11:51:13.4863670&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;24.7313670&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;10.208.164.176&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;EXCHSERVER &lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;NSPI&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NSPI:NspiBind Request, Flags=0x0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{MSRPC:1199, TCP:1197, IPv4:326}&lt;/p&gt;    &lt;p class="Debug"&gt;10174&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;11:51:13.4863670&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;24.7313670&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;10.208.164.176&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;EXCHSERVER &lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;NSPI&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NSPI:NspiBind Request, Flags=0x0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{MSRPC:1187, TCP:1186, IPv4:326}&lt;/p&gt;    &lt;p class="Debug"&gt;10180&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;11:51:13.4863670&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;24.7313670&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;10.208.164.176&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;EXCHSERVER &lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;NSPI&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NSPI:NspiBind Request, Flags=0x0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{MSRPC:1170, TCP:1168, IPv4:326}&lt;/p&gt;    &lt;p class="Debug"&gt;10183&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;11:51:13.4863670&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;24.7313670&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;10.208.164.176&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;EXCHSERVER &lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;NSPI&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NSPI:NspiBind Request, Flags=0x0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{MSRPC:1153, TCP:1152, IPv4:326}&lt;/p&gt;    &lt;p class="Debug"&gt;10185&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;11:51:13.4863670&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;24.7313670&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;GC_SERVER&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;EXCHSERVER &lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;NSPI&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;NSPI:NspiBind Response, ReturnValue=0x0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{MSRPC:473, TCP:448, IPv4:69}&lt;/p&gt;    &lt;p class="Debug"&gt;10186&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;11:51:13.4863670&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;24.7313670&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;EXCHSERVER &lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;10.34.51.69&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;NSPI&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;NSPI:NspiBind Response, ReturnValue=0x0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{MSRPC:447, TCP:446, IPv4:367}&lt;/p&gt;    &lt;p class="Debug"&gt;10224&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;11:51:13.5176170&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;24.7626170&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;10.208.164.176&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;EXCHSERVER &lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;NSPI&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NSPI:NspiBind Request, Flags=0x0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{MSRPC:1209, TCP:1208, IPv4:326}&lt;/p&gt;    &lt;p class="Debug"&gt;10227&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;11:51:13.5176170&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;24.7626170&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;10.208.164.176&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;EXCHSERVER &lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;NSPI&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NSPI:NspiBind Request, Flags=0x0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{MSRPC:1192, TCP:1190, IPv4:326}&lt;/p&gt;    &lt;p class="Debug"&gt;10232&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;11:51:13.5176170&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;24.7626170&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;10.208.164.176&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;EXCHSERVER &lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;NSPI&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NSPI:NspiBind Request, Flags=0x0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{MSRPC:1159, TCP:1157, IPv4:326}&lt;/p&gt;    &lt;p class="Debug"&gt;10235&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;11:51:13.5176170&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;24.7626170&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;10.208.164.176&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;EXCHSERVER &lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;NSPI&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NSPI:NspiBind Request, Flags=0x0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{MSRPC:1175, TCP:1173, IPv4:326}&lt;/p&gt;    &lt;p class="Debug"&gt;10240&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;11:51:13.5176170&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;24.7626170&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;10.34.51.69&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;EXCHSERVER &lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;NSPI&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;NSPI:NspiBind Request, Flags=0x0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{MSRPC:447, TCP:446, IPv4:367}&lt;/p&gt;    &lt;p class="Debug"&gt;10241&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;11:51:13.5176170&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;24.7626170&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;EXCHSERVER &lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;GC_SERVER&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;NSPI&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;NSPI:NspiBind Request, Flags=0x0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{MSRPC:473, TCP:448, IPv4:69}&lt;/p&gt;    &lt;p class="Debug"&gt;10251&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;11:51:13.5332420&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;24.7782420&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;GC_SERVER&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;EXCHSERVER &lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;NSPI&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;NSPI:NspiBind Response, ReturnValue=0x0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{MSRPC:473, TCP:448, IPv4:69}&lt;/p&gt;    &lt;p class="Debug"&gt;10255&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;11:51:13.5332420&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;24.7782420&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;EXCHSERVER &lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;10.34.51.69&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;NSPI&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;NSPI:NspiBind Response, ReturnValue=0x0&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{MSRPC:447, TCP:446, IPv4:367}&lt;/p&gt;    &lt;p class="Debug"&gt;Snipp….. &lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;In the netmon capture we saw an excessive number of NspiBind requests been sent from the Outlook client machines to the Exchange server and Exchange server in turn sending these NspiBind requests to the GC, in the netmon capture we didn’t find any frames for NspiUnBind requests, which should be used to destroy that connection.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;When we checked the Exchange server security logs we found a massive number of logon events that are occurring for every single client:&lt;/p&gt;    &lt;p class="Debug"&gt;Event Type:&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;Success Audit&lt;/p&gt;    &lt;p class="Debug"&gt;Event Source:&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Security&lt;/p&gt;    &lt;p class="Debug"&gt;Event Category:&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;(2)&lt;/p&gt;    &lt;p class="Debug"&gt;Event ID:&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;540&lt;/p&gt;    &lt;p class="Debug"&gt;Date:&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;5/26/2010&lt;/p&gt;    &lt;p class="Debug"&gt;Time:&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;3:49:09 PM&lt;/p&gt;    &lt;p class="Debug"&gt;User:&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Computer:&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;EXCHSERVER&lt;/p&gt;    &lt;p class="Debug"&gt;Description:&lt;/p&gt;    &lt;p class="Debug"&gt;Successful Network Logon:&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;User Name:&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;User_Name&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Domain:&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;CONTOSO.COM&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Logon ID:&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;(0x0,0x3DA1F42)&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Logon Type:&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;3&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Logon Process:&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Kerberos&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Authentication Package:&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;Kerberos&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Workstation Name:&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Logon GUID:&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;{b03f9ad2-3150-e1be-f50a-b3abb9d2c09d}&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Caller User Name:&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;-&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Caller Domain:&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;-&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Caller Logon ID:&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;-&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Caller Process ID: -&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Transited Services: -&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Source Network Address:&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;10.11.12.13&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Source Port:&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;So, now we know the problem of lsass.exe memory consumption on the DCs is actually occurring because of a massive number of NspiBind requests that are being sent to the DCs without proper NspiUnbind requests.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;So we turned our attention to the client machines that have Outlook installed and started to list all 3&lt;sup&gt;rd&lt;/sup&gt; party add-ins that are installed on them.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;We found that all affected client machines are actually sharing 3&lt;sup&gt;rd&lt;/sup&gt; party add-ins for email content archival. Further investigation on this software revealed a strange MAPI Wrapper DLL library, and our customer confirmed that the start time of the problem approximately matches the time they have rolled out the content archival software on the client machines.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;We uninstalled this content archival add-in from a couple of machines and these machines stopped hammering the Exchange Server and GC with NspiBind requests.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Later we uninstalled it from the rest of the client machines and the lsass.exe process on the DCs has finally stabilized and we no longer have any issues with its memory usage.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;I’d like to mention that starting with Windows Server 2008 we have implemented a “NSPI Max Sessions Per User” where you can limit the number of NSPI requests from a client to the server.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;You can read more information about this new functionality “&lt;a href="http://support.microsoft.com/kb/949469"&gt;Here&lt;/a&gt;” &lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;That’s it! I hope you enjoyed reading and hopefully this should help you to troubleshoot any memory leaks you may encounter.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The information contained here can be applied to other processes when you suspect heap leaks.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;See you again on another adventure.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Best Regards,&lt;/p&gt;    &lt;p class="Text"&gt;Karim Elsaid&lt;/p&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10158826" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Tools/">Tools</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Debugging/">Debugging</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/leak/">leak</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/consumption/">consumption</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/windows/">windows</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/utilities/">utilities</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/debug/">debug</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Netmon/">Netmon</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/UMDH/">UMDH</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Heap/">Heap</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Elsaid/">Elsaid</category></item><item><title>Control Panel Policy and the Missing Icon</title><link>http://blogs.msdn.com/b/ntdebugging/archive/2011/04/22/control-panel-policy-and-the-missing-icon.aspx</link><pubDate>Fri, 22 Apr 2011 17:22:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10157154</guid><dc:creator>ntdebug</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ntdebugging/rsscomments.aspx?WeblogPostID=10157154</wfw:commentRss><comments>http://blogs.msdn.com/b/ntdebugging/archive/2011/04/22/control-panel-policy-and-the-missing-icon.aspx#comments</comments><description>&lt;div class="WordSection1"&gt;   &lt;p class="Text"&gt;A customer recently reported a rather peculiar problem.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;They were working on a roll out of Windows 7, and one of the policies they employed on their domain was the “&lt;a href="http://technet.microsoft.com/en-us/library/cc940227.aspx"&gt;Show only specified control panel applets&lt;/a&gt;” setting.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;As its name implies, this policy allows an administrator to specify the names of any Control Panel icons they want their users to see, and all others are not shown.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This company chose to allow a few of the Control Panel items included with Windows as well as the Mail icon that is added when Microsoft Office (specifically Outlook) is installed, which allows users to configure their Outlook profiles.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The problem the customer noticed was that, with the policy was in place, the first time a user opened the Control Panel on a computer, all of the allowed icons appeared except for Mail.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;If the user closed Control Panel and reopened it, the icon suddenly appeared.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;In fact, from that point on, the Mail icon would appear for that user on that computer.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;However, if that user logged on to a different computer, or a different user logged in to the first user’s computer, the icon was missing until Control Panel was opened for a second time.&lt;/p&gt;    &lt;p class="Text"&gt;&amp;#160;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Figure 1: Policy setting on our test system" border="0" alt="Figure 1: Policy setting on our test system" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-77-00-metablogapi/0825.image001_5F00_13608C3F.png" width="781" height="634" /&gt;&lt;/p&gt;    &lt;p class="Caption"&gt;Figure 1: Policy setting on our test system&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Figure 2: Result from first open" border="0" alt="Figure 2: Result from first open" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-77-00-metablogapi/0245.image003_5F00_7552587D.png" width="321" height="236" /&gt;&lt;/p&gt;    &lt;p class="Caption"&gt;Figure 2: Result from first open&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Figure 3: Result on subsequent opens (desired)" border="0" alt="Figure 3: Result on subsequent opens (desired)" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-77-00-metablogapi/7510.image004_5F00_66A7AC98.png" width="403" height="235" /&gt;&lt;/p&gt;    &lt;p class="Caption"&gt;Figure 3: Result on subsequent opens (desired)&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Control Panel isn’t something we get many cases on, so I had to figure out how it worked, and what would cause it to fail only the first time.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;One of the first things I discovered as I debugged the issue was that the Control Panel is actually loaded in two passes – a “fast” pass and a “slow” pass.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This is done so icons we know will be loaded quickly can be displayed first so a user doesn’t get stuck with an empty window waiting for some of the slower icons to load.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;What makes an icon fast or slow?&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;It turns out shell maintains a cache of Control Panel items, so it can display them quickly without having to query the actual item for its name, description, icon, etc.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;If we have to ask the item for its information, that will take longer, so it is loaded during the second, slow phase:&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CControlPanelDataWorkItem::_LoadSlowData&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CControlPanelDataWorkItem::DoWork&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CFrameTask::InternalResumeRT&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CRunnableTask::Run&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CShellTask::TT_Run&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CShellTaskThread::ThreadProc&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CShellTaskThread::s_ThreadProc&lt;/p&gt;    &lt;p class="Debug"&gt;shlwapi!ExecuteWorkItemThreadProc&lt;/p&gt;    &lt;p class="Debug"&gt;ntdll!RtlpTpWorkCallback&lt;/p&gt;    &lt;p class="Debug"&gt;ntdll!TppWorkerThread&lt;/p&gt;    &lt;p class="Debug"&gt;kernel32!BaseThreadInitThunk&lt;/p&gt;    &lt;p class="Debug"&gt;ntdll!__RtlUserThreadStart&lt;/p&gt;    &lt;p class="Debug"&gt;ntdll!_RtlUserThreadStart&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Luckily for these icons, they won’t stay relegated to slow loading status forever.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;During the slow loading phase, one of the things we do is add the item’s information to the Control Panel cache, so we can load it during the fast phase in the future.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CPLD_AddControlToReg&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CControlPanelEnum::Next&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CRegFolderEnum::Next&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CControlPanelAppletList::_AddAppletsToCategories&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CControlPanelAppletList::LoadSlowApplets&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CControlPanelDataWorkItem::_LoadSlowData&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CControlPanelDataWorkItem::DoWork&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CFrameTask::InternalResumeRT&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CRunnableTask::Run&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CShellTask::TT_Run&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CShellTaskThread::ThreadProc&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CShellTaskThread::s_ThreadProc&lt;/p&gt;    &lt;p class="Debug"&gt;shlwapi!ExecuteWorkItemThreadProc&lt;/p&gt;    &lt;p class="Debug"&gt;ntdll!RtlpTpWorkCallback&lt;/p&gt;    &lt;p class="Debug"&gt;ntdll!TppWorkerThread&lt;/p&gt;    &lt;p class="Debug"&gt;kernel32!BaseThreadInitThunk&lt;/p&gt;    &lt;p class="Debug"&gt;ntdll!__RtlUserThreadStart&lt;/p&gt;    &lt;p class="Debug"&gt;ntdll!_RtlUserThreadStart&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;This explains why the item was being loaded on subsequent opens of Control Panel – the item was added to the user’s cache on the first run, so the next time, it was loaded during the fast pass:      &lt;br style="mso-special-character: line-break" /&gt;      &lt;br style="mso-special-character: line-break" /&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CControlPanelEnum::_NextCachedCpl&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CControlPanelEnum::Next&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CRegFolderEnum::Next      &lt;br /&gt;shell32!CControlPanelAppletList::_AddAppletsToCategories&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CControlPanelAppletList::EnsureLoaded&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CControlPanelDataWorkItem::_LoadFastData&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CControlPanelDataWorkItem::DoWork&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CFrameTask::InternalResumeRT&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CRunnableTask::Run&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CShellTask::TT_Run&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CShellTaskThread::ThreadProc&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CShellTaskThread::s_ThreadProc&lt;/p&gt;    &lt;p class="Debug"&gt;shlwapi!ExecuteWorkItemThreadProc&lt;/p&gt;    &lt;p class="Debug"&gt;ntdll!RtlpTpWorkCallback&lt;/p&gt;    &lt;p class="Debug"&gt;ntdll!TppWorkerThread&lt;/p&gt;    &lt;p class="Debug"&gt;kernel32!BaseThreadInitThunk&lt;/p&gt;    &lt;p class="Debug"&gt;ntdll!__RtlUserThreadStart&lt;/p&gt;    &lt;p class="Debug"&gt;ntdll!_RtlUserThreadStart&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;But that only answers half the question – while we now know why the icon appears every other time, we still don’t know why it &lt;i style="mso-bidi-font-style: normal"&gt;doesn’t&lt;/i&gt; show up the first time.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;To figure this out, I debugged a system with the “Show only specified control panel applets” policy applied and one without the policy set, both as they opened Control Panel for the first time, and compared where the return codes from the functions diverged.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Starting with CControlPanelEnum::_NextNonCachedCpl, in the non-working case, we can see that it returns 0:      &lt;br style="mso-special-character: line-break" /&gt;      &lt;br style="mso-special-character: line-break" /&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;0:003&amp;gt; bp shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Debug"&gt;0:003&amp;gt; g&lt;/p&gt;    &lt;p class="Debug"&gt;Breakpoint 0 hit&lt;/p&gt;    &lt;p class="Debug"&gt;eax=14c5fa8c ebx=14c5fa7c ecx=11224630 edx=00000000 esi=11224630 edi=14c5fa8c&lt;/p&gt;    &lt;p class="Debug"&gt;eip=76977e11 esp=14c5f9b4 ebp=14c5f9c8 iopl=0&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;nv up ei pl zr na pe nc&lt;/p&gt;    &lt;p class="Debug"&gt;cs=001b&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ss=0023&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ds=0023&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;es=0023&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fs=003b&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;gs=0000&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;efl=00000246&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CControlPanelEnum::_NextNonCachedCpl:&lt;/p&gt;    &lt;p class="Debug"&gt;76977e11 8bff&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;mov&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;edi,edi&lt;/p&gt;    &lt;p class="Debug"&gt;0:020&amp;gt; k&lt;/p&gt;    &lt;p class="Debug"&gt;ChildEBP RetAddr&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;14c5f9b0 76977dff shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Debug"&gt;14c5f9c8 768a854d shell32!CControlPanelEnum::Next+0x5a&lt;/p&gt;    &lt;p class="Debug"&gt;14c5fa18 769710d2 shell32!CRegFolderEnum::Next+0x22e&lt;/p&gt;    &lt;p class="Debug"&gt;14c5fa94 769783e7 shell32!CControlPanelAppletList::_AddAppletsToCategories+0x35&lt;/p&gt;    &lt;p class="Debug"&gt;14c5fac4 76978353 shell32!CControlPanelAppletList::LoadSlowApplets+0x68&lt;/p&gt;    &lt;p class="Debug"&gt;14c5faec 76974db4 shell32!CControlPanelDataWorkItem::_LoadSlowData+0x2e&lt;/p&gt;    &lt;p class="Debug"&gt;14c5fb00 769e06ad shell32!CControlPanelDataWorkItem::DoWork+0x4b&lt;/p&gt;    &lt;p class="Debug"&gt;14c5fb18 768d83a6 shell32!CFrameTask::InternalResumeRT+0x14&lt;/p&gt;    &lt;p class="Debug"&gt;14c5fb38 7691639b shell32!CRunnableTask::Run+0xce&lt;/p&gt;    &lt;p class="Debug"&gt;14c5fb54 76918c1f shell32!CShellTask::TT_Run+0x167&lt;/p&gt;    &lt;p class="Debug"&gt;14c5fb9c 76918d53 shell32!CShellTaskThread::ThreadProc+0xa3&lt;/p&gt;    &lt;p class="Debug"&gt;14c5fba4 760cb2b1 shell32!CShellTaskThread::s_ThreadProc+0x1b&lt;/p&gt;    &lt;p class="Debug"&gt;14c5fbb4 77c8d877 shlwapi!ExecuteWorkItemThreadProc+0xe&lt;/p&gt;    &lt;p class="Debug"&gt;14c5fc28 77c90842 ntdll!RtlpTpWorkCallback+0x11d&lt;/p&gt;    &lt;p class="Debug"&gt;14c5fd80 00000000 ntdll!TppWorkerThread+0x572 &lt;/p&gt;    &lt;p class="Debug"&gt;0:020&amp;gt; gu&amp;#160; &amp;lt;-- This steps out to the instruction after the call to CControlPanelEnum::_NextNonCachedCpl in CControlPanelEnum::Next.&lt;/p&gt;    &lt;p class="Debug"&gt;ModLoad: 35c70000 35c8b000&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;c:\progra~1\common~1\system\msmapi\1033\mlcfg32.cpl&lt;/p&gt;    &lt;p class="Debug"&gt;eax=&lt;span style="background: yellow; mso-highlight: yellow"&gt;00000000&lt;/span&gt; ebx=14c5fa7c ecx=bea347f1 edx=006d2904 esi=11224630 edi=14c5fa8c&lt;/p&gt;    &lt;p class="Debug"&gt;eip=76977dff esp=14c5f9bc ebp=14c5f9c8 iopl=0&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;nv up ei pl zr na pe nc&lt;/p&gt;    &lt;p class="Debug"&gt;cs=001b&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ss=0023&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ds=0023&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;es=0023&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fs=003b&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;gs=0000&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;efl=00000246&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CControlPanelEnum::Next+0x5a:&lt;/p&gt;    &lt;p class="Debug"&gt;76977dff 84c0&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;test&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;al,al&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;But on the machine without the policy set, it returns 1:        &lt;br style="mso-special-character: line-break" /&gt;        &lt;br style="mso-special-character: line-break" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;eax=0c83fc34 ebx=0c83fc24 ecx=04ab1060 edx=00000000 esi=04ab1060 edi=0c83fc34&lt;/p&gt;    &lt;p class="Debug"&gt;eip=76977e11 esp=0c83fb5c ebp=0c83fb70 iopl=0&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;nv up ei pl zr na pe nc&lt;/p&gt;    &lt;p class="Debug"&gt;cs=001b&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ss=0023&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ds=0023&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;es=0023&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fs=003b&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;gs=0000&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;efl=00000246&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CControlPanelEnum::_NextNonCachedCpl:&lt;/p&gt;    &lt;p class="Debug"&gt;76977e11 8bff&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;mov&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;edi,edi&lt;/p&gt;    &lt;p class="Debug"&gt;0:012&amp;gt; k&lt;/p&gt;    &lt;p class="Debug"&gt;ChildEBP RetAddr&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;0c83fb58 76977dff shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Debug"&gt;0c83fb70 768a854d shell32!CControlPanelEnum::Next+0x5a&lt;/p&gt;    &lt;p class="Debug"&gt;0c83fbc0 769710d2 shell32!CRegFolderEnum::Next+0x22e&lt;/p&gt;    &lt;p class="Debug"&gt;0c83fc3c 769783e7 shell32!CControlPanelAppletList::_AddAppletsToCategories+0x35&lt;/p&gt;    &lt;p class="Debug"&gt;0c83fc6c 76978353 shell32!CControlPanelAppletList::LoadSlowApplets+0x68&lt;/p&gt;    &lt;p class="Debug"&gt;0c83fc94 76974db4 shell32!CControlPanelDataWorkItem::_LoadSlowData+0x2e&lt;/p&gt;    &lt;p class="Debug"&gt;0c83fca8 769e06ad shell32!CControlPanelDataWorkItem::DoWork+0x4b&lt;/p&gt;    &lt;p class="Debug"&gt;0c83fcc0 768d83a6 shell32!CFrameTask::InternalResumeRT+0x14&lt;/p&gt;    &lt;p class="Debug"&gt;0c83fce0 7691639b shell32!CRunnableTask::Run+0xce&lt;/p&gt;    &lt;p class="Debug"&gt;0c83fcfc 76918c1f shell32!CShellTask::TT_Run+0x167&lt;/p&gt;    &lt;p class="Debug"&gt;0c83fd44 76918d53 shell32!CShellTaskThread::ThreadProc+0xa3&lt;/p&gt;    &lt;p class="Debug"&gt;0c83fd4c 760cb2b1 shell32!CShellTaskThread::s_ThreadProc+0x1b&lt;/p&gt;    &lt;p class="Debug"&gt;0c83fd5c 77c8d877 shlwapi!ExecuteWorkItemThreadProc+0xe&lt;/p&gt;    &lt;p class="Debug"&gt;0c83fdd0 77c90842 ntdll!RtlpTpWorkCallback+0x11d&lt;/p&gt;    &lt;p class="Debug"&gt;0c83ff30 778b3c45 ntdll!TppWorkerThread+0x572&lt;/p&gt;    &lt;p class="Debug"&gt;0c83ff3c 77cc37f5 kernel32!BaseThreadInitThunk+0xe&lt;/p&gt;    &lt;p class="Debug"&gt;0c83ff7c 77cc37c8 ntdll!__RtlUserThreadStart+0x70&lt;/p&gt;    &lt;p class="Debug"&gt;0c83ff94 00000000 ntdll!_RtlUserThreadStart+0x1b&lt;/p&gt;    &lt;p class="Debug"&gt;0:012&amp;gt; gu&lt;/p&gt;    &lt;p class="Debug"&gt;ModLoad: 35c70000 35c8b000&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;c:\progra~1\common~1\system\msmapi\1033\mlcfg32.cpl&lt;/p&gt;    &lt;p class="Debug"&gt;eax=&lt;span style="background: yellow; mso-highlight: yellow"&gt;00000001&lt;/span&gt; ebx=0c83fc24 ecx=bea347f1 edx=00002bba esi=04ab1060 edi=0c83fc34&lt;/p&gt;    &lt;p class="Debug"&gt;eip=76977dff esp=0c83fb64 ebp=0c83fb70 iopl=0&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;nv up ei pl zr na pe nc&lt;/p&gt;    &lt;p class="Debug"&gt;cs=001b&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ss=0023&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ds=0023&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;es=0023&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fs=003b&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;gs=0000&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;efl=00000246&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CControlPanelEnum::Next+0x5a:&lt;/p&gt;    &lt;p class="Debug"&gt;76977dff 84c0&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;test&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;al,al&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;So we know something in this function is causing us to return FALSE in the failing case and TRUE in the working case.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;An easy way to see where the return result of function calls is the wt (watch trace) debugger command with the -oR switch to see the return values.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;I set the level (-l) to 1 so I’d only see functions directly called from CControlPanelEnum::_NextNonCachedCpl.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Here were the results.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Failing case:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;eax=14c5fa8c ebx=14c5fa7c ecx=11224630 edx=00000000 esi=11224630 edi=14c5fa8c&lt;/p&gt;    &lt;p class="Debug"&gt;eip=76977e11 esp=14c5f9b4 ebp=14c5f9c8 iopl=0&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;nv up ei pl zr na pe nc&lt;/p&gt;    &lt;p class="Debug"&gt;cs=001b&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ss=0023&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ds=0023&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;es=0023&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fs=003b&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;gs=0000&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;efl=00000246&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CControlPanelEnum::_NextNonCachedCpl:&lt;/p&gt;    &lt;p class="Debug"&gt;76977e11 8bff&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;mov&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;edi,edi&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;0:020&amp;gt; wt -oR -l 1&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Tracing shell32!CControlPanelEnum::_NextNonCachedCpl to return address 76977dff&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;31&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;10&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!DSA_GetItemPtr&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;17&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;comctl32!DSA_GetItemPtr eax = 1123aa78&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;48&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;27 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Debug"&gt;ModLoad: 35c70000 35c8b000&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;c:\progra~1\common~1\system\msmapi\1033\mlcfg32.cpl&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;34&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!CPLD_InitModule eax = 1&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;55&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;61 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;15&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!CDPA_Base&amp;lt;RESULT_FOLDER_ITEM,CTContainer_PolicyUnOwned&amp;lt;RESULT_FOLDER_ITEM&amp;gt; &amp;gt;::AppendPtr eax = 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;59&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;76 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;14&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!CPL_AddModuleReference eax = 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;61&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;90 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;21&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!CPL_ReleaseModuleReference eax = 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;76&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;111 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;128&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!CPLD_AddControlToReg eax = 1&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;78&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;239 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;12&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!FindCPLModuleInList eax = c666998&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;84&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;251 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;10&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!DSA_GetItemPtr&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;17&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;comctl32!DSA_GetItemPtr eax = c5e7410&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;91&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;278 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;90&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!CControlPanelEnum::_CanEnumerateApplet eax = 0&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;97&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;368 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;21&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!CPL_ReleaseModuleReference eax = 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;108&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;389 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;143&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!CPLD_FlushRegModules eax = 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;116&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;532 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;3&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!__security_check_cookie eax = 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;118&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;535 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Working case:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;eax=0c83fc34 ebx=0c83fc24 ecx=04ab1060 edx=00000000 esi=04ab1060 edi=0c83fc34&lt;/p&gt;    &lt;p class="Debug"&gt;eip=76977e11 esp=0c83fb5c ebp=0c83fb70 iopl=0&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;nv up ei pl zr na pe nc&lt;/p&gt;    &lt;p class="Debug"&gt;cs=001b&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ss=0023&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ds=0023 &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;es=0023&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fs=003b&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;gs=0000&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;efl=00000246&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CControlPanelEnum::_NextNonCachedCpl:&lt;/p&gt;    &lt;p class="Debug"&gt;76977e11 8bff&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;mov&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;edi,edi&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;0:012&amp;gt; wt -oR -l 1&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;Tracing shell32!CControlPanelEnum::_NextNonCachedCpl to return address 76977dff&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;31&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;10&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!DSA_GetItemPtr&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;17&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;comctl32!DSA_GetItemPtr eax = 4a732c8&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;48&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;27 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Debug"&gt;ModLoad: 35c70000 35c8b000&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;c:\progra~1\common~1\system\msmapi\1033\mlcfg32.cpl&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;34&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!CPLD_InitModule eax = 1&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;55&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;61 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;15&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!CDPA_Base&amp;lt;RESULT_FOLDER_ITEM,CTContainer_PolicyUnOwned&amp;lt;RESULT_FOLDER_ITEM&amp;gt; &amp;gt;::AppendPtr eax = 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;59&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;76 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;14&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!CPL_AddModuleReference eax = 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;61&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;90 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;21&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!CPL_ReleaseModuleReference eax = 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;76&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;111 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;128&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!CPLD_AddControlToReg eax = 1&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;78&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;239 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;12&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!FindCPLModuleInList eax = 2ff3968&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;84&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;251 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;10&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!DSA_GetItemPtr&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;17&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;comctl32!DSA_GetItemPtr eax = 4aa81a8&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;91&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;278 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;111&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!CControlPanelEnum::_CanEnumerateApplet eax = 1&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;104&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;389 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;21&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!CPL_ReleaseModuleReference eax = 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;112&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;410 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;3&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!__security_check_cookie eax = 1&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;114&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;413 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Here, we can see that the function CControlPanelEnum::_CanEnumerateApplet returns true in the working case, but false in the failing case.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This is what is causing the return value from _NextNonCachedCpl to differ, which is ultimately what causes the icon to load/not load.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;So let’s take a look at _CanEnumerateApplet.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Using wt inside this function showed something rather interesting:&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Failing:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;eax=0c5e7410 ebx=769298fd ecx=11224630 edx=00000000 esi=11224630 edi=0c666998&lt;/p&gt;    &lt;p class="Debug"&gt;eip=7693a72f esp=14c5f980 ebp=14c5f9b0 iopl=0&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;nv up ei pl nz na po nc&lt;/p&gt;    &lt;p class="Debug"&gt;cs=001b&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ss=0023&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ds=0023&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;es=0023&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fs=003b&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;gs=0000&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;efl=00000202&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CControlPanelEnum::_CanEnumerateApplet:&lt;/p&gt;    &lt;p class="Debug"&gt;7693a72f 8bff&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;mov&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;edi,edi&lt;/p&gt;    &lt;p class="Debug"&gt;0:020&amp;gt; wt -oR -l 1&lt;/p&gt;    &lt;p class="Debug"&gt;Tracing shell32!CControlPanelEnum::_CanEnumerateApplet to return address 7693a68e&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;27&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_CanEnumerateApplet&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;737&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shlwapi!PathFindFileNameW eax = c6669f8&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;40&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;737 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_CanEnumerateApplet&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;59&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!IDControlCreate eax = 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;44&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;796 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_CanEnumerateApplet&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;43&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [ &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shlwapi!SHWindowsPolicy eax = 1&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;53&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;839 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_CanEnumerateApplet&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;2&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!CRegFolder::QueryInterface&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;5&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!CKnownFoldersFolder::QueryInterface&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;12&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!CAggregatedUnknown::QueryInterface eax = 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;71&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;858 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_CanEnumerateApplet&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;48&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!CRegFolder::GetDetailsEx eax = ffffffff`80070002&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;77&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;906 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_CanEnumerateApplet&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;24&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!CRegFolder::Release eax = 3&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;79&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;930 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_CanEnumerateApplet&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;6&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!ATL::CComVariant::Clear eax = 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;88&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;936 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_CanEnumerateApplet&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;3&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!__security_check_cookie eax = 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;90&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;939 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_CanEnumerateApplet&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Working:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;0:012&amp;gt; wt -oR -l 1&lt;/p&gt;    &lt;p class="Debug"&gt;Tracing shell32!CControlPanelEnum::_CanEnumerateApplet to return address 7693a68e&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;27&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_CanEnumerateApplet&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;737&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shlwapi!PathFindFileNameW eax = 2ff39c8&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;40&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;737 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_CanEnumerateApplet&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;59&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!IDControlCreate eax = 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;44&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;796 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_CanEnumerateApplet&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;43&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shlwapi!SHWindowsPolicy eax = 1&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;53&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;839 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_CanEnumerateApplet&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;2&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!CRegFolder::QueryInterface&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;5&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;shell32!CKnownFoldersFolder::QueryInterface&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;12&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!CAggregatedUnknown::QueryInterface eax = 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;71&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;858 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_CanEnumerateApplet&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;48&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!CRegFolder::GetDetailsEx eax = 0&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;77&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;906 [ &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;0] shell32!CControlPanelEnum::_CanEnumerateApplet&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;28&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!CPL_DoesPolicyAllow eax = 1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;82&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;934 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_CanEnumerateApplet&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;24&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!CRegFolder::Release eax = 3&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;84&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;958 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_CanEnumerateApplet&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;6&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!ATL::CComVariant::Clear eax = 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;98&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;964 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_CanEnumerateApplet&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;358&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!CControlPanelFolder::GetCustomAttributes eax = 0&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;109&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1322 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_CanEnumerateApplet&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;3&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1]&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;shell32!__security_check_cookie eax = 1&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;111&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;1325 [&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;0] shell32!CControlPanelEnum::_CanEnumerateApplet&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Looking at the two, we can see that they both call GetDetailsEx, but in the failing case we seem to get an error result: 80070002, and in the working case we get 0, and then proceed to call CPL_DoesPolicyAllow.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;CPL_DoesPolicyAllow is not called on the machine with the policy applied.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;A quick code review of CPL_DoesPolicyAllow showed that this function checks if a policy prevents or allows an item from being displayed.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;So if we can just get to that function, the icon will load.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Now we need to know why GetDetailsEx fails, preventing us from calling CPL_DoesPolicyAllow.&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;If we look up the error code, it is pretty generic:&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;0:020&amp;gt; !error 80070002&lt;/p&gt;    &lt;p class="Debug"&gt;Error code: (HRESULT) 0x80070002 (2147942402) - The system cannot find the file specified.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Next I stepped through and into GetDetailsEx.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;I’ll save you the tedious steps and output, since the procedure is similar to what I’ve already shown above.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Anyway, I was able to trace the error 2 as being returned by a call to the registry a few functions deep into GetDetailsEx:&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;kernel32!RegOpenKeyExW&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CControlPanelFolder::_GetExtPropRegKey&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CControlPanelFolder::_InitExtPropRegValNameCache&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CControlPanelFolder::_PropertyFromPidl&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CControlPanelFolder::GetDetailsEx&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CRegFolder::GetDetailsEx&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CControlPanelEnum::_CanEnumerateApplet&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CControlPanelEnum::_NextNonCachedCpl&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;This is good news, because it means we can find out what we’re looking for that we aren’t finding.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;First I stepped out to get back to CControlPanelFolder::_InitExtPropRegValNameCache.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Sure enough, eax was 2, which is our ‘cannot find the file’ error.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;0:020&amp;gt; gu&lt;/p&gt;    &lt;p class="Debug"&gt;eax=00000002 ebx=00000000 ecx=778ac2da edx=00000002 esi=14c5eff0 edi=00000000&lt;/p&gt;    &lt;p class="Debug"&gt;eip=76975ead esp=14c5ed40 ebp=14c5efc4 iopl=0&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;nv up ei pl zr na pe nc&lt;/p&gt;    &lt;p class="Debug"&gt;cs=001b&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ss=0023&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;ds=0023&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;es=0023&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;fs=003b&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;gs=0000&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;efl=00000246&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CControlPanelFolder::_GetExtPropRegKey+0xb1:&lt;/p&gt;    &lt;p class="Debug"&gt;76975ead 50&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;push&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;eax&lt;/p&gt;    &lt;p class="Debug"&gt;0:020&amp;gt; !error 2&lt;/p&gt;    &lt;p class="Debug"&gt;Error code: (Win32) 0x2 (2) - The system cannot find the file specified&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Since we know that &lt;a href="http://msdn.microsoft.com/en-us/library/ms724897(VS.85).aspx"&gt;RegOpenKeyEx&lt;/a&gt; takes the subkey it is looking for as the second parameter, let’s look back at the assembly before the call to see what we passed in:&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;0:020&amp;gt; ub @eip&lt;/p&gt;    &lt;p class="Debug"&gt;shell32!CControlPanelFolder::_GetExtPropRegKey+0x98:&lt;/p&gt;    &lt;p class="Debug"&gt;76975e94 7c1f&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;jl&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;shell32!CControlPanelFolder::_GetExtPropRegKey+0xb9 (76975eb5)&lt;/p&gt;    &lt;p class="Debug"&gt;76975e96 56&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;push&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;esi&lt;/p&gt;    &lt;p class="Debug"&gt;76975e97 6a01&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;push&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;1&lt;/p&gt;    &lt;p class="Debug"&gt;76975e99 53&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;push&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;ebx&lt;/p&gt;    &lt;p class="Debug"&gt;76975e9a 8d8590fdffff&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;lea&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;eax,[ebp-270h]&lt;/p&gt;    &lt;p class="Debug"&gt;76975ea0 50&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;push&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;eax&lt;/p&gt;    &lt;p class="Debug"&gt;76975ea1 ffb588fdffff&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;push&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;dword ptr [ebp-278h]&lt;/p&gt;    &lt;p class="Debug"&gt;76975ea7 ff15a0128776&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;call&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;dword ptr [shell32!_imp__RegOpenKeyExW (768712a0)]&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Remember that function parameters are passed in in reverse order, so the second parameter is the second to last value passed to the function.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;In this case, we can see that it was stored in eax.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Of course, eax has been overwritten by our return value of 2, but we can see that just before pushing eax, we get the value from ebp-0x270.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Dumping that out as a Unicode string, we get the key we were looking for:&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;0:020&amp;gt; du @ebp-270h&lt;/p&gt;    &lt;p class="Debug"&gt;14c5ed54&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;quot;Software\Microsoft\Windows\Curre&amp;quot;&lt;/p&gt;    &lt;p class="Debug"&gt;14c5ed94&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;quot;ntVersion\Control Panel\Extended&amp;quot;&lt;/p&gt;    &lt;p class="Debug"&gt;14c5edd4&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;quot; Properties\System.ApplicationNa&amp;quot;&lt;/p&gt;    &lt;p class="Debug"&gt;14c5ee14&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;quot;me&amp;quot;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The first parameter is the root key, which was:&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;0:020&amp;gt; dc @ebp-278h L1&lt;/p&gt;    &lt;p class="Debug"&gt;14c5ed4c&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;80000002&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;We can look up this value in the Windows SDK header files and see that it is for HKLM:&lt;/p&gt;    &lt;p class="Code"&gt;&lt;span style="color: blue"&gt;#define&lt;/span&gt; HKEY_LOCAL_MACHINE&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;(( HKEY ) (ULONG_PTR)((LONG)0x80000002) )&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Aha!&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;So now we know we were trying to access “HKLM\ Software\Microsoft\Windows\CurrentVersion\Control Panel\Extended&lt;/p&gt;    &lt;p class="Text"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;Properties\System.ApplicationName” which didn’t exist, so we were unable to proceed with loading the icon.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;What’s that key for, you ask?&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc144195(v=vs.85).aspx"&gt;MSDN&lt;/a&gt; tells us that it is used to store the &lt;a href="http://msdn.microsoft.com/en-us/library/cc144191(v=vs.85).aspx"&gt;Canonical Name&lt;/a&gt; of the Control Panel item.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Canonical Names were added to the Control Panel in Windows Vista as a better way to organize and name the items in the Control Panel.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;By convention, the canonical name of “Mail” is “Microsoft.Office.Outlook.Profiles.”&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Because the “Show only specified control panel applets” policy can now accept either the legacy name (“Mail”) or the canonical name, we are checking the registry for this string.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Since the key is not present, GetDetailsEx cannot determine the canonical name, and the icon does not load.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;As a test, I created the key HKLM\ Software\Microsoft\Windows\CurrentVersion\Control Panel\Extended&lt;/p&gt;    &lt;p class="Text"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;Properties\System.ApplicationName and added a REG_SZ to it with a name of the file location of the Mail CPL file (&amp;quot;C:\Program Files\Common Files\SYSTEM\MSMAPI\1033\MLCFG32.CPL&amp;quot;) and a value of &amp;quot;Microsoft.Office.Outlook.Profiles&amp;quot;.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Sure enough, the icon loads up on the first try for new users.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;While new Control Panel items should implement a canonical name, that doesn’t work for existing CPLs, like Mail from Outlook 2003.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Since the canonical name isn’t actually required (CPL_DoesPolicyAllow works with both name formats), we’re following up with the development team to allow CPL_DoesPolicyAllow to be called even if a canonical name is not found.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;-Matt Burrough&lt;/p&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10157154" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Debugging/">Debugging</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/windows/">windows</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Burrough/">Burrough</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/windbg/">windbg</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/debug/">debug</category></item><item><title>Windows 7 XP Mode – Auto Publish ‘Not Available’</title><link>http://blogs.msdn.com/b/ntdebugging/archive/2011/03/28/windows-7-xp-mode-auto-publish-not-available.aspx</link><pubDate>Mon, 28 Mar 2011 21:31:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10146849</guid><dc:creator>ntdebug</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ntdebugging/rsscomments.aspx?WeblogPostID=10146849</wfw:commentRss><comments>http://blogs.msdn.com/b/ntdebugging/archive/2011/03/28/windows-7-xp-mode-auto-publish-not-available.aspx#comments</comments><description>&lt;div class="WordSection1"&gt;   &lt;p class="Text"&gt;Hello All, Ron Riddle here again to share another mystery relating to the XP Mode Auto Publish feature for Windows 7 that had an unexpected root cause.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;As you may know, the Auto Publish feature allows applications installed within the guest to be automagically available from the start menu of the Windows 7 host.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Of course, one requirement for this to work properly is that the feature must be enabled; however, I have encountered two such instances where the feature is listed as ‘Not Available’ within the Virtual PC Settings UI once the guest is started.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;   &lt;img style="border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image001" border="0" alt="image001" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-77-00-metablogapi/4338.image001_5F00_2C9E0E0C.png" width="699" height="469" /&gt;     &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;font size="3"&gt;&lt;b&gt;Debugging the Issue&lt;/b&gt; &lt;/font&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The Virtual PC Integration Components Services Application (1-vmsrvc) service, which runs within a vmsrvc.exe instance on the guest, decides whether the Auto Publish feature should be enabled.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;For non-Windows 7 guests, the first thing 1-vmsrvc does is issue a WMI query to determine whether KB961742 (for an XP guest) or KB961741 (for a Vista guest), which provide Remote Applications Integrated Locally (RAIL) support, have been applied.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;font size="3"&gt;&lt;b&gt;Root Cause Analysis&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt; &lt;/font&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Before we issue the WMI query, we must first activate the CLSID_WbemLevel1Login component.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Here’s an excerpt below:&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;0:009&amp;gt; k&lt;/p&gt;    &lt;p class="Debug"&gt;ChildEBP RetAddr&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;00b1f730 74ef186e wbemprox!CDCOMTrans::DoActualCCI+0x3d&lt;/p&gt;    &lt;p class="Debug"&gt;00b1f774 74ef15db wbemprox!CDCOMTrans::DoCCI+0x12d&lt;/p&gt;    &lt;p class="Debug"&gt;00b1f830 74ef17e4 wbemprox!CDCOMTrans::DoActualConnection+0x25c&lt;/p&gt;    &lt;p class="Debug"&gt;00b1f85c 74ef1ee1 wbemprox!CDCOMTrans::DoConnection+0x25&lt;/p&gt;    &lt;p class="Debug"&gt;00b1f89c 01018283 wbemprox!CLocator::ConnectServer+0x7c&lt;/p&gt;    &lt;p class="Debug"&gt;00b1fae8 010182da vmsrvc!VPCRAILUpdates::Connect+0xa8&lt;/p&gt;    &lt;p class="Debug"&gt;00b1faf4 0101842b vmsrvc!VPCRAILUpdates::QueryInstalledFixes+0xb&lt;/p&gt;    &lt;p class="Debug"&gt;00b1fe34 0100b61f vmsrvc!VPCRAILUpdates::CheckIfUpdatesArePresent+0x91&lt;/p&gt;    &lt;p class="Debug"&gt;00b1ffb4 7c80b729 vmsrvc!Win32VPCAppPublisherService::AllowListNotificationThreadProc+0x90&lt;/p&gt;    &lt;p class="Debug"&gt;00b1ffec 00000000 kernel32!BaseThreadStart+0x37&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;However, I noticed that the activation attempt failed with WBEM_E_CRITICAL_ERROR(0x8004100a).&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;0:009&amp;gt; r eax&lt;/p&gt;    &lt;p class="Debug"&gt;eax=8004100a&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;So, I proceeded to debug the activation attempt from within the Windows Management Instrumentation(winmgmt) service, since it provides the class factory for this component.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Notice the call to LoadLibraryExW passing a relative path for the lpFileName parameter.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This means that a search strategy must be applied which leverages the PATH environment variable.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;0:002&amp;gt; k&lt;/p&gt;    &lt;p class="Debug"&gt;ChildEBP RetAddr&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;0086f438 594976e2 kernel32!LoadLibraryExW&lt;/p&gt;    &lt;p class="Debug"&gt;0086f494 7751d8a7 wmisvc!CForwardFactory::CreateInstance+0xf8&lt;/p&gt;    &lt;p class="Debug"&gt;0086f4b8 7751daac ole32!GetInstanceHelperMulti+0x20&lt;/p&gt;    &lt;p class="Debug"&gt;0086f578 77e799f4 ole32!CObjServer::CreateInstance+0x251&lt;/p&gt;    &lt;p class="Debug"&gt;0086f59c 77ef421a RPCRT4!Invoke+0x30&lt;/p&gt;    &lt;p class="Debug"&gt;0086f9a8 77ef4bf3 RPCRT4!NdrStubCall2+0x297&lt;/p&gt;    &lt;p class="Debug"&gt;0086fa00 77600c15 RPCRT4!CStdStubBuffer_Invoke+0xc6&lt;/p&gt;    &lt;p class="Debug"&gt;0086fa40 77600bbf ole32!SyncStubInvoke+0x33&lt;/p&gt;    &lt;p class="Debug"&gt;0086fa88 7752ad31 ole32!StubInvoke+0xa7&lt;/p&gt;    &lt;p class="Debug"&gt;0086fb60 7752ac56 ole32!CCtxComChnl::ContextInvoke+0xe3&lt;/p&gt;    &lt;p class="Debug"&gt;0086fb7c 776007f5 ole32!MTAInvoke+0x1a&lt;/p&gt;    &lt;p class="Debug"&gt;0086fbac 77602df3 ole32!AppInvoke+0x9c&lt;/p&gt;    &lt;p class="Debug"&gt;0086fc80 77600715 ole32!ComInvokeWithLockAndIPID+0x2c2&lt;/p&gt;    &lt;p class="Debug"&gt;0086fccc 77e794bd ole32!ThreadInvoke+0x1cd&lt;/p&gt;    &lt;p class="Debug"&gt;0086fd00 77e79422 RPCRT4!DispatchToStubInC+0x38&lt;/p&gt;    &lt;p class="Debug"&gt;0086fd54 77e7934e RPCRT4!RPC_INTERFACE::DispatchToStubWorker+0x113&lt;/p&gt;    &lt;p class="Debug"&gt;0086fd78 77e8a384 RPCRT4!RPC_INTERFACE::DispatchToStub+0x84&lt;/p&gt;    &lt;p class="Debug"&gt;0086fdb8 77e8a3c5 RPCRT4!RPC_INTERFACE::DispatchToStubWithObject+0xc0&lt;/p&gt;    &lt;p class="Debug"&gt;0086fdf8 77e7bcc1 RPCRT4!LRPC_SCALL::DealWithRequestMessage+0x2cd&lt;/p&gt;    &lt;p class="Debug"&gt;0086fe1c 77e7bc05 RPCRT4!LRPC_ADDRESS::DealWithLRPCRequest+0x16d&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;0:002&amp;gt; du poi(esp+4)&lt;/p&gt;    &lt;p class="Debug"&gt;59491668&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;quot;wbemcore.dll&amp;quot;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Surprisingly, I found that the requested library could not be found using the standard search strategy.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;0:002&amp;gt; !gle&lt;/p&gt;    &lt;p class="Debug"&gt;LastErrorValue: (Win32) 0x7e (126) - The specified module could not be found.&lt;/p&gt;    &lt;p class="Debug"&gt;LastStatusValue: (NTSTATUS) 0xc0000135 - {Unable To Locate Component}&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This application has failed to start because %hs was not found. Re-installing the application may fix this problem.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;I then decided to enable boot logging within the Process Monitor tool to catch a glimpse into why the load for wbemcore.dll was failing.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Here’s an excerpt from the Process Monitor log:&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;8:18:11.1652951 PM&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;svchost2.exe&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;1628&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;QueryOpen&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;C:\WINDOWS\system32\&lt;font style="background-color: #ffff00"&gt;%SystemRoot%&lt;/font&gt;\system32\wbemcore.dll&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;PATH NOT FOUND&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;8:18:11.1653627 PM&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;svchost2.exe&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;1628&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;QueryOpen&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;C:\WINDOWS\system32\&lt;font style="background-color: #ffff00"&gt;%SystemRoot%&lt;/font&gt;\wbemcore.dll&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;PATH NOT FOUND&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;8:18:11.1654161 PM&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;svchost2.exe&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;1628&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;QueryOpen&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;C:\WINDOWS\system32\&lt;font style="background-color: #ffff00"&gt;%SystemRoot%&lt;/font&gt;\System32\Wbem\wbemcore.dll&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;PATH NOT FOUND&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;At this point, it became clear to me that something must be wrong with the PATH environment variable configuration because the SystemRoot environment variable was not being properly expanded.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Sure enough, the registry showed that the Path value was of type REG_SZ rather than REG_EXPAND_SZ.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;   &lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image003" border="0" alt="image003" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-77-00-metablogapi/0121.image003_5F00_5578FD48.png" width="799" height="366" /&gt;     &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Once I saved off the data for the Path value and recreated it specifying the proper type(REG_EXPAND_SZ), the issue was resolved!&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;font size="3"&gt;&lt;b&gt;Sidenote on the Debugging Strategy&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;I chose to debug the services by attaching ntsd.exe and redirecting the session to the kernel debugger.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Alternatively, I could have chosen to use a remote debugging session since it’s much more natural than redirecting to the kernel debugger, in my opinion.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;However, this issue was further complicated by the fact that introducing a debugger in the mix had potential to change the timing enough such that I struggled to reproduce the issue using a remote session.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The reason for this is that if we slow down the 1-vmsrvc execution enough, the winmgmt service itself will attempt to load wbemcore.dll, albeit through an activation request where an &lt;i&gt;absolute path&lt;/i&gt; is specified, thereby avoiding application of a search strategy, which will succeed.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Thus, when 1-vmsrvc attempts to activate CLSID_WbemLevel1Login, it will now succeed because wbemcore.dll is already loaded and the Auto Publish feature will now be ‘Enabled’!&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;font size="3"&gt;&lt;b&gt;Configuration&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;I leveraged the Image File Execution Options key, creating a new entry for vmsrvc.exe and configuring the Debugger value with the following command line:&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\vmsrvc.exe]&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;quot;Debugger&amp;quot;=&amp;quot;c:\\debuggers\\ntsd.exe -d -y srv*c:\\vmsrvc -c \&amp;quot;bu vmsrvc!Win32VPCAppPublisherService::AllowListNotificationThreadProc;bu wbemprox!CDCOMTrans::DoActualCCI;g\&amp;quot;&amp;quot;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;I also isolated the winmgmt service into its own svchost.exe, copied %systemroot%\system32\svchost.exe to %systemroot%\system32\svchost2.exe, and then created a new key for svchost2.exe with the following command line:&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\svchost2.exe]&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;quot;Debugger&amp;quot;=&amp;quot;c:\\debuggers\\ntsd.exe -d -y srv*c:\\winmgmt -c \&amp;quot;bu wmisvc!CForwardFactory::CreateInstance;g\&amp;quot;&amp;quot;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Although redirecting ntsd.exe to the kernel debugger was cumbersome from a usability perspective, I found the ability to debug both processes from a central facility very appealing and worthwhile.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;font size="3"&gt;&lt;b&gt;Conclusion&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;For issues like these that ultimately resolve to a misconfiguration of the OS, I can’t help but think how unfortunate it was that I didn’t stumble onto root cause sooner via the routine task of launching some executable from a command shell.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Surely this would have been a red flag and could have saved me a lot of time debugging!&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;   &lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image005" border="0" alt="image005" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-77-00-metablogapi/3364.image005_5F00_146A7DE4.png" width="667" height="158" /&gt;     &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;While this was a rather extreme example of how a misconfiguration of the OS can affect other seemingly unrelated parts such as the Auto Publish feature of XP Mode, the take-away here is when you detect that the Auto Publish feature is ‘Not Available’, you should begin with standard WMI troubleshooting; and, as we’ve just seen here, a quick sanity check of the environment might not be a bad idea either! :)&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Until next time, happy debugging!&lt;/p&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10146849" width="1" height="1"&gt;</description></item><item><title>Our Team is Hiring - Windows Server Escalation Engineer</title><link>http://blogs.msdn.com/b/ntdebugging/archive/2011/03/10/our-team-is-hiring-windows-server-escalation-engineer.aspx</link><pubDate>Thu, 10 Mar 2011 23:38:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10139562</guid><dc:creator>ntdebug</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ntdebugging/rsscomments.aspx?WeblogPostID=10139562</wfw:commentRss><comments>http://blogs.msdn.com/b/ntdebugging/archive/2011/03/10/our-team-is-hiring-windows-server-escalation-engineer.aspx#comments</comments><description>&lt;div class="WordSection1"&gt;   &lt;p class="Text"&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;Would you like to join the world’s best and most elite debuggers to enable the success of Microsoft solutions?&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;As a trusted advisor to our top customers you will be working with to the most experienced IT professionals and developers in the industry. You will influence our product teams in sustained engineering efforts to drive improvements in our products.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;This role involves deep analysis of product source code and debugging to solve problems in multi-million dollar configurations and will give you an opportunity to stretch your critical thinking skills. During the course of debugging, you will uncover opportunities to improve the customer experience while influencing the current and future design of our products.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;In addition to providing support to customers while being the primary interface to our sustained engineering teams, you will also have the opportunity to work with new technologies and unreleased software. Through our continuous investment in depth training and hands-on experience with tough customer challenges you will become the world’s best in this area. Expect to partner with many various roles at Microsoft launching a very successful career!&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;Learn more about what an Escalation Engineer does at:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;a href="http://blogs.msdn.com/b/peoplefirst/archive/2010/08/19/profile-ron-stock-cts-escalation-engineer.aspx"&gt;&lt;font size="2" face="Arial"&gt;Profile: Escalation Engineer - Microsoft Customer Service &amp;amp; Support - What is CSS?&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;Apply here:&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;a title="https://careers.microsoft.com/JobDetails.aspx?ss=&amp;amp;pg=0&amp;amp;so=&amp;amp;rw=2&amp;amp;jid=30524&amp;amp;jlang=EN" href="https://careers.microsoft.com/JobDetails.aspx?ss=&amp;amp;pg=0&amp;amp;so=&amp;amp;rw=2&amp;amp;jid=30524&amp;amp;jlang=EN"&gt;&lt;font size="2" face="Arial"&gt;https://careers.microsoft.com/JobDetails.aspx?ss=&amp;amp;pg=0&amp;amp;so=&amp;amp;rw=2&amp;amp;jid=30524&amp;amp;jlang=EN&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10139562" width="1" height="1"&gt;</description></item><item><title>How Queue Deadlocks Happen</title><link>http://blogs.msdn.com/b/ntdebugging/archive/2011/02/18/how-queue-deadlocks-happen.aspx</link><pubDate>Fri, 18 Feb 2011 15:49:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10131453</guid><dc:creator>ntdebug</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ntdebugging/rsscomments.aspx?WeblogPostID=10131453</wfw:commentRss><comments>http://blogs.msdn.com/b/ntdebugging/archive/2011/02/18/how-queue-deadlocks-happen.aspx#comments</comments><description>&lt;div class="WordSection1"&gt;   &lt;p class="Text"&gt;I recently worked on an interesting system hang issue with a deadlocked work queue and wanted to share some information about how we resolved the issue.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;In this example, we will demonstrate how a cascaded work item can deadlock a work queue.&amp;#160; As you can see from the illustration, we have three worker threads.&amp;#160; Most work queues have 16 or more threads servicing them, but to simplify this example, three worker threads will be used.&amp;#160; In the first illustration, all worker threads are waiting for the queue’s event to be signaled (indicating that a work item was inserted into the queue).&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Thread ~ac0.001 is a process or service related thread that is currently in a running state (indicated by the color blue).&amp;#160; This thread needs some work to be accomplished in an arbitrary context.&amp;#160; To do this, the thread constructs an IO_WORK_ITEM and specifies a callback routine to be performed by the worker thread(s).&amp;#160; &lt;br /&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Fig. 1 – All worker threads available" border="0" alt="Fig. 1 – All worker threads available" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-77-00-metablogapi/3343.image001_5F00_3DD39CC1.jpg" width="624" height="468" /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoCaption"&gt;Fig. 1 – All worker threads available&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Once the required work items have been defined, our thread would call &lt;a href="http://msdn.microsoft.com/en-us/library/ff549466(VS.85).aspx"&gt;&lt;b&gt;IoQueueWorkItem&lt;/b&gt;&lt;/a&gt; for each item.&amp;#160; This would signal the queue’s notification KEVENT that there is work to be done.&amp;#160; In figure 2, we can see the work items inserted into the queue (Fig. 2).&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Fig. 2 – Thread inserts work items into the queue" border="0" alt="Fig. 2 – Thread inserts work items into the queue" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-77-00-metablogapi/3060.image002_5F00_38C13945.jpg" width="624" height="468" /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoCaption"&gt;Fig. 2 – Thread inserts work items into the queue&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;At this point, the work queue’s event is signaled to wake up the worker(s).&amp;#160; Once running, each of the threads removes a work item from the queue and runs the function associated with the work item.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Since each work item has a completion event, this event will be signaled when the worker is finished processing the item.&amp;#160;&amp;#160; Because of this, thread ~ac0.001 would normally call &lt;a href="http://msdn.microsoft.com/en-us/library/ff553324(VS.85).aspx"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;KeWaitForMultipleObjects&lt;/b&gt;&lt;/a&gt; to wait for the work item completion events to be signaled (Fig. 3).&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Fig. 3 – Requesting thread waits for completion" border="0" alt="Fig. 3 – Requesting thread waits for completion" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-77-00-metablogapi/8640.image003_5F00_69E073E5.jpg" width="624" height="468" /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoCaption"&gt;Fig. 3 – Requesting thread waits for completion&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Upon completion of a work item, each of the worker threads would normally signal the corresponding work item event(s) and then go back into a wait state for new work items and thread ~ac0.001 would continue execution.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Now let’s look at what happens when workers need to enqueue one or more additional work items to the same queue.&amp;#160; This is not a problem as long as there is at least one available worker thread to service these cascaded work items.&amp;#160; The available worker(s) would simply handle these and eventually this situation would resolve itself (Fig. 4).&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Fig. 4 – Work items 4, 5, and 6 will be handled by Thread ~008.004" border="0" alt="Fig. 4 – Work items 4, 5, and 6 will be handled by Thread ~008.004" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-77-00-metablogapi/5432.image004_5F00_0203DE41.jpg" width="624" height="468" /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoCaption"&gt;Fig. 4 – Work items 4, 5, and 6 will be handled by Thread ~008.004&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;If there are no more available workers, work items 4, 5, and 6 will never be handled.&amp;#160; This results in an unresolvable situation (Fig. 5).&amp;#160; No more items can be removed from the queue.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Fig. 5 – No available worker threads to handle items 4, 5, and 6" border="0" alt="Fig. 5 – No available worker threads to handle items 4, 5, and 6" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-77-00-metablogapi/8168.image005_5F00_40F55EDC.jpg" width="624" height="468" /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoCaption"&gt;Fig. 5 – No available worker threads to handle items 4, 5, and 6&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The result is a deadlock on the queue (Fig. 6).&amp;#160; To avoid this type of bug, a developer must take cascaded work items into consideration.&amp;#160; It is not &lt;i&gt;ideal&lt;/i&gt; for a worker routine to enqueue work to its own queue, but it is a common practice in the software industry.&amp;#160; To avoid deadlocks, a developer may want to consider using a separate work queue for these cascaded items.&amp;#160; If this is not possible, the developer should ensure that there are sufficient worker threads to handle any reasonable load scenario.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Fig. 6 – Deadlocked work queue" border="0" alt="Fig. 6 – Deadlocked work queue" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-77-00-metablogapi/3377.image006_5F00_14D861EB.jpg" width="624" height="468" /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoCaption"&gt;Fig. 6 – Deadlocked work queue&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;In summary, exercise caution when writing your worker routines and be sure to do plenty of stress testing to ensure your driver’s design is feasible in real world scenarios. &lt;/p&gt;    &lt;p class="Text"&gt;&lt;b&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b&gt;Example&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;A few weeks ago, I received a memory dump from a customer who was reporting a daily system hang.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;One of the first things I do with a hang dump is to do a quick assessment with &lt;b&gt;!VM&lt;/b&gt;, &lt;b&gt;!Locks&lt;/b&gt;, and &lt;b&gt;!exqueue 6&lt;/b&gt;.&amp;#160; If there's something obvious going on, those three debugger commands will usually get things moving in the right direction.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;In this case, the output of &lt;b&gt;!exqueue 6&lt;/b&gt; caught my eye.&amp;#160; In the &lt;i&gt;Critical Work Queue&lt;/i&gt;, all critical system worker threads were blocking on a wait operation issued by backyard_driver.&amp;#160; It had called &lt;a href="http://msdn.microsoft.com/en-us/library/ff553350(VS.85).aspx"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;KeWaitForSingleObject&lt;/b&gt;&lt;/a&gt; and was waiting for notification events.&amp;#160; I also noticed a large number of pending work items for backyard_driver and there were two different worker routines in these items.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;PENDING: IoWorkItem backyard_driver+0x830768F2 (&lt;span style="background: yellow; mso-bidi-font-weight: bold; mso-highlight: yellow"&gt;0001e228&lt;/span&gt;) &lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IoObject (8823e148) Context (b40e4384) &lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;PENDING: IoWorkItem backyard_driver+0x830767da (&lt;span style="background: yellow; mso-bidi-font-weight: bold; mso-highlight: yellow"&gt;0001e110&lt;/span&gt;) &lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IoObject (8823e148) Context (b40be9f0) &lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;From looking at the thread stacks, I could tell that the waiting worker routines were from the worker routine at +0x1e110, and the pending items were for a worker routine starting at offset +0x1e228.&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;8df6fb8c 96e3cccd 85801aa0 00000000 00000000 nt!KeWaitForSingleObject+0x393 (CONV: stdcall)&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;WARNING: Stack unwind information not available. Following frames may be wrong. &lt;/p&gt;    &lt;p class="Debug"&gt;8df6fbe4 96e3d5bd 88266698 00000103 8df6fc0c backyard_driver+0x1cccd &lt;/p&gt;    &lt;p class="Debug"&gt;8df6fbf4 82e924bc 88266698 8af1cb20 88267f00 backyard_driver+0x1d5bd &lt;/p&gt;    &lt;p class="Debug"&gt;8df6fc0c 96eeb0ac 82e924bc 88267f00 8af1cb20 nt!IofCallDriver+0x63 (CONV: fastcall)&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;8df6fc28 96f08bbc 96ef64d0 859c7220 859893c8 filterdriver1+0x50ac &lt;/p&gt;    &lt;p class="Debug"&gt;8df6fc40 96ef6516 85aea488 858b2e30 00000000 filterdriver2+0x5cc &lt;/p&gt;    &lt;p class="Debug"&gt;8df6fc60 96f07cd1 859893c8 00000000 00000000 filterdriver2+0x2516 &lt;/p&gt;    &lt;p class="Debug"&gt;8df6fc7c 82ebeb33 88228c18 85afb628 859893c8 filterdriver2+0x2f1 &lt;/p&gt;    &lt;p class="Debug"&gt;8df6fcc4 96e3e0fe b40d625c b40d615c 8df6fcec nt!IopfCompleteRequest+0x128 (CONV: fastcall)&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;8df6fcd4 96e3e14d b40d6100 8b1cbaa8 8823e148 backyard_driver+0x1e0fe &lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="background: yellow; mso-bidi-font-weight: bold; mso-highlight: yellow"&gt;8df6fcec 830767fd 8823e148 b40d615c 857524f8 backyard_driver+0x1e14d&lt;/span&gt;&lt;span style="mso-bidi-font-weight: bold"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;8df6fd00 82ec3f3b 8b1cbaa8 00000000 857524f8 nt!IopProcessWorkItem+0x23 (CONV: stdcall)&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;8df6fd50 830646bb 00000000 ae892e65 00000000 nt!ExpWorkerThread+0x10d (CONV: stdcall)&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;8df6fd90 82f160f9 82ec3e2e 00000000 00000000 nt!PspSystemThreadStartup+0x9e (CONV: stdcall)&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x19&amp;#160; &lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;This means that one worker routine was calling &lt;b style="mso-bidi-font-weight: normal"&gt;IoQueueWorkItem&lt;/b&gt; for the same queue and then waiting for completion.&amp;#160; This is fine as long as there are one or more worker threads available to process the cascaded work items, but in this case all threads were busy waiting for other work items in the same queue to complete.&amp;#160; The queue was essentially deadlocked.&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;0: kd&amp;gt; !exqueue 6 &lt;/p&gt;    &lt;p class="Debug"&gt;Dumping ExWorkerQueue: 82F90580 &lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;**** Critical WorkQueue( current = 0 maximum = 4 ) &lt;/p&gt;    &lt;p class="Debug"&gt;THREAD 857524f8&amp;#160; Cid 0004.0018&amp;#160; Teb: 00000000 Win32Thread: 00000000 WAIT: (Executive) KernelMode Non-Alertable &lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160;&amp;#160;&amp;#160; 85801aa0&amp;#160; NotificationEvent &lt;/p&gt;    &lt;p class="Debug"&gt;Not impersonating &lt;/p&gt;    &lt;p class="Debug"&gt;DeviceMap&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 8cc084b0 &lt;/p&gt;    &lt;p class="Debug"&gt;Owning Process&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 8568b600&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Image:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System &lt;/p&gt;    &lt;p class="Debug"&gt;Attached Process&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; N/A&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Image:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; N/A &lt;/p&gt;    &lt;p class="Debug"&gt;Wait Start TickCount&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 30540&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Ticks: 63029 (0:00:16:23.258) &lt;/p&gt;    &lt;p class="Debug"&gt;Context Switch Count&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 27640&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;UserTime&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 00:00:00.000 &lt;/p&gt;    &lt;p class="Debug"&gt;KernelTime&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 00:00:00.327 &lt;/p&gt;    &lt;p class="Debug"&gt;Win32 Start Address nt!ExpWorkerThread (0x82ec3e2e) &lt;/p&gt;    &lt;p class="Debug"&gt;Stack Init 8df6ffd0 Current 8df6fa98 Base 8df70000 Limit 8df6d000 Call 0 &lt;/p&gt;    &lt;p class="Debug"&gt;Priority 13 BasePriority 13 UnusualBoost 0 ForegroundBoost 0 IoPriority 2 PagePriority 5 &lt;/p&gt;    &lt;p class="Debug"&gt;*** ERROR: Module load completed but symbols could not be loaded for backyard_driver.sys &lt;/p&gt;    &lt;p class="Debug"&gt;*** ERROR: Module load completed but symbols could not be loaded for filterdriver1.sys &lt;/p&gt;    &lt;p class="Debug"&gt;*** ERROR: Symbol file could not be found.&amp;#160; Defaulted to export symbols for filterdriver2.SYS - &lt;/p&gt;    &lt;p class="Debug"&gt;ChildEBP RetAddr&amp;#160; Args to Child&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;8df6fab0 82ec4b25 857524f8 00000000 82f7fd20 nt!KiSwapContext+0x26 (FPO: [Uses EBP] [0,0,4])&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;8df6fae8 82ec3423 857525b8 857524f8 85801aa0 nt!KiSwapThread+0x266 (CONV: fastcall)&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;8df6fb10 82ebd2cf 857524f8 857525b8 00000000 nt!KiCommitThreadWait+0x1df (CONV: stdcall)&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;8df6fb8c 96e3cccd 85801aa0 00000000 00000000 nt!KeWaitForSingleObject+0x393 (CONV: stdcall)&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;WARNING: Stack unwind information not available. Following frames may be wrong. &lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="background: yellow; mso-bidi-font-weight: bold; mso-highlight: yellow"&gt;8df6fbe4 96e3d5bd 88266698 00000103 8df6fc0c backyard_driver+0x1cccd &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="background: yellow; mso-bidi-font-weight: bold; mso-highlight: yellow"&gt;8df6fbf4 82e924bc 88266698 8af1cb20 88267f00 backyard_driver+0x1d5bd &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="background: yellow; mso-bidi-font-weight: bold; mso-highlight: yellow"&gt;8df6fc0c 96eeb0ac 82e924bc 88267f00 8af1cb20 nt!IofCallDriver+0x63 (CONV: fastcall)&amp;#160; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="background: yellow; mso-bidi-font-weight: bold; mso-highlight: yellow"&gt;8df6fc28 96f08bbc 96ef64d0 859c7220 859893c8 filterdriver1+0x50ac &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="background: yellow; mso-bidi-font-weight: bold; mso-highlight: yellow"&gt;8df6fc40 96ef6516 85aea488 858b2e30 00000000 filterdriver2+0x5cc &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="background: yellow; mso-bidi-font-weight: bold; mso-highlight: yellow"&gt;8df6fc60 96f07cd1 859893c8 00000000 00000000 filterdriver2+0x2516 &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="background: yellow; mso-bidi-font-weight: bold; mso-highlight: yellow"&gt;8df6fc7c 82ebeb33 88228c18 85afb628 859893c8 filterdriver2+0x2f1 &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="background: yellow; mso-bidi-font-weight: bold; mso-highlight: yellow"&gt;8df6fcc4 96e3e0fe b40d625c b40d615c 8df6fcec nt!IopfCompleteRequest+0x128 (CONV: fastcall)&amp;#160; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="background: yellow; mso-bidi-font-weight: bold; mso-highlight: yellow"&gt;8df6fcd4 96e3e14d b40d6100 8b1cbaa8 8823e148 backyard_driver+0x1e0fe &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;span style="background: yellow; mso-bidi-font-weight: bold; mso-highlight: yellow"&gt;8df6fcec 830767fd 8823e148 b40d615c 857524f8 backyard_driver+0x1e14d&lt;/span&gt;&lt;span style="mso-bidi-font-weight: bold"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;8df6fd00 82ec3f3b 8b1cbaa8 00000000 857524f8 nt!IopProcessWorkItem+0x23 (CONV: stdcall)&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;8df6fd50 830646bb 00000000 ae892e65 00000000 nt!ExpWorkerThread+0x10d (CONV: stdcall)&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;8df6fd90 82f160f9 82ec3e2e 00000000 00000000 nt!PspSystemThreadStartup+0x9e (CONV: stdcall)&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x19&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;&lt;b&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;b&gt;&lt;i&gt;&amp;lt;additional threads were found here with similar stacks&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;b&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;THREAD 856be798&amp;#160; Cid 0004.01d0&amp;#160; Teb: 00000000 Win32Thread: 00000000 WAIT: (Executive) KernelMode Non-Alertable &lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160;&amp;#160;&amp;#160; 85bc4ac8&amp;#160; NotificationEvent &lt;/p&gt;    &lt;p class="Debug"&gt;Not impersonating &lt;/p&gt;    &lt;p class="Debug"&gt;DeviceMap&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 8cc084b0 &lt;/p&gt;    &lt;p class="Debug"&gt;Owning Process&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 8568b600&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Image:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System &lt;/p&gt;    &lt;p class="Debug"&gt;Attached Process&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; N/A&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Image:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; N/A &lt;/p&gt;    &lt;p class="Debug"&gt;Wait Start TickCount&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 30540&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Ticks: 63029 (0:00:16:23.258) &lt;/p&gt;    &lt;p class="Debug"&gt;Context Switch Count&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;UserTime&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 00:00:00.000 &lt;/p&gt;    &lt;p class="Debug"&gt;KernelTime&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 00:00:00.000 &lt;/p&gt;    &lt;p class="Debug"&gt;Win32 Start Address nt!ExpWorkerThread (0x82ec3e2e) &lt;/p&gt;    &lt;p class="Debug"&gt;Stack Init bedddfd0 Current beddda98 Base bedde000 Limit beddb000 Call 0 &lt;/p&gt;    &lt;p class="Debug"&gt;Priority 13 BasePriority 13 UnusualBoost 0 ForegroundBoost 0 IoPriority 2 PagePriority 5 &lt;/p&gt;    &lt;p class="Debug"&gt;ChildEBP RetAddr&amp;#160; Args to Child&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;bedddab0 82ec4b25 856be798 00000000 82f7fd20 nt!KiSwapContext+0x26 (FPO: [Uses EBP] [0,0,4])&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;bedddae8 82ec3423 856be858 856be798 85bc4ac8 nt!KiSwapThread+0x266 (CONV: fastcall)&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;bedddb10 82ebd2cf 856be798 856be858 00000000 nt!KiCommitThreadWait+0x1df (CONV: stdcall)&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;bedddb8c 96e3cccd 85bc4ac8 00000000 00000000 nt!KeWaitForSingleObject+0x393 (CONV: stdcall)&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;WARNING: Stack unwind information not available. Following frames may be wrong. &lt;/p&gt;    &lt;p class="Debug"&gt;bedddbe4 96e3d5bd 88266698 00000103 bedddc0c backyard_driver+0x1cccd &lt;/p&gt;    &lt;p class="Debug"&gt;bedddbf4 82e924bc 88266698 85b2a8d8 88267f00 backyard_driver+0x1d5bd &lt;/p&gt;    &lt;p class="Debug"&gt;bedddc0c 96eeb0ac 82e924bc 88267f00 85b2a8d8 nt!IofCallDriver+0x63 (CONV: fastcall)&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;bedddc28 96f08bbc 96ef64d0 85b33218 8b056f00 filterdriver1+0x50ac &lt;/p&gt;    &lt;p class="Debug"&gt;bedddc40 96ef6516 85e27c90 85e2b9f0 00000000 filterdriver2+0x5cc&lt;/p&gt;    &lt;p class="Debug"&gt;bedddc60 96f07cd1 8b056f00 00000000 00000000 filterdriver2+0x2516 &lt;/p&gt;    &lt;p class="Debug"&gt;bedddc7c 82ebeb33 88228c18 85aae320 8b056f00 filterdriver2+0x2f1 &lt;/p&gt;    &lt;p class="Debug"&gt;bedddcc4 96e3e0fe b40e2ae8 b40e29e8 bedddcec nt!IopfCompleteRequest+0x128 (CONV: fastcall)&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;bedddcd4 96e3e14d b40e2900 859cdee0 8823e148 backyard_driver+0x1e0fe &lt;/p&gt;    &lt;p class="Debug"&gt;bedddcec 830767fd 8823e148 b40e29e8 856be798 backyard_driver+0x1e14d &lt;/p&gt;    &lt;p class="Debug"&gt;bedddd00 82ec3f3b 859cdee0 00000000 856be798 nt!IopProcessWorkItem+0x23 (CONV: stdcall)&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;bedddd50 830646bb 80000000 9da20e65 00000000 nt!ExpWorkerThread+0x10d (CONV: stdcall)&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;bedddd90 82f160f9 82ec3e2e 80000000 00000000 nt!PspSystemThreadStartup+0x9e (CONV: stdcall)&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x19&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;PENDING: IoWorkItem backyard_driver+0x830768F2 (&lt;span style="background: yellow; mso-bidi-font-weight: bold; mso-highlight: yellow"&gt;0001e228&lt;/span&gt;) &lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IoObject (8823e148) Context (b40e4384) &lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;PENDING: IoWorkItem backyard_driver+0x830768F2 (&lt;span style="background: yellow; mso-bidi-font-weight: bold; mso-highlight: yellow"&gt;0001e228&lt;/span&gt;) &lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IoObject (8823e148) Context (b40e45b8) &lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;PENDING: IoWorkItem backyard_driver+0x830767da (0001e110) &lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IoObject (8823e148) Context (b40be9f0) &lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;PENDING: IoWorkItem backyard_driver+0x830768F2 (&lt;span style="background: yellow; mso-bidi-font-weight: bold; mso-highlight: yellow"&gt;0001e228&lt;/span&gt;) &lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IoObject (8823e148) Context (b40e47ec) &lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;PENDING: IoWorkItem backyard_driver+0x830767da (0001e110) &lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IoObject (8823e148) Context (b40e4d88) &lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;PENDING: IoWorkItem backyard_driver+0x830768F2 (&lt;span style="background: yellow; mso-bidi-font-weight: bold; mso-highlight: yellow"&gt;0001e228&lt;/span&gt;) &lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IoObject (8823e148) Context (882aea8c) &lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;.&lt;/p&gt;    &lt;p class="Debug"&gt;.&lt;/p&gt;    &lt;p class="Debug"&gt;.&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;PENDING: IoWorkItem backyard_driver+0x830767da (0001e110) &lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IoObject (8823e148) Context (85807bd4) &lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;PENDING: IoWorkItem backyard_driver+0x830767da (&lt;span style="background: yellow; mso-bidi-font-weight: bold; mso-highlight: yellow"&gt;0001e228&lt;/span&gt;) &lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IoObject (8823e148) Context (8580cca0) &lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;PENDING: IoWorkItem backyard_driver+0x830767da (&lt;span style="background: yellow; mso-bidi-font-weight: bold; mso-highlight: yellow"&gt;0001e228&lt;/span&gt;) &lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IoObject (8823e148) Context (85811e54) &lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;PENDING: IoWorkItem backyard_driver+0x830767da (&lt;span style="background: yellow; mso-bidi-font-weight: bold; mso-highlight: yellow"&gt;0001e228&lt;/span&gt;) &lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IoObject (8823e148) Context (8581713c) &lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160; &lt;/p&gt;    &lt;p class="Debug"&gt;PENDING: IoWorkItem backyard_driver+0x830767da (&lt;span style="background: yellow; mso-bidi-font-weight: bold; mso-highlight: yellow"&gt;0001e228&lt;/span&gt;) &lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IoObject (8823e148) Context (8581c424) &lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;It turns out that this issue was triggered by a sudden surge of IO related to a PNP arrival.&amp;#160; To prevent the issue from occurring, we added a registry value to allow for additional critical worker threads to be created.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;HKLM\SYSTEM\CurrentControlSet\Control\SessionManager\Executive&lt;/p&gt;    &lt;p class="Text"&gt;AdditionalCriticalWorkerThreads : 0x14&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;For more information about this registry key, refer to http://msdn.microsoft.com/en-us/library/ee377058(BTS.10).aspx&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;That’s all for now.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Dennis Middleton &lt;/p&gt;    &lt;p class="Text"&gt;“The NTFS Doctor”&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10131453" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Debugging/">Debugging</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Dennis/">Dennis</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/windows+internals/">windows internals</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Deadlock/">Deadlock</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/debug/">debug</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/kernel/">kernel</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Queue/">Queue</category></item><item><title>Interpreting a WHEA error for a MCA fault</title><link>http://blogs.msdn.com/b/ntdebugging/archive/2011/01/28/interpreting-a-whea-error-for-a-mca-fault.aspx</link><pubDate>Fri, 28 Jan 2011 21:34:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10121720</guid><dc:creator>ntdebug</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ntdebugging/rsscomments.aspx?WeblogPostID=10121720</wfw:commentRss><comments>http://blogs.msdn.com/b/ntdebugging/archive/2011/01/28/interpreting-a-whea-error-for-a-mca-fault.aspx#comments</comments><description>&lt;div class="WordSection1"&gt;   &lt;p class="Text"&gt;Howdy fellow debuggers! This is Graham &lt;span class="GramE"&gt;McIntyre,&lt;/span&gt; I am an Escalation Engineer in Platforms Global Escalation Services.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;We get questions from time to time from customers who experience a WHEA &lt;span class="SpellE"&gt;bugcheck&lt;/span&gt; 0x124, or system event, for help in interpreting the error record. The information applies to Windows Server 2008 / Vista SP1 and Windows 2008 R2 / Windows 7.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;I thought I would go through an example error record, point out some commonly asked questions, and show you how to find specific information on the error.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;In many cases, the information is specific to a particular processor / hardware &lt;span class="GramE"&gt;vendor,&lt;/span&gt; the customer will need to follow up with them. But, we can help to some extent to parse the data.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;For an initial primer on WHEA and hardware error reporting, I suggest reading this whitepaper:&lt;/p&gt;    &lt;p class="Text"&gt;&lt;a href="http://www.microsoft.com/whdc/system/pnppwr/WHEA/wheaintro.mspx"&gt;http://www.microsoft.com/whdc/system/pnppwr/WHEA/wheaintro.mspx&lt;/a&gt;&lt;span class="MsoHyperlink"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;I’ll provide some further links to some specific WHEA information along the way.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b&gt;Getting Started:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;A WHEA bug check 0x124, WHEA_UNCORRECTABLE_ERROR, indicates that a fatal hardware error has occurred.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The bug check parameters give you further information on the WHEA error record generated.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;In this example case, the first parameter was 0 so this indicates that this is a Machine Check Exception (MCE).&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;An MCE is generated by certain classes of processors, such as Intel and AMD 64-bit processors.&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Checking the&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="color: red"&gt; &lt;/span&gt;&lt;/b&gt;help included with the &lt;a href="http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx"&gt;Debugging Tools &lt;span class="GramE"&gt;For&lt;/span&gt; Windows&lt;/a&gt; for Bug Check 0x124 shows this meaning for the parameters:&lt;/p&gt;    &lt;table border="2" cellspacing="0" cellpadding="2" width="799"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td width="161" align="center"&gt;&lt;strong&gt;Parameter 1&lt;/strong&gt;&lt;/td&gt;          &lt;td width="161" align="center"&gt;&lt;strong&gt;Parameter 2&lt;/strong&gt;&lt;/td&gt;          &lt;td width="161" align="center"&gt;&lt;strong&gt;Parameter 3&lt;/strong&gt;&lt;/td&gt;          &lt;td width="161" align="center"&gt;&lt;strong&gt;Parameter 4&lt;/strong&gt;&lt;/td&gt;          &lt;td width="161" align="center"&gt;&lt;strong&gt;Cause of Error&lt;/strong&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="161"&gt;           &lt;p class="Text"&gt;0x0&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="161"&gt;           &lt;p class="Text"&gt;Address of WHEA_ERROR_RECORD structure&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="161"&gt;           &lt;p class="Text"&gt;High 32 bits of MCi_STATUS MSR for the MCA bank that has the error.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="161"&gt;           &lt;p class="Text"&gt;Low 32 bits of MCi_STATUS MSR for the MCA bank that has the error.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="161"&gt;           &lt;p class="Text"&gt;A machine check exception occurred.              &lt;br /&gt;              &lt;br /&gt;These parameter descriptions apply if the processor is based on the x64 architecture, or the x86 architecture that has the MCA feature available (for example, Intel Pentium Pro, Pentium IV, or Xeon).&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;    &lt;p class="Text"&gt;&amp;#160;&lt;/p&gt;    &lt;p class="Text"&gt;There are 2 useful debugger commands for debugging a WHEA error: &lt;/p&gt;    &lt;p style="text-indent: 0.5in" class="Text"&gt;!&lt;span class="SpellE"&gt;whea&lt;/span&gt; – displays top level WHEA information&lt;/p&gt;    &lt;p style="text-indent: 0.5in" class="Text"&gt;!&lt;span class="SpellE"&gt;errrec&lt;/span&gt; – dumps a specific WHEA error record&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;Since we already have an address of the error record in Parameter 2, we can dump it out directly &lt;span class="GramE"&gt;with !&lt;/span&gt;&lt;span class="SpellE"&gt;errrec&lt;/span&gt;.&lt;span style="font-family: consolas"&gt;&amp;#160;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Debug"&gt;31: &lt;span class="SpellE"&gt;kd&lt;/span&gt;&amp;gt; !&lt;span class="SpellE"&gt;errrec&lt;/span&gt; fffffa8064341028       &lt;br /&gt;===============================================================================       &lt;br /&gt;Common Platform Error Record @ fffffa8064341028       &lt;br /&gt;-------------------------------------------------------------------------------       &lt;br /&gt;Record Id&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 01cb65718c829130       &lt;br /&gt;Severity&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : Fatal (1)       &lt;br /&gt;Length&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 928       &lt;br /&gt;Creator&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : Microsoft       &lt;br /&gt;&lt;span style="color: red"&gt;Notify Type&amp;#160;&amp;#160; : Machine Check Exception &lt;/span&gt;      &lt;br /&gt;Timestamp&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 10/11/2010 7:11:22       &lt;br /&gt;Flags&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 0x00000000       &lt;br /&gt;      &lt;br /&gt;===============================================================================       &lt;br /&gt;Section 0&amp;#160;&amp;#160;&amp;#160;&amp;#160; : Processor Generic       &lt;br /&gt;-------------------------------------------------------------------------------       &lt;br /&gt;Descriptor&amp;#160;&amp;#160;&amp;#160; @ fffffa80643410a8       &lt;br /&gt;Section&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @ fffffa8064341180       &lt;br /&gt;Offset&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 344       &lt;br /&gt;Length&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 192       &lt;br /&gt;Flags&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 0x00000001 Primary       &lt;br /&gt;&lt;span style="color: red"&gt;Severity&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : Fatal &lt;/span&gt;      &lt;br /&gt;      &lt;br /&gt;Proc. Type&amp;#160;&amp;#160;&amp;#160; : x86/x64       &lt;br /&gt;Instr. Set&amp;#160;&amp;#160;&amp;#160; : x64       &lt;br /&gt;Error Type&amp;#160;&amp;#160;&amp;#160; : Micro-Architectural Error       &lt;br /&gt;Flags&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 0x00       &lt;br /&gt;CPU Version&amp;#160;&amp;#160; : 0x00000000000206e6 &lt;b&gt;&lt;span style="color: blue"&gt;         &lt;br /&gt;Processor ID&amp;#160; : 0x0000000000000037&lt;/span&gt;&lt;/b&gt;       &lt;br /&gt;      &lt;br /&gt;===============================================================================       &lt;br /&gt;Section 1&amp;#160;&amp;#160;&amp;#160;&amp;#160; : x86/x64 Processor Specific       &lt;br /&gt;-------------------------------------------------------------------------------       &lt;br /&gt;Descriptor&amp;#160;&amp;#160;&amp;#160; @ fffffa80643410f0       &lt;br /&gt;Section&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @ fffffa8064341240       &lt;br /&gt;Offset&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 536       &lt;br /&gt;Length&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 128       &lt;br /&gt;Flags&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 0x00000000       &lt;br /&gt;Severity&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : Fatal &lt;b&gt;&lt;span style="color: purple"&gt;         &lt;br /&gt;          &lt;br /&gt;Local APIC Id : 0x0000000000000037&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: fuchsia"&gt;         &lt;br /&gt;CPU Id &lt;/span&gt;&lt;/b&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : e6 06 02 00 00 08 20&lt;b&gt;&lt;span style="color: fuchsia"&gt; &lt;/span&gt;37&lt;/b&gt; - &lt;span class="SpellE"&gt;bd&lt;/span&gt; e3 &lt;span class="SpellE"&gt;bc&lt;/span&gt; 00 &lt;span class="SpellE"&gt;ff&lt;/span&gt; &lt;span class="SpellE"&gt;fb&lt;/span&gt; &lt;span class="SpellE"&gt;eb&lt;/span&gt; bf       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00       &lt;br /&gt;      &lt;br /&gt;Proc. Info 0&amp;#160; @ fffffa8064341240       &lt;br /&gt;      &lt;br /&gt;===============================================================================       &lt;br /&gt;Section 2&amp;#160;&amp;#160;&amp;#160;&amp;#160; : x86/x64 MCA       &lt;br /&gt;-------------------------------------------------------------------------------       &lt;br /&gt;Descriptor&amp;#160;&amp;#160;&amp;#160; @ fffffa8064341138       &lt;br /&gt;Section&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @ fffffa80643412c0       &lt;br /&gt;Offset&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 664       &lt;br /&gt;Length&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 264       &lt;br /&gt;Flags&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 0x00000000       &lt;br /&gt;Severity&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : Fatal &lt;b&gt;&lt;span style="color: red"&gt;         &lt;br /&gt;          &lt;br /&gt;Error&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : Internal unclassified (&lt;span class="SpellE"&gt;Proc&lt;/span&gt; 31 Bank 5)&lt;/span&gt;&lt;/b&gt;       &lt;br /&gt;Status&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 0xfa00000000400405 &lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;As you can see from the output, a WHEA error record is made of several sections.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Each section is actually a sub-section of the one above it. The sections go from most generic, to most specific, based on the exact type of error which occurred.&lt;/p&gt;    &lt;p style="text-indent: 0.5in" class="Text"&gt;&lt;b&gt;&lt;span style="color: #0070c0"&gt;CPER / WHEA record –&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #0070c0"&gt; this is defined in Appendix N of the UEFI spec version 2.2 (these can be obtained from &lt;a href="http://www.uefi.org/"&gt;&lt;span style="color: #0070c0"&gt;www.uefi.org&lt;/span&gt;&lt;/a&gt;)&lt;/span&gt;&lt;/p&gt;    &lt;p style="text-indent: 0.5in" class="Text"&gt;&lt;span style="color: #0070c0"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;The format of most of the sections is defined in the UEFI Spec version 2.2 as part of the Common Platform Error Record (CPER) definition.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;span class="GramE"&gt;The last section &lt;span class="SpellE"&gt;decribes&lt;/span&gt; a Machine Check &lt;span class="SpellE"&gt;Archtecture&lt;/span&gt; (MCA) which is defined by the processor manufacturer.&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;In this case, it is an Intel processor&lt;/p&gt;    &lt;p style="padding-left: 0.5in" class="Text"&gt;&lt;b&gt;&lt;span style="color: #0070c0"&gt;MCA information&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #0070c0"&gt; - The format of the last part of the record (MCA) is defined in the&lt;a href="http://developer.intel.com/Assets/PDF/manual/253668.pdf"&gt;&lt;span style="color: #0070c0; mso-bidi-font-family: calibri"&gt; Intel 64 and IA-32 Architectures Software Developer’s Manual Volume 3A&lt;/span&gt;&lt;/a&gt;         &lt;br /&gt;Section 15 describes the MCA format and structure. &lt;a href="http://developer.intel.com/Assets/PDF/manual/253669.pdf"&gt;&lt;span style="color: #0070c0; mso-bidi-font-family: calibri"&gt;Appendix E in Volume 3B&lt;/span&gt;&lt;/a&gt; has additional details on interpreting Machine-Check error codes         &lt;br style="mso-special-character: line-break" /&gt;        &lt;br style="mso-special-character: line-break" /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b&gt;Let’s take a look at what each of the sections represents:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;An error record is described by a &lt;a href="http://msdn.microsoft.com/en-us/library/ff560483(v=VS.85).aspx"&gt;&lt;b&gt;WHEA_ERROR_RECORD&lt;/b&gt;&lt;/a&gt; structure, the error record header is described by a &lt;a href="http://msdn.microsoft.com/en-us/library/ff560487(v=VS.85).aspx"&gt;&lt;b&gt;WHEA_ERROR_RECORD_HEADER&lt;/b&gt;&lt;/a&gt; structure, and the error record section descriptors are each described by a &lt;a href="http://msdn.microsoft.com/en-us/library/ff560496(v=VS.85).aspx"&gt;&lt;b&gt;WHEA_ERROR_RECORD_SECTION_DESCRIPTOR&lt;/b&gt;&lt;/a&gt; structure.&lt;/p&gt;    &lt;p class="Text"&gt;     &lt;br /&gt;The CPER record header is a &lt;a href="http://msdn.microsoft.com/en-us/library/ff560480(v=VS.85).aspx"&gt;WHEA_ERROR_PACKET_V2&lt;/a&gt;, and describes the severity and type of error.&amp;#160; In this case it is a fatal Machine Check Exception (MCE)       &lt;br /&gt;      &lt;br /&gt;Section 0 is a Generic Processor error. This error record section contains processor error data that is not specific to &lt;span class="GramE"&gt;a particular&lt;/span&gt; processor architecture. The data that is contained in this section is described by the &lt;a href="http://msdn.microsoft.com/en-us/library/ff560607(v=VS.85).aspx"&gt;&lt;b&gt;WHEA_PROCESSOR_GENERIC_ERROR_SECTION&lt;/b&gt;&lt;/a&gt; structure.       &lt;br /&gt;      &lt;br /&gt;Section 1 is an x86/x64 Processor Error. This error record section contains processor error data that is specific to the x86 or x64 processor architecture. The data that is contained in this section is described by the &lt;a href="http://msdn.microsoft.com/en-us/library/ff560655(v=VS.85).aspx"&gt;&lt;b&gt;WHEA_XPF_PROCESSOR_ERROR_SECTION&lt;/b&gt;&lt;/a&gt; structure.       &lt;br /&gt;      &lt;br /&gt;Section 2 is of type &lt;a href="BLOCKED SCRIPTu(%221TY%22,34)"&gt;WHEA_XPF_MCA_SECTION&lt;/a&gt; and contains the machine check and other machine-specific register information. The actual structure which holds the MCA data is a Microsoft specific extension of the CPER specification.&amp;#160; We build this record by reading the Machine Specific Registers (MSRs) which are processor specific, and filling in the fields.&amp;#160; These (and many of the above) are defined in the header file &lt;span class="SpellE"&gt;cper.h&lt;/span&gt; in the SDK.       &lt;br style="mso-special-character: line-break" /&gt;      &lt;br style="mso-special-character: line-break" /&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b&gt;Some of the questions which I was asked about this record, and their answers:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;span class="GramE"&gt;1.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Why is the processor number (31)&lt;/span&gt; listed in the MCA record (Section 2) different than the processor id / APIC ID (37) in sections 0 and 1? &lt;/p&gt;    &lt;p style="padding-left: 0.5in" class="Text"&gt;The answer to this one is that the numbers have different meanings, and different sources.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The one in sections 0 and 1 is the initial &lt;b&gt;APIC ID&lt;/b&gt; of the CPU which reported the machine check.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The APIC ID for a logical CPU is set by the hardware on boot.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The processor number in Section 2 is the &lt;b style="mso-bidi-font-weight: normal"&gt;logical processor number&lt;/b&gt; (the value returned from &lt;span class="SpellE"&gt;KeGetCurrentProcessorNumberEx&lt;/span&gt;) of the processor which is creating the WHEA error record. This may or may not be the same processor which reported the machine check error, depending on the IRQL which the processor generating the error was running.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;If the IRQL was &amp;lt; DISPATCH_LEVEL, then it is scheduled to run on the reporting processor.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Otherwise, it may be logged on a different processor.       &lt;br /&gt;      &lt;br /&gt;How do you map APIC IDs to logical IDs?       &lt;br /&gt;One way is using &lt;span class="GramE"&gt;the !&lt;/span&gt;&lt;span class="SpellE"&gt;smt&lt;/span&gt; debugger extension.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;This shows the &lt;span style="background: yellow; mso-highlight: yellow"&gt;APIC IDs &lt;/span&gt;and &lt;span style="background: lime; mso-highlight: lime"&gt;logical CPU number &lt;/span&gt;for all CPUs.&lt;/p&gt;    &lt;p class="Debug"&gt;No PRCB&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SMT Set&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; APIC Id      &lt;br /&gt;&lt;span style="background: lime; mso-highlight: lime"&gt;0&lt;/span&gt; fffff8000da3ee80 **-------------------------------------------------------------- (0000000000000003) &lt;span style="background: yellow; mso-highlight: yellow"&gt;0x00000080&lt;/span&gt;       &lt;br /&gt;&lt;span style="background: lime; mso-highlight: lime"&gt;1&lt;/span&gt; fffff8800260e180 **-------------------------------------------------------------- (0000000000000003) &lt;span style="background: yellow; mso-highlight: yellow"&gt;0x00000081&lt;/span&gt;       &lt;br style="mso-special-character: line-break" /&gt;      &lt;br style="mso-special-character: line-break" /&gt;&lt;/p&gt;    &lt;p class="Text"&gt;2. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;How do you interpret the MCA &lt;span class="GramE"&gt;error&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;“&lt;/span&gt;Internal unclassified (&lt;span class="SpellE"&gt;Proc&lt;/span&gt; 31 Bank 5)”?&lt;/p&gt;    &lt;p style="padding-left: 0.5in" class="Text"&gt;In order to make sense of these, you need to determine a few pieces of information, &lt;span class="GramE"&gt;then&lt;/span&gt; refer to the specific processor guide.       &lt;br /&gt;      &lt;br /&gt;As I mentioned previously, for this particular system, it is an Intel system so these are the resources you need to use:&lt;/p&gt;    &lt;p style="padding-left: 0.5in" class="Text"&gt;&lt;b&gt;&lt;span style="color: #0070c0"&gt;Section 15 &lt;/span&gt;&lt;/b&gt;&lt;span style="color: #0070c0; mso-bidi-font-weight: bold"&gt;in the &lt;/span&gt;&lt;span style="color: #0070c0"&gt;&lt;a href="http://developer.intel.com/Assets/PDF/manual/253668.pdf"&gt;&lt;span style="color: #0070c0"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;Intel 64 and IA-32 Architectures Software Developer’s Manual Volume 3A&lt;/span&gt;&lt;/a&gt;         &lt;br /&gt;&lt;a href="http://developer.intel.com/Assets/PDF/manual/253669.pdf"&gt;&lt;span style="color: #0070c0"&gt;Appendix E in Volume 3B&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="color: #0070c0"&gt; &lt;span class="GramE"&gt;has&lt;/span&gt; additional details on interpreting Machine-Check error codes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p style="padding-left: 0.5in" class="Text"&gt;&lt;b&gt;a. CPU ID – What Family, Model, and Stepping is the CPU?&lt;/b&gt;&lt;/p&gt;    &lt;p style="padding-left: 1in" class="Text"&gt;!cpuid can show you this.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Or, you can parse it from the CPU ID in section 1.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;In this case it is:       &lt;br /&gt;&lt;b&gt;&lt;span style="font-family: consolas; color: fuchsia"&gt;CPU Id &lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: consolas"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : &lt;span style="background: lightgrey; mso-highlight: lightgrey"&gt;e&lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;6&lt;/span&gt; 0&lt;span style="background: aqua; mso-highlight: aqua"&gt;6&lt;/span&gt; 0&lt;span style="background: lime; mso-highlight: lime"&gt;2&lt;/span&gt; 00 00 08 20&lt;b&gt;&lt;span style="color: fuchsia"&gt; &lt;/span&gt;37&lt;/b&gt; - &lt;span class="SpellE"&gt;bd&lt;/span&gt; e3 &lt;span class="SpellE"&gt;bc&lt;/span&gt; 00 &lt;span class="SpellE"&gt;ff&lt;/span&gt; &lt;span class="SpellE"&gt;fb&lt;/span&gt; &lt;span class="SpellE"&gt;eb&lt;/span&gt; bf&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;// Family &lt;span style="background: aqua; mso-highlight: aqua"&gt;6&lt;/span&gt;, Model &lt;span style="background: lime; mso-highlight: lime"&gt;2&lt;/span&gt;&lt;span style="background: lightgrey; mso-highlight: lightgrey"&gt;e&lt;/span&gt;, stepping &lt;span style="background: yellow; mso-highlight: yellow"&gt;6&lt;/span&gt;&lt;/span&gt;       &lt;br /&gt;      &lt;br /&gt;Table B-1 in Appendix B of the Intel guide says that this Family and Model is a “Intel Xeon Processor 7500 Series”&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p style="padding-left: 0.5in" class="Text"&gt;&lt;b&gt;b. What is the MCA Error code? &lt;/b&gt;&lt;/p&gt;    &lt;p style="padding-left: 1in" class="Text"&gt;In order to find this out, we need to parse the &lt;span class="SpellE"&gt;MC&lt;i style="mso-bidi-font-style: normal"&gt;i&lt;/i&gt;_STATUS&lt;/span&gt; structure.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The ‘&lt;i style="mso-bidi-font-style: normal"&gt;i’ &lt;/i&gt;is used in the Intel guides as a placeholder for the bank number.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;An error bank is a processor specific set of MSRs.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Some banks are publically documented in what the type of error represents, and some are not.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;If the bank is not documented, then you will need to check with the processor manufacturer.&lt;/p&gt;    &lt;p style="padding-left: 1in" class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p style="padding-left: 1in" class="Text"&gt;Now that we know the processor family and model, we can look up the meaning of specific bank of registers.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;These are listed in this form: MSR_MC&lt;i style="mso-bidi-font-style: normal"&gt;i&lt;/i&gt;_STATUS.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;So since we know the bank number is 5, we can find the meaning of MSR_MC5_STATUS.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Here’s what the Intel guide shows:&lt;/p&gt;    &lt;p style="padding-left: 1in" class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p style="padding-left: 1in" class="Text"&gt;Table B5 MSRS IN THE INTEL® MICROARCHITECTURE CODENAME NEHALEM&lt;/p&gt;    &lt;p style="padding-left: 1in" class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p style="padding-left: 1in" class="Text"&gt;Table B-5&lt;/p&gt;    &lt;table style="margin-left: 1in" border="2" cellspacing="0" cellpadding="2" width="600"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td width="79" align="center"&gt;Register (hex)&lt;/td&gt;          &lt;td width="76" align="center"&gt;Register (dec)&lt;/td&gt;          &lt;td width="108" align="center"&gt;Register Name&lt;/td&gt;          &lt;td width="50" align="center"&gt;Scope&lt;/td&gt;          &lt;td width="283" align="center"&gt;Bit Description&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="79"&gt;414H&lt;/td&gt;          &lt;td valign="top" width="76"&gt;1044&lt;/td&gt;          &lt;td valign="top" width="108"&gt;MSR_MC5_STATUS&lt;/td&gt;          &lt;td valign="top" width="50"&gt;Core&lt;/td&gt;          &lt;td valign="top" width="283"&gt;See Section 15.3.2.1, “IA32_MCi_CTL MSRs.”&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="79"&gt;&lt;strong&gt;415H&lt;/strong&gt;&lt;/td&gt;          &lt;td valign="top" width="76"&gt;&lt;strong&gt;1045&lt;/strong&gt;&lt;/td&gt;          &lt;td valign="top" width="108"&gt;&lt;strong&gt;MSR_MC5_STATUS&lt;/strong&gt;&lt;/td&gt;          &lt;td valign="top" width="50"&gt;&lt;strong&gt;Core&lt;/strong&gt;&lt;/td&gt;          &lt;td valign="top" width="283"&gt;&lt;strong&gt;See Section 15.3.2.2, “IA32_MCi_STATUS MSRS.”&lt;/strong&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="79"&gt;416H&lt;/td&gt;          &lt;td valign="top" width="76"&gt;1046&lt;/td&gt;          &lt;td valign="top" width="108"&gt;MSR_MC5_ADDR&lt;/td&gt;          &lt;td valign="top" width="50"&gt;Core&lt;/td&gt;          &lt;td valign="top" width="283"&gt;See Section 15.3.2.3, “IA32_MCi_ADDR MSRs.”&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="79"&gt;417H&lt;/td&gt;          &lt;td valign="top" width="76"&gt;1047&lt;/td&gt;          &lt;td valign="top" width="108"&gt;MSR_MC5_MISC&lt;/td&gt;          &lt;td valign="top" width="50"&gt;Core&lt;/td&gt;          &lt;td valign="top" width="283"&gt;See Section 15.3.2.4, “IA32_MCi_MISC MSRs.”&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;    &lt;p style="padding-left: 1in" class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p style="padding-left: 1in" class="Text"&gt;Now,referring to section 15.3.2.2, we can decode the value:&lt;/p&gt;    &lt;p style="padding-left: 0.5in" class="Debug"&gt;MCI_STATUS      &lt;br /&gt;+0x000 McaErrorCode&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 0x405&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;// binary:&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;span style="font-family: consolas; color: #00b050"&gt;0000 01&lt;/span&gt;&lt;span style="font-family: consolas"&gt;00 0000 0101&lt;/span&gt;       &lt;br /&gt;+0x002 ModelErrorCode&amp;#160;&amp;#160; : 0x40&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;// binary: &lt;span style="font-family: consolas"&gt;0000 0000 0100 0000 // bit 22&lt;/span&gt;       &lt;br /&gt;+0x004 OtherInformation : 0y00000000000000000000000 (0)       &lt;br /&gt;+0x004 ActionRequired&amp;#160;&amp;#160; : 0y0       &lt;br /&gt;+0x004 Signalling&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 0y0       &lt;br /&gt;+0x004 ContextCorrupt&amp;#160;&amp;#160; : 0y1       &lt;br /&gt;+0x004 AddressValid&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 0y0       &lt;br /&gt;+0x004 MiscValid&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 0y1       &lt;br /&gt;+0x004 ErrorEnabled&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 0y1       &lt;br /&gt;+0x004 UncorrectedError : 0y1       &lt;br /&gt;+0x004 StatusOverFlow&amp;#160;&amp;#160; : 0y1       &lt;br /&gt;+0x004 Valid&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 0y1       &lt;br /&gt;+0x000 QuadPart&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 0xfa000000`00400405&lt;/p&gt;    &lt;p style="padding-left: 0.5in" class="Debug"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="padding-left: 1in" class="Text"&gt;Section 15.9 discusses how to interpret these error codes.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;From Table 8, “IA32_MCi_Status [15:0] Simple Error Code Encoding”, the meaning is given as:&lt;/p&gt;    &lt;p style="padding-left: 0.5in" class="Debug"&gt;Internal Unclassified &lt;span style="color: #00b050"&gt;0000 01&lt;/span&gt;xx xxxx xxxx Internal unclassified errors.&lt;/p&gt;    &lt;p class="Debug"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="padding-left: 1in" class="Text"&gt;This is why the error shows as “Internal Unclassified”.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Since this is not a publicly documented code, the next step would be to contact Intel for further information.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;But, at least now you have verified the information and will have good data to send to the hardware manufacturer.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;In other cases, the bank and MCA code may be more clearly documented and further action could be taken.&lt;/p&gt;    &lt;p style="padding-left: 1in" class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Further Reading: &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="Text"&gt;There is more information regarding WHEA on MSDN and in several WinHEC conference presentations on the Microsoft site:&lt;/p&gt;    &lt;p class="Text"&gt;&lt;a href="http://download.microsoft.com/download/a/f/d/afdfd50d-6eb9-425e-84e1-b4085a80e34e/svr-t464_wh07.pptx"&gt;&lt;span style="mso-bidi-font-family: calibri"&gt;WHEA Platform Implementation&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #1f497d; mso-bidi-font-family: calibri"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;a href="http://download.microsoft.com/download/a/f/d/afdfd50d-6eb9-425e-84e1-b4085a80e34e/svr-t326_wh07.pptx"&gt;&lt;span style="mso-bidi-font-family: calibri"&gt;WHEA System Design and Implementation&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #1f497d; mso-bidi-font-family: calibri"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Text"&gt;&lt;o:p&gt;&amp;#160;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="Text"&gt;I hope this information was useful to understand how to interpret WHEA and MCA error codes. Until next time!&lt;/p&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10121720" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Debugging/">Debugging</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Architecture/">Architecture</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/hardware/">hardware</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Graham/">Graham</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/x64/">x64</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/debug/">debug</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/x86/">x86</category></item><item><title>Hunting for Bugs, but Found a Worm</title><link>http://blogs.msdn.com/b/ntdebugging/archive/2011/01/07/hunting-for-bugs-but-found-a-worm.aspx</link><pubDate>Fri, 07 Jan 2011 19:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10113116</guid><dc:creator>ntdebug</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ntdebugging/rsscomments.aspx?WeblogPostID=10113116</wfw:commentRss><comments>http://blogs.msdn.com/b/ntdebugging/archive/2011/01/07/hunting-for-bugs-but-found-a-worm.aspx#comments</comments><description>&lt;div class="WordSection1"&gt;
&lt;p class="Text"&gt;Hi All, my name is Ron Riddle and I&amp;rsquo;m an Escalation Engineer on the core Windows team.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I worked an issue recently wherein a svchost.exe was crashing due to heap corruption; so, after enabling Page Heap and breaking out the services as needed, I received a user-mode dump that would show me the culprit.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I was expecting to find a legitimate bug either in our code or a third-party module; but, much to my surprise, I found that malware had caused a buffer overrun and the subsequent crash.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;With that, I would like to share the simple approach I took in identifying the malware within the dump file.&lt;/p&gt;
&lt;p class="Text"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="Text"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Text"&gt;1. I start by dumping out the offending call stack.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Notice that the debugger wasn&amp;rsquo;t able to map the code addresses to a loaded or unloaded module.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;0:003&amp;gt; kbn&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;# ChildEBP RetAddr &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;Args to Child&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;WARNING: Frame IP not in any known module. Following frames may be wrong.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;00 02bcfdcc 7c81a35f 02b7ae40 7c81a3ab 00000004 &lt;span style="background-color: #ffff00;"&gt;0x2b685b0&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;01 02bcfde4 02b68bfe 02b7ae40 00000000 77e424ee ntdll!LdrpCallInitRoutine+0x21&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02 02bcfde8 02b7ae40 00000000 77e424ee 02b7ae10 0x2b68bfe&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;03 02bcfdec 00000000 77e424ee 02b7ae10 00000000 0x2b7ae40&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Text"&gt;2. Next, I try to learn more about the mystery address, such as what larger allocation it was a part of.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;0:003&amp;gt; !address &lt;span style="background-color: #ffff00;"&gt;0x2b685b0&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;Usage:&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;unclassified&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;Allocation Base:&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;02b60000&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;Base Address:&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="background-color: #ffff00;"&gt;02b61000&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;End Address:&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;02b81000&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;Region Size:&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="background-color: #ffff00;"&gt;00020000&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;Type:&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;00020000&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;MEM_PRIVATE&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;State:&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;00001000&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;MEM_COMMIT&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;Protect:&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;00000040&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;PAGE_EXECUTE_READWRITE&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Text"&gt;3. By now, I am suspicious of a rogue module, so I proceed in searching the aforementioned address range for a DOS Signature(i.e. 0x5A4D or &amp;ldquo;MZ&amp;rdquo;) that I know any Portable Executable file must contain.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I start with the &lt;i style="mso-bidi-font-style: normal"&gt;Base Address&lt;/i&gt; from the above output and use the &lt;i style="mso-bidi-font-style: normal"&gt;Region Size&lt;/i&gt; to specify my range.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;0:003&amp;gt; s -a &lt;span style="background-color: #ffff00;"&gt;02b61000&lt;/span&gt; l&lt;span style="background-color: #ffff00;"&gt;20000&lt;/span&gt;/4 "MZ"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="background-color: #ffff00;"&gt;02b615d8&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;4d 5a 90 00 03 00 00 00-04 00 00 00 ff ff 00 00&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;MZ..............&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b61bd0&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;4d 5a 75 f4 5f 83 c4 08-c2 04 00 55 8d 44 24 0c&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;MZu._......U.D$.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b67cd0&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;4d 5a 0f 85 69 01 00 00-8b 4d 7c 8b 46 3c 81 c1&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;MZ..i....M|.F&amp;lt;..&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b681bf&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;4d 5a 74 07 33 c0 e9 c9-01 00 00 8b 45 0c 56 8b&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;MZt.3.......E.V.&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Text"&gt;4. Now that I have some hits, I&amp;rsquo;ll start with the first one and verify whether it&amp;rsquo;s a valid module.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Bingo!&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;0:003&amp;gt; !dh -a &lt;span style="background-color: #ffff00;"&gt;02b615d8&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;File Type: DLL&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;FILE HEADER VALUES&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;14C machine (i386)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;5 number of sections&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;37304740 time date stamp Wed May 05 08:27:28 1999&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 file pointer to symbol table&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 number of symbols&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;E0 size of optional header&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;2102 characteristics&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Executable&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;32 bit word machine&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;DLL&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;OPTIONAL HEADER VALUES&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;10B magic #&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;7.00 linker version&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;600 size of code&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;600 size of initialized data&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 size of uninitialized data&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;10B0 address of entry point&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;1000 base of code&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;----- new -----&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;10000000 image base&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;1000 section alignment&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;200 file alignment&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;1 subsystem (Native)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;4.00 operating system version&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0.00 image version&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;4.00 subsystem version&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;6000 size of image&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;400 size of headers&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;41AE checksum&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;00100000 size of stack reserve&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;00001000 size of stack commit&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;00100000 size of heap reserve&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;00001000 size of heap commit&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;DLL characteristics&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0] address [size] of Export Directory&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;4000 [&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;28] address [size] of Import Directory&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0] address [size] of Resource Directory&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0] address [size] of Exception Directory&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0] address [size] of Security Directory&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;5000 [&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;4C] address [size] of Base Relocation Directory&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0] address [size] of Debug Directory&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0] address [size] of Description Directory&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0] address [size] of Special Directory&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0] address [size] of Thread Storage Directory&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0] address [size] of Load Configuration Directory&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0] address [size] of Bound Import Directory&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;2000 [&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;44] address [size] of Import Address Table Directory&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0] address [size] of Delay Import Directory&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0] address [size] of COR20 Header Directory&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 [&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0] address [size] of Reserved Directory&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;SECTION HEADER #1&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;.text name&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;3CC virtual size&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="background-color: #ffff00;"&gt;1000&lt;/span&gt; virtual address&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;400 size of raw data&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;400 file pointer to raw data&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 file pointer to relocation table&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 file pointer to line numbers&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 number of relocations&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 number of line numbers&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;68000020 flags&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Code&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Not Paged&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;(no align specified)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Execute Read&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;SECTION HEADER #2&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;.rdata name&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;68 virtual size&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;2000 virtual address&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;200 size of raw data&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;800 file pointer to raw data&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 file pointer to relocation table&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 file pointer to line numbers&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 number of relocations&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 number of line numbers&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;48000040 flags&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Initialized Data&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Not Paged&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;(no align specified)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Read Only&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;SECTION HEADER #3&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;.data name&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;56 virtual size&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;3000 virtual address&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;200 size of raw data&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;A00 file pointer to raw data&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 file pointer to relocation table&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 file pointer to line numbers&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 number of relocations&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 number of line numbers&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;C8000040 flags&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Initialized Data&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Not Paged&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;(no align specified)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Read Write&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;SECTION HEADER #4&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;INIT name&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;1D4 virtual size&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;4000 virtual address&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;200 size of raw data&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;C00 file pointer to raw data&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 file pointer to relocation table&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 file pointer to line numbers&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 number of relocations&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 number of line numbers&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;E2000020 flags&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Code&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Discardable&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;(no align specified)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Execute Read Write&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;SECTION HEADER #5&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;.reloc name&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;82 virtual size&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="background-color: #ffff00;"&gt;5000&lt;/span&gt; virtual address&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;200 size of raw data&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;E00 file pointer to raw data&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 file pointer to relocation table&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 file pointer to line numbers&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 number of relocations&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 number of line numbers&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;42000040 flags&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Initialized Data&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Discardable&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;(no align specified)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Read Only&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Text"&gt;5. Because I&amp;rsquo;m not sure which sections might contain identifying characteristics, I decide to go spelunking through all the sections (except for the relocation section) looking for said characteristics that might help me to identify the rogue module.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I start with the relative virtual address of the .text section @ 0x1000 and continue through the INIT section @ 0x4000.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;0:003&amp;gt; dc &lt;span style="background-color: #ffff00;"&gt;02b615d8&lt;/span&gt;+&lt;span style="background-color: #ffff00;"&gt;0x1000&lt;/span&gt; l&lt;span style="background-color: #ffff00;"&gt;4000&lt;/span&gt;/4&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&amp;hellip;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63c58&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;00000065 646c6977 73737265 72756365&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;e...wilderssecur&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63c68&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;00797469 65726874 78657461 74726570&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;ity.threatexpert&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63c78&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;00000000 74736163 6f63656c 00007370&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;....castlecops..&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63c88&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;6d617073 73756168 00000000 65737063&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;spamhaus....cpse&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63c98&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;65727563 00000000 61637261 00746962&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;cure....arcabit.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63ca8&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;69736d65 74666f73 00000000 626e7573&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;emsisoft....sunb&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63cb8&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;00746c65 75636573 6f636572 7475706d&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;elt.securecomput&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63cc8&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;00676e69 69736972 0000676e 76657270&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;ing.rising..prev&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63cd8&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;00000078 6f746370 00736c6f 6d726f6e&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;x...pctools.norm&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63ce8&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;00006e61 6f63376b 7475706d 00676e69&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;an..k7computing.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63cf8&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;72616b69 00007375 72756168 00000069&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;ikarus..hauri...&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63d08&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;6b636168 74666f73 00000000 74616467&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;hacksoft....gdat&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63d18&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;00000061 74726f66 74656e69 00000000&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;a...fortinet....&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63d28&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;64697765 0000006f 6d616c63 00007661&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;ewido...clamav..&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63d38&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;6f6d6f63 00006f64 63697571 6165686b&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;comodo..quickhea&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63d48&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;0000006c 72697661 00000061 73617661&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;l...avira...avas&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63d58&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;00000074 66617365 00000065 6c6e6861&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;t...esafe...ahnl&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63d68&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;00006261 746e6563 636c6172 616d6d6f&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;ab..centralcomma&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63d78&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;0000646e 65777264 00000062 73697267&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;nd..drweb...gris&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63d88&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;0074666f 74657365 00000000 33646f6e&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;oft.eset....nod3&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63d98&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;00000032 72702d66 0000746f 74746f6a&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;2...f-prot..jott&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63da8&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;00000069 7073616b 6b737265 00000079&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;i...kaspersky...&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63db8&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;65732d66 65727563 00000000 706d6f63&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;f-secure....comp&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63dc8&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;72657475 6f737361 74616963 00007365&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;uterassociates..&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63dd8&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;7774656e 616b726f 636f7373 65746169&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;networkassociate&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63de8&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;00000073 75727465 00007473 646e6170&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;s...etrust..pand&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63df8&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;00000061 68706f73 0000736f 6e657274&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;a...sophos..tren&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63e08&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;63696d64 00006f72 6661636d 00006565&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;dmicro..mcafee..&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63e18&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;74726f6e 00006e6f 616d7973 6365746e&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;norton..symantec&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63e28&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;00000000 7263696d 666f736f 00000074&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;....microsoft...&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63e38&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;65666564 7265646e 00000000 746f6f72&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;defender....root&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63e48&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;0074696b 776c616d 00657261 77797073&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;kit.malware.spyw&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63e58&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;00657261 75726976 00000073 304ce942&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;are.virus...B.L0&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&amp;hellip;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b64348&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;54464f53 45524157 63694d5c 6f736f72&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;SOFTWARE\Microso&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b64358&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;575c7466 6f646e69 435c7377 65727275&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;ft\Windows\Curre&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b64368&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;6556746e 6f697372 78655c6e 726f6c70&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;ntVersion\explor&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b64378&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;415c7265 6e617664 5c646563 646c6f46&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;er\Advanced\Fold&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b64388&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;485c7265 65646469 48535c6e 4c41574f&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;er\Hidden\SHOWAL&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b64398&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;0000004c 63656843 5664656b 65756c61&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;L...CheckedValue&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&amp;hellip;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63ee8&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;ffffffff 02b6a44f 02b6a453 70747468&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;....O...S...http&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63ef8&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;772f2f3a 672e7777 796d7465 6f2e7069&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;://www.getmyip.o&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63f08&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;00006772 70747468 772f2f3a 772e7777&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;rg..http://www.w&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63f18&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;73746168 7069796d 72646461 2e737365&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;hatsmyipaddress.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63f28&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;006d6f63 70747468 772f2f3a 772e7777&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;com.http://www.w&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63f38&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;69746168 69796d73 726f2e70 00000067&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;hatismyip.org...&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63f48&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;70747468 632f2f3a 6b636568 642e7069&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;http://checkip.d&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63f58&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;6e646e79 726f2e73 00000067 61207069&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;yndns.org...ip a&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b63f68&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;65726464 00007373 ffffffff 02b6a55e&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;ddress......^...&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;&amp;hellip;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b64858&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;00000020 74666f53 65726177 63694d5c&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;...Software\Mic&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b64868&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;6f736f72 575c7466 6f646e69 435c7377&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;rosoft\Windows\C&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b64878&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;65727275 6556746e 6f697372 75525c6e&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;urrentVersion\Ru&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b64888&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;0000006e 646e7572 32336c6c 6578652e&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;n...rundll32.exe&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b64898&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;73252220 73252c22 00000000 0065006e&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"%s",%s....n.e.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Debug"&gt;02b648a8&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;00730074 00630076 00000073 00000020&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;t.s.v.c.s... ...&lt;/p&gt;
&lt;p class="Debug"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Text"&gt;6. The list of anti-malware software vendors was a dead give-away that I was dealing with malware.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Finally, I conducted a Bing search using various artifacts from the preceding spew.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;In the end, I was able to confirm that the rogue module was, in fact, the Conficker worm by simply running a full scan of the system using a signature-based scanner.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Text"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Text"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="Text"&gt;I hope this walk-through provided you with techniques that you can leverage to identify rogue modules within your dump files, should that become necessary.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Until next time, happy bug-hunting and watch out for the worms!&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10113116" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Debugging/">Debugging</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/windows/">windows</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/Ron/">Ron</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/windbg/">windbg</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/svchost/">svchost</category><category domain="http://blogs.msdn.com/b/ntdebugging/archive/tags/debug/">debug</category></item><item><title>New Joint Citrix/Microsoft Facebook Forum</title><link>http://blogs.msdn.com/b/ntdebugging/archive/2010/11/04/new-joint-citrix-microsoft-facebook-forum.aspx</link><pubDate>Thu, 04 Nov 2010 21:52:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10086350</guid><dc:creator>ntdebug</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ntdebugging/rsscomments.aspx?WeblogPostID=10086350</wfw:commentRss><comments>http://blogs.msdn.com/b/ntdebugging/archive/2010/11/04/new-joint-citrix-microsoft-facebook-forum.aspx#comments</comments><description>&lt;p class="MsoListParagraph" style="margin: 6pt 6pt 6pt 0in;"&gt;&lt;span style="font-family: 'Arial','sans-serif'; color: black; font-size: 9pt; mso-themecolor: text1; mso-bidi-font-family: Arial; mso-ascii-theme-font: minor-bidi; mso-hansi-theme-font: minor-bidi; mso-bidi-theme-font: minor-bidi;"&gt;Got a virtualization issue?.. &lt;/span&gt;&lt;span style="font-family: 'Arial','sans-serif'; color: black; font-size: 9pt; mso-themecolor: text1; mso-bidi-font-family: Arial; mso-ascii-theme-font: minor-bidi; mso-hansi-theme-font: minor-bidi; mso-bidi-theme-font: minor-bidi;"&gt;Not sure if it&amp;rsquo;s a Microsoft or Citrix problem?.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="margin: 6pt 6pt 6pt 0in;"&gt;&lt;span style="font-family: 'Arial','sans-serif'; color: black; font-size: 9pt; mso-themecolor: text1; mso-bidi-font-family: Arial; mso-ascii-theme-font: minor-bidi; mso-hansi-theme-font: minor-bidi; mso-bidi-theme-font: minor-bidi;"&gt;Jump on the new Facebook forum to discuss your issue, share ideas, opinions and information related to Citrix and Microsoft virtualization products.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="margin: 6pt 6pt 6pt 0in;"&gt;&lt;span style="font-family: 'Arial','sans-serif'; color: #1f497d; font-size: 9pt; mso-bidi-font-family: Arial; mso-ascii-theme-font: minor-bidi; mso-hansi-theme-font: minor-bidi; mso-bidi-theme-font: minor-bidi;"&gt;&lt;a href="http://www.facebook.com/#!/pages/Citrix-and-Microsoft-Support/113004065426683"&gt;&lt;span style="color: #0000ff;"&gt;http://www.facebook.com/#!/pages/Citrix-and-Microsoft-Support/113004065426683&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 'Arial','sans-serif'; color: black; font-size: 9pt; mso-themecolor: text1; mso-bidi-font-family: Arial; mso-ascii-theme-font: minor-bidi; mso-hansi-theme-font: minor-bidi; mso-bidi-theme-font: minor-bidi;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10086350" width="1" height="1"&gt;</description></item></channel></rss>
