<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.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>C:\&gt;Windows Internals - L'équipe Française de Support Windows_ : NT Debugging</title><link>http://blogs.technet.com/windowsinternals/archive/tags/NT+Debugging/default.aspx</link><description>Tags: NT Debugging</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Analyse d’un stop 7F</title><link>http://blogs.technet.com/windowsinternals/archive/2008/12/31/analyse-d-un-stop-7f.aspx</link><pubDate>Wed, 31 Dec 2008 16:25:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3175025</guid><dc:creator>Mouniar</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/windowsinternals/comments/3175025.aspx</comments><wfw:commentRss>http://blogs.technet.com/windowsinternals/commentrss.aspx?PostID=3175025</wfw:commentRss><description>&lt;P&gt;Nous allons analyser ensemble un dump relatif à des problème de crash réguliers sur un serveur de fichiers.&lt;/P&gt;
&lt;P&gt;D’abord, regardons sur quel type de serveur le crash s’est produit : &lt;/P&gt;
&lt;P&gt;0: kd&amp;gt; vertarget&lt;/P&gt;
&lt;P&gt;Windows Server 2003 Kernel Version 3790 (Service Pack 1) MP (4 procs) Free x86 compatible&lt;/P&gt;
&lt;P&gt;Product: Server, suite: TerminalServer SingleUserTS&lt;/P&gt;
&lt;P&gt;Built by: 3790.srv03_sp1_rtm.050324-1447&lt;/P&gt;
&lt;P&gt;Kernel base = 0x80800000 PsLoadedModuleList = 0x808af988&lt;/P&gt;
&lt;P&gt;Debug session time: Tue Oct 21 02:22:03.749 2008 (GMT+2)&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;System Uptime: 6 days 7:23:43.156&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Il s’agit donc d’un serveur 2003 en SP1, un premier plan d’action serait de le mettre à jour en SP2 :-)&lt;/P&gt;
&lt;P&gt;D’autre part, le serveur semble avoir tourné pendant 6 jours avant la génération du dump. &lt;/P&gt;
&lt;P&gt;Aussi, chaque crash ou stop est associé un code qui définie le type de problème rencontré, examinons le stop en question :&lt;/P&gt;
&lt;P&gt;0: kd&amp;gt; .bugcheck&lt;/P&gt;
&lt;P&gt;Bugcheck code 0000007F&lt;/P&gt;
&lt;P&gt;Arguments 00000008 80042000 00000000 00000000&lt;/P&gt;
&lt;P&gt;C’est un stop 7F avec le paramètre&amp;nbsp; 00000008 ….intéressant !!&lt;/P&gt;
&lt;P&gt;Les documents techniques qui détaillent ce type de stop, font référence à un problème de stack overflow :&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;“Bug Check 0x7F: UNEXPECTED_KERNEL_MODE_TRAP&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;The UNEXPECTED_KERNEL_MODE_TRAP bug check has a value of 0x0000007F. This bug check indicates that the Intel CPU generated a trap and the kernel failed to catch this trap.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;This trap could be a bound trap (a trap the kernel is not permitted to catch) or a double fault (a fault that occurred while processing an earlier fault, which always results in a system failure).&lt;/EM&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;0x00000008, or Double Fault, indicates that an exception occurs during a call to the handler for a prior exception. Typically, the two exceptions are handled serially. However, there are several exceptions that cannot be handled serially, and in this situation the processor signals a double fault. There are two common causes of a double fault: &lt;BR&gt;A kernel stack overflow Or A hardware problem”&lt;/EM&gt; &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Ok, nous savons maintenant qu’il peut s’agir d’un stack overflow ..il va falloir se mettre sur le thread qui a causé le crash pour en savoir plus :&lt;/P&gt;
&lt;P&gt;0: kd&amp;gt; .tss 0x28&lt;/P&gt;
&lt;P&gt;eax=854b8300 ebx=854b8310 ecx=00000003 edx=89756000 esi=89fc3f30 edi=89756000&lt;/P&gt;
&lt;P&gt;eip=bae30bf7 esp=f78f7f88 ebp=f78f81b8 iopl=0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nv up ei ng nz na pe nc&lt;/P&gt;
&lt;P&gt;cs=0008&amp;nbsp; ss=0010&amp;nbsp; ds=0023&amp;nbsp; es=0023&amp;nbsp; fs=0030&amp;nbsp; gs=0000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; efl=00010286&lt;/P&gt;
&lt;P&gt;q57xp32+0x9bf7:&lt;/P&gt;
&lt;P&gt;bae30bf7 53&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; push&amp;nbsp;&amp;nbsp;&amp;nbsp; ebx&lt;/P&gt;
&lt;P&gt;0: kd&amp;gt; .thread&lt;/P&gt;
&lt;P&gt;Implicit thread is now 8ab868d0&lt;/P&gt;
&lt;P&gt;0: kd&amp;gt; !thread&lt;/P&gt;
&lt;P&gt;THREAD 8ab868d0&amp;nbsp; Cid 0004.0048&amp;nbsp; Teb: 00000000 Win32Thread: 00000000 RUNNING on processor 0&lt;/P&gt;
&lt;P&gt;IRP List:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 859c0370: (0006,0220) Flags: 00000010&amp;nbsp; Mdl: 00000000&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 85391008: (0006,0220) Flags: 00000884&amp;nbsp; Mdl: 00000000&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8a02af68: (0006,0094) Flags: 00000000&amp;nbsp; Mdl: 00000000&lt;/P&gt;
&lt;P&gt;Not impersonating&lt;/P&gt;
&lt;P&gt;DeviceMap&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; d6402818&lt;/P&gt;
&lt;P&gt;Owning Process&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8ab8a238&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Image:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;/P&gt;
&lt;P&gt;Wait Start TickCount&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 34881482&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ticks: 0&lt;/P&gt;
&lt;P&gt;Context Switch Count&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 21126271&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;/P&gt;
&lt;P&gt;UserTime&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; 00:00:00.000&lt;/P&gt;
&lt;P&gt;KernelTime&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; 00:03:14.531&lt;/P&gt;
&lt;P&gt;Start Address nt!ExpWorkerThread (0x8083f671)&lt;/P&gt;
&lt;P&gt;Stack &lt;FONT color=#ff0000&gt;Init &lt;B&gt;f78fb000&lt;/B&gt;&lt;/FONT&gt; Current f78f9150 Base f78fb000 &lt;FONT color=#ff0000&gt;Limit &lt;B&gt;f78f8000&lt;/B&gt;&lt;/FONT&gt; Call 0&lt;/P&gt;
&lt;P&gt;Priority 12 BasePriority 12 PriorityDecrement 0&lt;/P&gt;
&lt;P&gt;ChildEBP RetAddr&amp;nbsp; Args to Child&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;/P&gt;
&lt;P&gt;00000000 bae30bf7 00000000 00000000 00000000 nt!_KiTrap08+0x75 (FPO: TSS 28:0) &lt;/P&gt;
&lt;P&gt;WARNING: Stack unwind information not available. Following frames may be wrong.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000&gt;f78f81b8&lt;/FONT&gt;&lt;/B&gt; bae29c53 89756000 89fc3f30 8975bf54 q57xp32+0x9bf7&lt;/P&gt;
&lt;P&gt;f78f8200 bae29edb 854b8310 f78f8278 f78f8248 q57xp32+0x2c53&lt;/P&gt;
&lt;P&gt;f78f8210 bae2a199 02756000 878032e0 897ef950 q57xp32+0x2edb&lt;/P&gt;
&lt;P&gt;f78f8248 f76ee804 00000001 f78f8278 00000000 q57xp32+0x3199&lt;/P&gt;
&lt;P&gt;f78f8260 80a7a24f 897ef850 00000000 86e62a20 NDIS!ndisMProcessSGList+0x90 &lt;/P&gt;
&lt;P&gt;f78f828c f76ee6fe 86e62a20 897ef850 878032c0 hal!HalBuildScatterGatherList+0x1c7 &lt;/P&gt;
&lt;P&gt;f78f82e4 f76d249d 8a3d5008 854b8310 862fe230 NDIS!ndisMAllocSGList+0xd9 &lt;/P&gt;
&lt;P&gt;f78f8300 ba782f37 89e90290 854b8310 89d16c48 NDIS!ndisMSendX+0x1a0 &lt;/P&gt;
&lt;P&gt;f78f8328 ba78223a 8a3d5008 854b8310 8638eae8 tcpip!IPRcvComplete+0x12d3&lt;/P&gt;
&lt;P&gt;f78f8350 ba782622 8638ea02 f78f8402 00000001 tcpip!IPRcvComplete+0x5d6&lt;/P&gt;
&lt;P&gt;f78f848c ba783c01 ba7bbbb8 862fe2a4 862fe230 tcpip!IPRcvComplete+0x9be&lt;/P&gt;
&lt;P&gt;f78f84fc ba783da0 f3b3f555 00000002 875d30c0 tcpip!IPRcvComplete+0x1f9d&lt;/P&gt;
&lt;P&gt;f78f8524 ba784478 00000001 00000000 00000002 tcpip!IPRcvComplete+0x213c&lt;/P&gt;
&lt;P&gt;f78f8558 bab209ac 875d3008 89443364 89d2d540 tcpip!IPRcvComplete+0x2814&lt;/P&gt;
&lt;P&gt;f78f857c bab29a46 89e8e000 89429058 89e8e000 msiscsi+0x99ac&lt;/P&gt;
&lt;P&gt;f78f8624 bab2c101 01429058 84f25502 84f2552c msiscsi+0x12a46&lt;/P&gt;
&lt;P&gt;f78f8644 bab1a435 808a5180 84f25502 00000000 msiscsi+0x15101&lt;/P&gt;
&lt;P&gt;f78f866c bab036ca 8a02b65c 89e8e000 f78f8698 msiscsi+0x3435&lt;/P&gt;
&lt;P&gt;f78f867c bab03afc 897c31a0 84f2552c 884b7d28 iscsiprt!RaCallMiniportStartIo+0x1e &lt;/P&gt;
&lt;P&gt;f78f8698 bab0c182 84f2552c 870a48a0 89d17e18 iscsiprt!RaidAdapterPostScatterGatherExecute+0x5e &lt;/P&gt;
&lt;P&gt;f78f86b8 bab07823 00000000 00000001 00000000 iscsiprt!RaUnitStartIo+0xc4 &lt;/P&gt;
&lt;P&gt;f78f86d8 bab0b575 89d17e18 014b7d28 00000000 iscsiprt!RaidStartIoPacket+0x49 &lt;/P&gt;
&lt;P&gt;f78f86fc bab0c8a6 89d17d30 884b7d28 84c6d270 iscsiprt!RaidUnitSubmitRequest+0x63 &lt;/P&gt;
&lt;P&gt;f78f8718 bab06844 89d17d30 884b7d28 f78f873c iscsiprt!RaUnitScsiIrp+0x92 &lt;/P&gt;
&lt;P&gt;f78f8728 8083f9d0 89d17c78 884b7d28 89e8caa0 iscsiprt!RaDriverScsiIrp+0x2a &lt;/P&gt;
&lt;P&gt;f78f873c f7409440 884b7d28 884b7dfc 884b7d28 nt!IofCallDriver+0x45 &lt;/P&gt;
&lt;P&gt;f78f8764 f74094e0 89cfba88 884b7d28 884b7d28 mpio!MPIOReadWrite+0x19e &lt;/P&gt;
&lt;P&gt;f78f8830 f7409b34 89cfba88 84c6d1f0 884b7dd8 mpio!MPIOPdoHandleRequest+0x76 &lt;/P&gt;
&lt;P&gt;f78f8848 f7408945 89cfbb40 884b7d28 884b7d28 mpio!MPIOPdoInternalDeviceControl+0x3c &lt;/P&gt;
&lt;P&gt;f78f8870 f740916f 89cfba88 89cfbd78 01000000 mpio!MPIOPdoCommonDeviceControl+0x1fb &lt;/P&gt;
&lt;P&gt;f78f8890 f74062ef 89cfba88 884b7d28 f78f88b4 mpio!MPIOPdoDispatch+0x8f &lt;/P&gt;
&lt;P&gt;f78f88a0 8083f9d0 89cfba88 884b7d28 84f25480 mpio!MPIOGlobalDispatch+0x19 &lt;/P&gt;
&lt;P&gt;f78f88b4 f7139a20 84f25480 68d0e000 f78f88f8 nt!IofCallDriver+0x45 &lt;/P&gt;
&lt;P&gt;f78f88c4 f7139635 84f25480 89419b70 85a52e2c CLASSPNP!SubmitTransferPacket+0xbb &lt;/P&gt;
&lt;P&gt;f78f88f8 f7139712 00000000 00001000 85a52e50 CLASSPNP!ServiceTransferRequest+0x1e4 &lt;/P&gt;
&lt;P&gt;f78f891c 8083f9d0 89419ab8 00000000 8ab96b38 CLASSPNP!ClassReadWrite+0x159 &lt;/P&gt;
&lt;P&gt;f78f8930 f74d80cf 8756c3a8 85a52e50 f78f8954 nt!IofCallDriver+0x45 &lt;/P&gt;
&lt;P&gt;f78f8940 8083f9d0 893e7780 85a52cc0 85a52cc0 PartMgr+0x10cf&lt;/P&gt;
&lt;P&gt;f78f8954 f73b4802 890bd008 8756c3a8 89595d08 nt!IofCallDriver+0x45 &lt;/P&gt;
&lt;P&gt;La, il n’y a pas de doute, nous somme bien en présence d’un beau &lt;B&gt;“stack overflow”.&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;En effet, chaque thread a le droit à un espace limité pour gérer la stack.&lt;/P&gt;
&lt;P&gt;Ici la limite est à f78fb000&amp;nbsp; (on commence la stack à à l’adresse f78f8000 ) : Stack Init f78fb000 Current f78f9150 Base f78fb000 Limit f78f8000&lt;/P&gt;
&lt;P&gt;Le dernier appel a été fait à l’adresse f78f81b8 ;&amp;nbsp; par conséquent l’appel d’après aurait utiliser de la mémoire et dépasser ainsi la limite du f78f8000 d’où le stack overflow et le crash.&lt;/P&gt;
&lt;P&gt;Voici les détails de consommation de la stack au moment du Stop:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; Module&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Stack Usage Percentage&lt;/P&gt;
&lt;P&gt;fltMgr&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; 280&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;/P&gt;
&lt;P&gt;volsnap&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; 584&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000&gt;Ntfs&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; 4844&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 42&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;iscsiprt&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; 188&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;/P&gt;
&lt;P&gt;NDIS&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; 140&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/P&gt;
&lt;P&gt;msiscsi&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; 276&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;/P&gt;
&lt;P&gt;q57xp32&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; 144&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/P&gt;
&lt;P&gt;CLASSPNP&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; 104&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/P&gt;
&lt;P&gt;mfetdik&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; 144&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/P&gt;
&lt;P&gt;hal&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;&amp;nbsp; 44&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;/P&gt;
&lt;P&gt;dmio&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; 328&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/P&gt;
&lt;P&gt;tcpip&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; 600&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;/P&gt;
&lt;P&gt;mpio&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; 356&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/P&gt;
&lt;P&gt;PartMgr&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; 16&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;/P&gt;
&lt;P&gt;mfehidk&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; 660&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&lt;/P&gt;
&lt;P&gt;nt&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; 1988&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 17&lt;/P&gt;
&lt;P&gt;df2k&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; 848&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&lt;/P&gt;
&lt;P&gt;Nous constatons que Ntfs utilise 42% de celle-ci ce qui est beaucoup. Maintenant si l’on regarde attentivement la stack nous allons constater que c’est le driver df2k.sys qui est réentrant dans le file system.&lt;/P&gt;
&lt;P&gt;0: kd&amp;gt; kv 100&lt;/P&gt;
&lt;P&gt;ChildEBP RetAddr&amp;nbsp; Args to Child&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;/P&gt;
&lt;P&gt;00000000 bae30bf7 00000000 00000000 00000000 nt!_KiTrap08+0x75 &lt;/P&gt;
&lt;P&gt;WARNING: Stack unwind information not available. Following frames may be wrong.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000&gt;f78f81b8&lt;/FONT&gt;&lt;/B&gt; bae29c53 89756000 89fc3f30 8975bf54 q57xp32+0x9bf7&lt;/P&gt;
&lt;P&gt;f78f8200 bae29edb 854b8310 f78f8278 f78f8248 q57xp32+0x2c53&lt;/P&gt;
&lt;P&gt;f78f8210 bae2a199 02756000 878032e0 897ef950 q57xp32+0x2edb&lt;/P&gt;
&lt;P&gt;f78f8248 f76ee804 00000001 f78f8278 00000000 q57xp32+0x3199&lt;/P&gt;
&lt;P&gt;f78f8260 80a7a24f 897ef850 00000000 86e62a20 NDIS!ndisMProcessSGList+0x90 &lt;/P&gt;
&lt;P&gt;f78f828c f76ee6fe 86e62a20 897ef850 878032c0 hal!HalBuildScatterGatherList+0x1c7 &lt;/P&gt;
&lt;P&gt;f78f82e4 f76d249d 8a3d5008 854b8310 862fe230 NDIS!ndisMAllocSGList+0xd9 &lt;/P&gt;
&lt;P&gt;f78f8300 ba782f37 89e90290 854b8310 89d16c48 NDIS!ndisMSendX+0x1a0 &lt;/P&gt;
&lt;P&gt;f78f8328 ba78223a 8a3d5008 854b8310 8638eae8 tcpip!IPRcvComplete+0x12d3&lt;/P&gt;
&lt;P&gt;f78f8350 ba782622 8638ea02 f78f8402 00000001 tcpip!IPRcvComplete+0x5d6&lt;/P&gt;
&lt;P&gt;f78f848c ba783c01 ba7bbbb8 862fe2a4 862fe230 tcpip!IPRcvComplete+0x9be&lt;/P&gt;
&lt;P&gt;f78f84fc ba783da0 f3b3f555 00000002 875d30c0 tcpip!IPRcvComplete+0x1f9d&lt;/P&gt;
&lt;P&gt;f78f8524 ba784478 00000001 00000000 00000002 tcpip!IPRcvComplete+0x213c&lt;/P&gt;
&lt;P&gt;f78f8558 bab209ac 875d3008 89443364 89d2d540 tcpip!IPRcvComplete+0x2814&lt;/P&gt;
&lt;P&gt;f78f857c bab29a46 89e8e000 89429058 89e8e000 msiscsi+0x99ac&lt;/P&gt;
&lt;P&gt;f78f8624 bab2c101 01429058 84f25502 84f2552c msiscsi+0x12a46&lt;/P&gt;
&lt;P&gt;f78f8644 bab1a435 808a5180 84f25502 00000000 msiscsi+0x15101&lt;/P&gt;
&lt;P&gt;f78f866c bab036ca 8a02b65c 89e8e000 f78f8698 msiscsi+0x3435&lt;/P&gt;
&lt;P&gt;f78f867c bab03afc 897c31a0 84f2552c 884b7d28 iscsiprt!RaCallMiniportStartIo+0x1e &lt;/P&gt;
&lt;P&gt;f78f8698 bab0c182 84f2552c 870a48a0 89d17e18 iscsiprt!RaidAdapterPostScatterGatherExecute+0x5e &lt;/P&gt;
&lt;P&gt;f78f86b8 bab07823 00000000 00000001 00000000 iscsiprt!RaUnitStartIo+0xc4 &lt;/P&gt;
&lt;P&gt;f78f86d8 bab0b575 89d17e18 014b7d28 00000000 iscsiprt!RaidStartIoPacket+0x49 &lt;/P&gt;
&lt;P&gt;f78f86fc bab0c8a6 89d17d30 884b7d28 84c6d270 iscsiprt!RaidUnitSubmitRequest+0x63 &lt;/P&gt;
&lt;P&gt;f78f8718 bab06844 89d17d30 884b7d28 f78f873c iscsiprt!RaUnitScsiIrp+0x92 &lt;/P&gt;
&lt;P&gt;f78f8728 8083f9d0 89d17c78 884b7d28 89e8caa0 iscsiprt!RaDriverScsiIrp+0x2a &lt;/P&gt;
&lt;P&gt;f78f873c f7409440 884b7d28 884b7dfc 884b7d28 nt!IofCallDriver+0x45 &lt;/P&gt;
&lt;P&gt;f78f8764 f74094e0 89cfba88 884b7d28 884b7d28 mpio!MPIOReadWrite+0x19e &lt;/P&gt;
&lt;P&gt;f78f8830 f7409b34 89cfba88 84c6d1f0 884b7dd8 mpio!MPIOPdoHandleRequest+0x76 &lt;/P&gt;
&lt;P&gt;f78f8848 f7408945 89cfbb40 884b7d28 884b7d28 mpio!MPIOPdoInternalDeviceControl+0x3c &lt;/P&gt;
&lt;P&gt;f78f8870 f740916f 89cfba88 89cfbd78 01000000 mpio!MPIOPdoCommonDeviceControl+0x1fb &lt;/P&gt;
&lt;P&gt;f78f8890 f74062ef 89cfba88 884b7d28 f78f88b4 mpio!MPIOPdoDispatch+0x8f &lt;/P&gt;
&lt;P&gt;f78f88a0 8083f9d0 89cfba88 884b7d28 84f25480 mpio!MPIOGlobalDispatch+0x19 &lt;/P&gt;
&lt;P&gt;f78f88b4 f7139a20 84f25480 68d0e000 f78f88f8 nt!IofCallDriver+0x45 &lt;/P&gt;
&lt;P&gt;f78f88c4 f7139635 84f25480 89419b70 85a52e2c CLASSPNP!SubmitTransferPacket+0xbb &lt;/P&gt;
&lt;P&gt;f78f88f8 f7139712 00000000 00001000 85a52e50 CLASSPNP!ServiceTransferRequest+0x1e4 &lt;/P&gt;
&lt;P&gt;f78f891c 8083f9d0 89419ab8 00000000 8ab96b38 CLASSPNP!ClassReadWrite+0x159 &lt;/P&gt;
&lt;P&gt;f78f8930 f74d80cf 8756c3a8 85a52e50 f78f8954 nt!IofCallDriver+0x45 &lt;/P&gt;
&lt;P&gt;f78f8940 8083f9d0 893e7780 85a52cc0 85a52cc0 PartMgr+0x10cf&lt;/P&gt;
&lt;P&gt;f78f8954 f73b4802 890bd008 8756c3a8 89595d08 nt!IofCallDriver+0x45 &lt;/P&gt;
&lt;P&gt;f78f899c f73cdfa3 8756c3a8 010bd008 04000000 dmio!voldiskiostart+0x482 &lt;/P&gt;
&lt;P&gt;f78f89ec f73bf8dc 8756c3a8 f78f8a44 f78f8a38 dmio!vol_subdisksio_start+0x107 &lt;/P&gt;
&lt;P&gt;f78f8a5c f73b5e2c 8712c408 00000001 00000001 dmio!volkiostart+0x32c &lt;/P&gt;
&lt;P&gt;f78f8a88 f73b85e2 88dc1a60 85a52cc0 8ab50418 dmio!volrdwr+0xa0 &lt;/P&gt;
&lt;P&gt;f78f8a9c 8083f9d0 88dc1a60 85a52cc0 85a52e98 dmio!volread+0x58 &lt;/P&gt;
&lt;P&gt;f78f8ab0 f73899c4 8ab2d248 88db7af0 88d246d0 nt!IofCallDriver+0x45 &lt;/P&gt;
&lt;P&gt;f78f8ac8 8083f9d0 88d246d0 85a52cc0 85a52cc0 volsnap+0x19c4&lt;/P&gt;
&lt;P&gt;f78f8adc f70d9881 88db7a38 88db7af0 88ba5c98 nt!IofCallDriver+0x45 &lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000&gt;f78f8b34 f70dae17 88db7a38 85a52cc0 85a52cc0 df2k+0x6881&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000&gt;f78f8b5c f701d0ce f78f8e40 f78f8d40 f701c702 df2k+0x7e17&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;f78f8b68 f701c702 f78f8e40 88db7a38 9c09a000 Ntfs!NtfsSingleAsync+0x91 &lt;/P&gt;
&lt;P&gt;f78f8d40 f701a75e f78f8e40 85a52cc0 88ba5c98 Ntfs!NtfsNonCachedIo+0x2db &lt;/P&gt;
&lt;P&gt;f78f8e2c f701d8de f78f8e40 85a52cc0 00000001 Ntfs!NtfsCommonRead+0xaf5 &lt;/P&gt;
&lt;P&gt;f78f8fd8 8083f9d0 88be6718 85a52cc0 85a52cc0 Ntfs!NtfsFsdRead+0x113 &lt;/P&gt;
&lt;P&gt;f78f8fec f7117b43 88f2aae8 85a52cc0 88eeb008 nt!IofCallDriver+0x45 &lt;/P&gt;
&lt;P&gt;f78f9010 f7117d03 f78f9030 88f2aae8 00000000 fltMgr!FltpLegacyProcessingAfterPreCallbacksCompleted+0x20b &lt;/P&gt;
&lt;P&gt;f78f9048 8083f9d0 88f2aae8 85a52cc0 88db7af0 fltMgr!FltpDispatch+0x11f &lt;/P&gt;
&lt;P&gt;f78f905c f70d8ab1 89944588 89944640 88fcd5c0 nt!IofCallDriver+0x45 &lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000&gt;f78f9100 f70dae17 89944588 85a52cc0 85a52ebc df2k+0x5ab1&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000&gt;f78f9128 ba9efa40 88d1da08 89705218 88bed008 df2k+0x7e17&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;f78f913c 8083f9d0 88aacf10 85a52cc0 85a52cc0 SYMEVENT!SYMEvent_AllocVMData+0x5f00&lt;/P&gt;
&lt;P&gt;f78f9150 f7117d36 0010e000 8a0d1768 00000000 nt!IofCallDriver+0x45 &lt;/P&gt;
&lt;P&gt;f78f917c 8083f9d0 88d1da08 85a52cc0 85a52cc0 fltMgr!FltpDispatch+0x152 &lt;/P&gt;
&lt;P&gt;f78f9190 8082f0de 83e86308 8ab868d0 83e862f8 nt!IofCallDriver+0x45 &lt;/P&gt;
&lt;P&gt;f78f91a8 8082f17c 88f04f0c 83e86330 83e86310 nt!IoPageRead+0x109 &lt;/P&gt;
&lt;P&gt;f78f922c 80849ce5 00000001 c16ce000 c0305b38 nt!MiDispatchFault+0xd2a &lt;/P&gt;
&lt;P&gt;f78f9288 8082fd4f 00000000 c16ce000 00000000 nt!MmAccessFault+0x64a &lt;/P&gt;
&lt;P&gt;f78f92b8 80845b53 c16ce000 00000000 f78f93e4 nt!MmCheckCachedPageState+0x48e &lt;/P&gt;
&lt;P&gt;f78f9300 80845d5a 88ba5b60 f78f9340 00001000 nt!CcMapAndRead+0x93 &lt;/P&gt;
&lt;P&gt;f78f9394 8092f599 88f04f90 f78f93d4 00001000 nt!CcPinFileData+0x24a &lt;/P&gt;
&lt;P&gt;f78f9408 f7054d25 88f04f90 f78f9440 00001000 nt!CcPinRead+0xc4 &lt;/P&gt;
&lt;P&gt;f78f9430 f704842b 84f7a168 88ba5c98 0010e000 Ntfs!NtfsPinStream+0x76 &lt;/P&gt;
&lt;P&gt;f78f945c f7049751 84f7a168 88be67f8 00870000 Ntfs!NtfsMapOrPinPageInBitmap+0x9d &lt;/P&gt;
&lt;P&gt;f78f94d8 f704851f 84f7a168 88be67f8 0087312e Ntfs!NtfsAllocateBitmapRun+0x4b &lt;/P&gt;
&lt;P&gt;f78f9614 f7040136 84f7a168 88be67f8 87342a00 Ntfs!NtfsAllocateClusters+0x9fd &lt;/P&gt;
&lt;P&gt;f78f96d4 f7047e53 84f7a168 87342a00 00000020 Ntfs!NtfsAllocateAttribute+0x156 &lt;/P&gt;
&lt;P&gt;f78f9774 f704835c 84f7a168 d6650468 00000020 Ntfs!NtfsCreateNonresidentWithValue+0xde &lt;/P&gt;
&lt;P&gt;f78f9874 f706e627 84f7a168 d6650468 d1911898 Ntfs!NtfsConvertToNonresident+0x2ec &lt;/P&gt;
&lt;P&gt;f78f99cc f7076cc4 84f7a168 d6650468 00000240 Ntfs!NtfsChangeAttributeValue+0x467 &lt;/P&gt;
&lt;P&gt;f78f9ab8 f7071d04 84f7a168 d6650468 000fe6ad Ntfs!NtfsAddToAttributeList+0x177 &lt;/P&gt;
&lt;P&gt;f78f9ca0 f7047a50 84f7a168 d6650530 f78f9cd0 Ntfs!NtfsAddAttributeAllocation+0xf71 &lt;/P&gt;
&lt;P&gt;f78f9d64 f70845ef 84f7a168 8523cc68 d6650530 Ntfs!NtfsAddAllocation+0x397 &lt;/P&gt;
&lt;P&gt;f78f9e74 f7041c94 84f7a168 8523cc68 859c0370 Ntfs!NtfsSetAllocationInfo+0x3dd &lt;/P&gt;
&lt;P&gt;f78f9ee0 f701d2fb 84f7a168 859c0370 00000000 Ntfs!NtfsCommonSetInformation+0x48c &lt;/P&gt;
&lt;P&gt;f78f9f48 8083f9d0 88be6718 859c0370 859c0370 Ntfs!NtfsFsdSetInformation+0xa3 &lt;/P&gt;
&lt;P&gt;f78f9f5c f7117b43 88f2aae8 859c0370 88eeb008 nt!IofCallDriver+0x45 &lt;/P&gt;
&lt;P&gt;f78f9f80 f7117d03 f78f9fa0 88f2aae8 00000000 fltMgr!FltpLegacyProcessingAfterPreCallbacksCompleted+0x20b &lt;/P&gt;
&lt;P&gt;f78f9fb8 8083f9d0 88f2aae8 859c0370 88db7af0 fltMgr!FltpDispatch+0x11f &lt;/P&gt;
&lt;P&gt;f78f9fcc f70d8ab1 89944588 89944640 f78fa0e8 nt!IofCallDriver+0x45 &lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000&gt;f78fa070 f70dae17 89944588 859c0370 859c056c df2k+0x5ab1&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000&gt;f78fa098 ba9ef7b1 859c056c 859c0590 f78fa0e8 df2k+0x7e17&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;f78fa0b0 ba9f8d68 89944588 00000000 f78fa0e8 SYMEVENT!SYMEvent_AllocVMData+0x5c71&lt;/P&gt;
&lt;P&gt;f78fa0cc ba9ef91b f78fa0e8 8082b0b9 ba9ef9e3 SYMEVENT!EventObjectCreate+0xba8&lt;/P&gt;
&lt;P&gt;f78fa10c 8083f9d0 88aacf10 859c0370 859c0370 SYMEVENT!SYMEvent_AllocVMData+0x5ddb&lt;/P&gt;
&lt;P&gt;f78fa120 f7117b43 88d1da08 859c0370 88bed008 nt!IofCallDriver+0x45 &lt;/P&gt;
&lt;P&gt;f78fa144 f7117d03 f78fa164 88d1da08 00000000 fltMgr!FltpLegacyProcessingAfterPreCallbacksCompleted+0x20b &lt;/P&gt;
&lt;P&gt;f78fa17c 8083f9d0 88d1da08 859c0370 859c0370 fltMgr!FltpDispatch+0x11f &lt;/P&gt;
&lt;P&gt;f78fa190 8098911f 85391008 84c497a0 f78fa434 nt!IofCallDriver+0x45 &lt;/P&gt;
&lt;P&gt;f78fa1c8 f707e07c 0123cc68 00000013 85391018 nt!IoSetInformation+0x1c2 &lt;/P&gt;
&lt;P&gt;f78fa1f4 f706c7b7 84c497a0 85391008 d66506b8 Ntfs!NtfsCompleteLargeAllocation+0x40 &lt;/P&gt;
&lt;P&gt;f78fa3f4 f70531e5 84c497a0 85391008 f78fa434 Ntfs!NtfsCommonCreate+0x1472 &lt;/P&gt;
&lt;P&gt;f78fa4f8 8083f9d0 88be6718 85391008 85391008 Ntfs!NtfsFsdCreate+0x17d &lt;/P&gt;
&lt;P&gt;f78fa50c f7117b43 00000000 85391008 85391198 nt!IofCallDriver+0x45 &lt;/P&gt;
&lt;P&gt;f78fa530 f71255af f78fa550 88f2aae8 00000000 fltMgr!FltpLegacyProcessingAfterPreCallbacksCompleted+0x20b &lt;/P&gt;
&lt;P&gt;f78fa56c 8083f9d0 88f2aae8 85391008 853911d8 fltMgr!FltpCreate+0x23b &lt;/P&gt;
&lt;P&gt;f78fa580 f70da51c 8081fd79 899446b0 899446f4 nt!IofCallDriver+0x45 &lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000&gt;f78fa5b0 f70d942b 899446b0 85391008 00000000 df2k+0x751c&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000&gt;f78fa5e4 f70d8fed 89944640 85391008 89944588 df2k+0x642b&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000&gt;f78fa690 f70dae17 89944588 85391008 853911e0 df2k+0x5fed&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;f78fa6b8 ba9ef8a1 853911e0 85391204 f78fa718 df2k+0x7e17&lt;/P&gt;
&lt;P&gt;f78fa6e0 ba9f8d58 89944588 00000000 f78fa718 SYMEVENT!SYMEvent_AllocVMData+0x5d61&lt;/P&gt;
&lt;P&gt;f78fa6fc ba9ef91b f78fa718 8082b0b9 ba9ef9e3 SYMEVENT!EventObjectCreate+0xb98&lt;/P&gt;
&lt;P&gt;f78fa73c 8083f9d0 88aacf10 85391008 85391008 SYMEVENT!SYMEvent_AllocVMData+0x5ddb&lt;/P&gt;
&lt;P&gt;f78fa750 f7117b43 00000000 85391008 85391204 nt!IofCallDriver+0x45 &lt;/P&gt;
&lt;P&gt;f78fa774 f71255af f78fa794 88d1da08 00000000 fltMgr!FltpLegacyProcessingAfterPreCallbacksCompleted+0x20b &lt;/P&gt;
&lt;P&gt;f78fa7b0 8083f9d0 88d1da08 85391008 85391008 fltMgr!FltpCreate+0x23b &lt;/P&gt;
&lt;P&gt;f78fa7c4 8092e269 f78fa96c 88dc1a48 00000000 nt!IofCallDriver+0x45 &lt;/P&gt;
&lt;P&gt;f78fa8ac 80936caa 88dc1a60 00000000 88e62860 nt!IopParseDevice+0xa35 &lt;/P&gt;
&lt;P&gt;f78fa92c 80936aa5 00000000 f78fa96c 00000240 nt!ObpLookupObjectName+0x5a9 &lt;/P&gt;
&lt;P&gt;f78fa980 80936f27 00000000 00000000 00000100 nt!ObOpenObjectByName+0xea &lt;/P&gt;
&lt;P&gt;f78fa9fc 80936ff8 8a2f22e4 0012019f f78fab7c nt!IopCreateFile+0x447 &lt;/P&gt;
&lt;P&gt;f78faa58 8092ed98 8a2f22e4 0012019f f78fab7c nt!IoCreateFile+0xa3 &lt;/P&gt;
&lt;P&gt;f78faa98 80834d3f 8a2f22e4 0012019f f78fab7c nt!NtCreateFile+0x30 &lt;/P&gt;
&lt;P&gt;f78faa98 8083c1ec 8a2f22e4 0012019f f78fab7c nt!KiFastCallEntry+0xfc &lt;/P&gt;
&lt;P&gt;f78fab3c f7396acb 8a2f22e4 0012019f f78fab7c nt!ZwCreateFile+0x11 &lt;/P&gt;
&lt;P&gt;f78fabc4 f739c6f7 8a2f22d0 00000001 f78fabec volsnap+0xeacb&lt;/P&gt;
&lt;P&gt;f78fabf8 f73a5d5d 86a966e0 12c00000 00000000 volsnap+0x146f7&lt;/P&gt;
&lt;P&gt;f78fad50 f73945e5 8aa020d8 851a5798 8ab868d0 volsnap+0x1dd5d&lt;/P&gt;
&lt;P&gt;f78fad6c 809180a0 875603d0 88eb2ab8 808b70dc volsnap+0xc5e5&lt;/P&gt;
&lt;P&gt;f78fad80 8083f72e 875603d0 00000000 8ab868d0 nt!IopProcessWorkItem+0x13 &lt;/P&gt;
&lt;P&gt;f78fadac 8092ccff 875603d0 00000000 00000000 nt!ExpWorkerThread+0xeb &lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000&gt;f78faddc&lt;/FONT&gt;&lt;/B&gt; 80841a96 8083f671 00000001 00000000 nt!PspSystemThreadStartup+0x2e &lt;/P&gt;
&lt;P&gt;00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16 &lt;/P&gt;
&lt;P&gt;La stack contient aussi plusieurs occurrences du module SYMEVENT qui est connu pour causer des problèmes de stack overflow&lt;/P&gt;
&lt;P&gt;&lt;I&gt;&lt;U&gt;&lt;/U&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;La solution au problème rencontré passera par:&lt;/P&gt;
&lt;P&gt;- Désinstallation ou mise à jour du composant Df2K.sys&lt;/P&gt;
&lt;P&gt;- Suivi des recommandations de Symantec pour la partie Symevent : &lt;A href="http://service1.symantec.com/SUPPORT/ent-security.nsf/docid/2002071208532048?Open&amp;amp;src=w" mce_href="http://service1.symantec.com/SUPPORT/ent-security.nsf/docid/2002071208532048?Open&amp;amp;src=w"&gt;http://service1.symantec.com/SUPPORT/ent-security.nsf/docid/2002071208532048?Open&amp;amp;src=w&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&lt;FONT face=Arial&gt;&lt;STRONG&gt;Mounia&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=Arial&gt;&lt;STRONG&gt;Windows Core Technical Lead&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3175025" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/windowsinternals/archive/tags/NT+Debugging/default.aspx">NT Debugging</category><category domain="http://blogs.technet.com/windowsinternals/archive/tags/Mounia/default.aspx">Mounia</category></item><item><title>Hang à l'ouverture d’une session TS</title><link>http://blogs.technet.com/windowsinternals/archive/2008/12/30/hang-l-ouverture-d-une-session-ts.aspx</link><pubDate>Tue, 30 Dec 2008 18:18:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3174788</guid><dc:creator>philipped</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/windowsinternals/comments/3174788.aspx</comments><wfw:commentRss>http://blogs.technet.com/windowsinternals/commentrss.aspx?PostID=3174788</wfw:commentRss><description>&lt;P&gt;&lt;B&gt;Définition du problème&lt;/B&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Aléatoirement, lors de connexions RDP sur un serveur TS, le phénomène suivant se produit : après son ouverture de session, un utilisateur se retrouve uniquement avec le fond d’écran du bureau sans aucun icônes.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Action&lt;/B&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Lors de l’apparition du problème, nous avons forcé la génération d’un memory dump du serveur manuellement:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;KB254649&amp;nbsp; Overview of memory dump file options for Windows Server 2003, Windows XP, and Windows 2000&lt;/P&gt;
&lt;P&gt;&lt;A href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;254649" mce_href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;254649"&gt;http://support.microsoft.com/default.aspx?scid=kb;EN-US;254649&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;KB244139&amp;nbsp; Windows feature lets you generate a memory dump file by using the keyboard&lt;/P&gt;
&lt;P&gt;&lt;A href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;244139" mce_href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;244139"&gt;http://support.microsoft.com/default.aspx?scid=kb;EN-US;244139&lt;/A&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;A&lt;/B&gt;&lt;B&gt;nalyse du dump&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Pour le téléchargement et l’installation de Windbg, voir mon précédent post « &lt;A target=_blank href="http://blogs.technet.com/windowsinternals/archive/2008/12/16/debugger-un-100-cpu-du-spooler.aspx" mce_href="http://blogs.technet.com/windowsinternals/archive/2008/12/16/debugger-un-100-cpu-du-spooler.aspx"&gt;Debugger un 100% CPU du spooler&lt;/A&gt; ». Concernant les commandes utilisées ici, vous pouvez trouver plus d’informations dans l’aide de Windbg.&lt;/P&gt;
&lt;P&gt;Dans l’analyse du dump, nous pouvons voir des threads en attente d’une « critical section » (voir définition ici &lt;A href="http://fr.wikipedia.org/wiki/Section_critique" mce_href="http://fr.wikipedia.org/wiki/Section_critique"&gt;http://fr.wikipedia.org/wiki/Section_critique&lt;/A&gt;) .&lt;/P&gt;
&lt;P&gt;Voici un exemple de thread en attente d’une « critical section » :&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face=Courier&gt;0:018&amp;gt; &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;~11s&lt;/FONT&gt;&lt;/STRONG&gt; &lt;/FONT&gt;&lt;FONT face=ver&gt;&amp;lt;- Cette commande permet de ce placer dans le contexte d’un thread en particulier, ici le thread 11 du process spoolsv.exe&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Courier&gt;eax=00002f9c ebx=00000000 ecx=00000187 edx=00002f9c esi=7c8877a0 edi=00000000&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Courier&gt;eip=7c8285ec esp=01b2f3bc ebp=01b2f3f8 iopl=0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nv up ei pl zr na pe nc&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Courier&gt;cs=001b&amp;nbsp; ss=0023&amp;nbsp; ds=0023&amp;nbsp; es=0023&amp;nbsp; fs=003b&amp;nbsp; gs=0000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; efl=00000246&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Courier&gt;ntdll!KiFastSystemCallRet:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Courier&gt;7c8285ec c3&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; ret&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;0:011&amp;gt;&lt;FONT color=#0000ff&gt;&lt;STRONG&gt; kv&lt;/STRONG&gt; &lt;/FONT&gt;&lt;FONT color=#000000&gt;&amp;lt;- permet d’afficher la pile du thread&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;ChildEBP RetAddr&amp;nbsp; Args to Child&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;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f3b8 7c827d0b 7c83d236 00000124 00000000 ntdll!KiFastSystemCallRet &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f3bc 7c83d236 00000124 00000000 00000000 ntdll!NtWaitForSingleObject+0xc &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f3f8 7c83d281 00000124 00000004 00000001 &lt;B&gt;&lt;FONT color=#ff0000&gt;ntdll!RtlpWaitOnCriticalSection&lt;/FONT&gt;&lt;/B&gt;+0x1a3 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f418 7c82d243 7c8877a0 00000000 000000e9 &lt;B&gt;&lt;FONT color=#ff0000&gt;ntdll!RtlEnterCriticalSection&lt;/FONT&gt;&lt;/B&gt;+0xa8 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f44c 7c834029 00000001 00000000 01b2f488 ntdll!LdrLockLoaderLock+0xe4&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f6bc 77e41bf3 027125c8 01b2f708 01b2f6e8 ntdll!LdrLoadDll+0xc9&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f724 77e5c70b 72451460 00000000 00000000 kernel32!LoadLibraryExW+0x1b2&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f738 72451310 72451460 01b2fc90 000000e9 kernel32!LoadLibraryW+0x11&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f750 724516f9 01b2f75c 01bf8a50 00000780 usbmon!LoadSetupApiDll+0x1f&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f778 72451687 72455068 01b2f794 01b2fca0 usbmon!BuildPortList+0x11&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f79c 76136227 00000000 00000002 00000000 usbmon!DynaMon_EnumPorts+0x64&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f7bc 7615c9ce 00aded40 00000000 00000002 localspl!DpEnumPorts+0x1d&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f808 7615d2fb 00000000 00000002 00000000 localspl!SplEnumPorts+0xb8&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f834 740706e4 00000000 00000002 00000000 localspl!LocalEnumPorts+0x2f&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f874 01008d1e 00000000 00000002 00000000 spoolss!EnumPortsW+0x6d&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f8a8 01006d07 00000000 00000002 00000000 spoolsv!YEnumPorts+0x8b &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f8cc 77c80193 00000000 00000002 00000000 spoolsv!RpcEnumPorts+0x1e &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f8f8 77ce33e1 01006ce9 01b2fae0 00000006 rpcrt4!Invoke+0x30 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2fcf8 77ce35c4 00000000 00000000 000eb3b4 rpcrt4!NdrStubCall2+0x299&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2fd14 77c7ff7a 000eb3b4 000d3888 000eb3b4 rpcrt4!NdrServerCall2+0x19&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT face="Courier New"&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT face="Courier New"&gt;RtlpWaitOnCriticalSection&lt;/FONT&gt;&lt;/B&gt; indique que ce thread est en attente sur une « critical section ».&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;On fait un KP pour avoir les paramètres des appels de fonctions :&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;0:011&amp;gt; &lt;FONT color=#0000ff&gt;&lt;STRONG&gt;kP&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;ChildEBP RetAddr&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f3b8 7c827d0b ntdll!KiFastSystemCallRet(void) &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f3bc 7c83d236 ntdll!NtWaitForSingleObject(void)+0xc &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000 face="Courier New"&gt;01b2f3f8 7c83d281 ntdll!RtlpWaitOnCriticalSection(&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000 face="Courier New"&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; struct _RTL_CRITICAL_SECTION * CriticalSection = 0x00000124, &lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000 face="Courier New"&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; long Increment = 4)+0x1a3 &lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000 face="Courier New"&gt;01b2f418 7c82d243 ntdll!RtlEnterCriticalSection(&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#ff0000&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; struct _RTL_CRITICAL_SECTION * CriticalSection = 0x7c8877a0)+0xa8&lt;/FONT&gt; &lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f44c 7c834029 ntdll!LdrLockLoaderLock(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long Flags = 1, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long * Disposition = 0x00000000, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; void ** Cookie = 0x01b2f488)+0xe4 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f6bc 77e41bf3 ntdll!LdrLoadDll(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned short * DllPath = 0x027125c8, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long * DllCharacteristics = 0x01b2f708, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; struct _UNICODE_STRING * DllName = 0x01b2f6e8 "setupapi", &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; void ** DllHandle = 0x01b2f704)+0xc9 [&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f724 77e5c70b kernel32!LoadLibraryExW(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned short * lpwLibFileName = 0x72451460, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; void * hFile = 0x00000000, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long dwFlags = 0)+0x1b2 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f738 72451310 kernel32!LoadLibraryW(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned short * lpwLibFileName = 0x72451460)+0x11 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f750 724516f9 usbmon!LoadSetupApiDll(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; struct _SETUPAPI_INFO * pSetupInfo = 0x01b2f75c)+0x1f &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f778 72451687 usbmon!BuildPortList(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; struct DynaMon_Monitor_Info_Struct * pMonitorInfo = 0x72455068, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; struct Port_Update_Struct ** ppPortUpdateList = 0x01b2f794)+0x11 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f79c 76136227 usbmon!DynaMon_EnumPorts(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned short * pszName = 0x00000000, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long dwLevel = 2, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned char * pPorts = 0x00000000 "", &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long cbBuf = 0, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long * pcbNeeded = 0x01b2fc90, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long * pcReturned = 0x01b2fca0)+0x64 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f7bc 7615c9ce localspl!DpEnumPorts(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; void * hMonitor = 0x00aded40, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned short * pName = 0x00000000, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long Level = 2, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned char * pPorts = 0x00000000 "", &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long cbBuf = 0, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long * pcbNeeded = 0x01b2fc90, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long * pcReturned = 0x01b2fca0)+0x1d &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f808 7615d2fb localspl!SplEnumPorts(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned short * pName = 0x00000000, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long Level = 2, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned char * pPorts = 0x00000000 "", &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long cbBuf = 0, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long * pcbNeeded = 0x01b2fc90, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long * pcReturned = 0x01b2fca0, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; struct _INISPOOLER * pIniSpooler = 0x00a956a8)+0xb8 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f834 740706e4 localspl!LocalEnumPorts(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned short * pName = 0x00000000, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long Level = 2, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned char * pPorts = 0x00000000 "", &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long cbBuf = 0, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long * pcbNeeded = 0x01b2fc90, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long * pcReturned = 0x01b2fca0)+0x2f &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f874 01008d1e spoolss!EnumPortsW(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned short * pName = 0x00000000, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long Level = 2, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned char * pPort = 0x00000000 "", &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long cbBuf = 0, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long * pcbNeeded = 0x01b2fc90, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long * pcReturned = 0x01b2fca0)+0x6d &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f8a8 01006d07 spoolsv!YEnumPorts(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned short * pName = 0x00000000, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long Level = 2, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned char * pPort = 0x00000000 "", &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long cbBuf = 0, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long * pcbNeeded = 0x01b2fc90, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long * pcReturned = 0x01b2fca0, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; Call_Route Route = RPC_CALL (1))+0x8b &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f8cc 77c80193 spoolsv!RpcEnumPorts(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned short * pName = 0x00000000, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long Level = 2, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned char * pPort = 0x00000000 "", &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long cbBuf = 0, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long * pcbNeeded = 0x01b2fc90, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long * pcReturned = 0x01b2fca0)+0x1e [&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2f8f8 77ce33e1 rpcrt4!Invoke(void)+0x30 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2fcf8 77ce35c4 rpcrt4!NdrStubCall2(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; struct IRpcStubBuffer * pThis = 0x00000000, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; struct IRpcChannelBuffer * pChannel = 0x00000000, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; struct _RPC_MESSAGE * pRpcMsg = 0x000eb3b4, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long * pdwStubPhase = 0x01b2fd10)+0x299 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01b2fd14 77c7ff7a rpcrt4!NdrServerCall2(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; struct _RPC_MESSAGE * pRpcMsg = 0x000eb3b4)+0x19&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Ceci nous montre les paramètres des appels de fonctions et nous montre que ce thread est bloqué car il attend la « critical section » &lt;B&gt;&lt;FONT color=#ff0000&gt;0x7c8877a0&lt;/FONT&gt;.&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;0:011&amp;gt; &lt;FONT color=#0000ff&gt;dt _RTL_CRITICAL_SECTION&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;0x7c8877a0&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;spoolsv!_RTL_CRITICAL_SECTION&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp; +0x000 DebugInfo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0x7c8877c0 _RTL_CRITICAL_SECTION_DEBUG&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp; +0x004 LockCount&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : -38&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp; +0x008 RecursionCount&amp;nbsp;&amp;nbsp; : 1&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp; +0x00c OwningThread&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0x000046ac &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp; +0x010 LockSemaphore&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0x00000124 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp; +0x014 SpinCount&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Cette critical section est détenue par le thread 0x000046ac.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Voyons à quel numéro de thread cela correspond :&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;0:011&amp;gt; &lt;FONT color=#0000ff&gt;!runaway &lt;/FONT&gt;&lt;FONT color=#000000&gt;&amp;lt;- permet d’afficher le temps consommé par chaque thread&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;User Mode Time&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; Thread&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Time&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; 11:4784&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:01.562&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; &lt;FONT color=#0000ff&gt;13&lt;/FONT&gt;:&lt;FONT color=#ff0000&gt;&lt;STRONG&gt;46ac&lt;/STRONG&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.890&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; 15:4ef8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.406&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; 16:4f60&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.125&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp; 3:680&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.093&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; 10:78c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.031&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; 22:4dc8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; 21:4e08&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; 20:3bf0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; 19:4340&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; 18:4b80&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; 17:1e1c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; 14:4b3c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; 12:47f0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp; 9:724&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp; 8:720&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp; 7:71c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp; 6:718&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp; 5:6c4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp; 4:68c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp; 2:57c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp; 1:570&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp; 0:558&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;On se place dans le contexte du thread :&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;0:011&amp;gt; &lt;FONT color=#0000ff&gt;&lt;STRONG&gt;~13s&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;eax=00000001 ebx=77792c30 ecx=0207f501 edx=00000000 esi=00000a60 edi=00000000&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;eip=7c8285ec esp=0207fd60 ebp=0207fdd0 iopl=0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nv up ei pl zr na pe nc&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;cs=001b&amp;nbsp; ss=0023&amp;nbsp; ds=0023&amp;nbsp; es=0023&amp;nbsp; fs=003b&amp;nbsp; gs=0000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; efl=00000246&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;ntdll!KiFastSystemCallRet:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;7c8285ec c3&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; ret&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Puis on liste toute la stack :&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;0:013&amp;gt;&lt;FONT color=#0000ff&gt; kv&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;ChildEBP RetAddr&amp;nbsp; Args to Child&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;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207fd5c 7c827d0b 77e61d1e 00000a60 00000000 ntdll!KiFastSystemCallRet &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000 face="Courier New"&gt;0207fd60 77e61d1e 00000a60 00000000 00000000 ntdll!NtWaitForSingleObject+0xc &lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000 face="Courier New"&gt;0207fdd0 77e61c8d 00000a60 ffffffff 00000000 kernel32!WaitForSingleObjectEx+0xac&amp;nbsp; &lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000 face="Courier New"&gt;0207fde4 776f56f4 00000a60 ffffffff 77792cf0 kernel32!WaitForSingleObject+0x12&amp;nbsp; &lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207fe00 7768dac2 00000a60 00000000 00000080 ole32!CDllHost::ClientCleanupFinish+0x2a&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207fe2c 7768da32 00000000 0207fe7c 777966d4 ole32!DllHostProcessUninitialize+0x80&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207fe4c 776bce20 00000000 00000000 02702988 ole32!ApartmentUninitialize+0xf8&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207fe64 776bcdd2 0207fe7c 00000000 00000001 ole32!wCoUninitialize+0x7d &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207fe80 776e4de6 00000001 77670000 776bc793 ole32!CoUninitialize+0x65&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207fe8c 776bc793 0207feb4 776bc732 77670000 ole32!DoThreadSpecificCleanup+0x63&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207fe94 776bc732 77670000 00000003 00000000 ole32!ThreadNotification+0x37&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207feb4 776bc6da 77670000 00000003 00000000 ole32!DllMain+0x194&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207fed4 7c81a352 77670000 00000003 00000000 ole32!_DllMainCRTStartup+0x52&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207fef4 7c819178 776bc692 77670000 00000003 ntdll!LdrpCallInitRoutine+0x14 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207ffa8 77e4f920 00000000 00000000 0207ffec ntdll!LdrShutdownThread+0xd2&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207ffb8 77e6482e 00000000 00000000 00000000 kernel32!ExitThread+0x2f&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207ffec 00000000 77c7b0f5 000bb338 00000000 kernel32!BaseThreadStart+0x39 &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;On peu voir que ce thread est en attente avec un &lt;B&gt;&lt;FONT color=#ff0000&gt;WaitForSingleObject&lt;/FONT&gt;.&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;On fait un kP pour avoir l’objet sur lequel ce thread est en attente :&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;0:013&amp;gt; &lt;FONT color=#0000ff&gt;&lt;STRONG&gt;kP&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;ChildEBP RetAddr&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207fd5c 7c827d0b ntdll!KiFastSystemCallRet(void) [&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207fd60 77e61d1e ntdll!NtWaitForSingleObject(void)+0xc &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207fdd0 77e61c8d kernel32!WaitForSingleObjectEx(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; void * hHandle = 0x00000a60, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long dwMilliseconds = 0xffffffff, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; int bAlertable = 0)+0xac &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000 face="Courier New"&gt;0207fde4 776f56f4 kernel32!WaitForSingleObject(&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000 face="Courier New"&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; void * hHandle = 0x00000a60, &lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000 face="Courier New"&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; unsigned long dwMilliseconds = 0xffffffff)+0x12 &lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207fe00 7768dac2 ole32!CDllHost::ClientCleanupFinish(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; void * hEvent = 0x00000a60)+0x2a &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207fe2c 7768da32 ole32!DllHostProcessUninitialize(void)+0x80 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207fe4c 776bce20 ole32!ApartmentUninitialize(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; int fHostThread = 0)+0xf8 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207fe64 776bcdd2 ole32!wCoUninitialize(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; class COleTls * Tls = 0x0207fe7c, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; int fHostThread = 0)+0x7d &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207fe80 776e4de6 ole32!CoUninitialize(void)+0x65 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207fe8c 776bc793 ole32!DoThreadSpecificCleanup(void)+0x63 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207fe94 776bc732 ole32!ThreadNotification(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; struct HINSTANCE__ * hDll = 0x77670000, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long dwReason = 3, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; void * lpvReserved = 0x00000000)+0x37 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207feb4 776bc6da ole32!DllMain(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; void * hInstance = 0x77670000, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long dwReason = 3, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; void * lpvReserved = 0x00000000)+0x194 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207fed4 7c81a352 ole32!_DllMainCRTStartup(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; void * hDllHandle = 0x77670000, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long dwReason = 3, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; void * lpreserved = 0x00000000)+0x52&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207fef4 7c819178 ntdll!LdrpCallInitRoutine(void)+0x14 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207ffa8 77e4f920 ntdll!LdrShutdownThread(void)+0xd2 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207ffb8 77e6482e kernel32!ExitThread(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; unsigned long dwExitCode = 0)+0x2f &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0207ffec 00000000 kernel32!BaseThreadStart(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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;lt;function&amp;gt; * lpStartAddress = 0x77c7b0f5, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;void * lpParameter = 0x000bb338)+0x39&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Puis on tape la commande suivante :&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;0:013&amp;gt; &lt;FONT color=#0000ff&gt;&lt;STRONG&gt;!handle&lt;/STRONG&gt;&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;0x00000a60&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;Handle 00000a60&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Event&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Cet objet est un Event, donc ce thread attend qu’un Event soit signalé.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Regardons un peu plus loin dans la stack :&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;0:013&amp;gt; &lt;FONT color=#0000ff&gt;&lt;STRONG&gt;kv n&lt;/STRONG&gt; &lt;/FONT&gt;&lt;FONT color=#000000&gt;(le “n” permet d’afficher les numéro de frame)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;# ChildEBP RetAddr&amp;nbsp; Args to Child&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;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;00 0207fd5c 7c827d0b 77e61d1e 00000a60 00000000 ntdll!KiFastSystemCallRet &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;01 0207fd60 77e61d1e 00000a60 00000000 00000000 ntdll!NtWaitForSingleObject+0xc &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;02 0207fdd0 77e61c8d 00000a60 ffffffff 00000000 kernel32!WaitForSingleObjectEx+0xac&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;03 0207fde4 776f56f4 00000a60 ffffffff 77792cf0 kernel32!WaitForSingleObject+0x12&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;04 0207fe00 7768dac2 00000a60 00000000 00000080 ole32!CDllHost::ClientCleanupFinish+0x2a&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;05 0207fe2c 7768da32 00000000 0207fe7c 777966d4 ole32!DllHostProcessUninitialize+0x80 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;06 0207fe4c 776bce20 00000000 00000000 02702988 ole32!ApartmentUninitialize+0xf8&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;07 0207fe64 776bcdd2 0207fe7c 00000000 00000001 ole32!wCoUninitialize+0x7d&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;08 0207fe80 776e4de6 00000001 77670000 776bc793 ole32!CoUninitialize+0x65&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;09 0207fe8c 776bc793 0207feb4 776bc732 77670000 ole32!DoThreadSpecificCleanup+0x63&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0a 0207fe94 776bc732 77670000 00000003 00000000 ole32!ThreadNotification+0x37 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000 face="Courier New"&gt;0b 0207feb4 776bc6da 77670000 00000003 00000000 ole32!DllMain+0x194&amp;nbsp; &lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000 face="Courier New"&gt;0c 0207fed4 7c81a352 77670000 00000003 00000000 ole32!_DllMainCRTStartup+0x52&amp;nbsp; &lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000 face="Courier New"&gt;0d 0207fef4 7c819178 776bc692 77670000 00000003 ntdll!LdrpCallInitRoutine+0x14 &lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000 face="Courier New"&gt;0e 0207ffa8 77e4f920 00000000 00000000 0207ffec ntdll!LdrShutdownThread+0xd2&amp;nbsp; &lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#ff0000&gt;0f 0207ffb8 77e6482e 00000000 00000000 00000000 kernel32!ExitThread+0x2f &lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;10 0207ffec 00000000 77c7b0f5 000bb338 00000000 kernel32!BaseThreadStart+0x39&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Nous pouvons voir que ce thread est en cours de fermeture (&lt;B&gt;&lt;FONT color=#ff0000&gt;kernel32!ExitThread&lt;/FONT&gt;&lt;/B&gt;) et dans une phase de fermeture d’un thread nous notifions toutes les dlls du processus pour leurs indiquer que ce thread se termine et dans cette stack nous avons :&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000 face="Courier New"&gt;0b 0207feb4 776bc6da 77670000 00000003 00000000 ole32!DllMain+0x194&amp;nbsp; &lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000 face="Courier New"&gt;0c 0207fed4 7c81a352 77670000 00000003 00000000 ole32!_DllMainCRTStartup+0x52 &lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000 face="Courier New"&gt;0d 0207fef4 7c819178 776bc692 77670000 00000003 ntdll!LdrpCallInitRoutine+0x14 &lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000 face="Courier New"&gt;0e 0207ffa8 77e4f920 00000000 00000000 0207ffec ntdll!LdrShutdownThread+0xd2 &lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#ff0000 face="Courier New"&gt;0f 0207ffb8 77e6482e 00000000 00000000 00000000 kernel32!ExitThread+0x2f&amp;nbsp; &lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;On se met sur la frame 0c :&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;0:013&amp;gt; &lt;FONT color=#0000ff&gt;&lt;STRONG&gt;.frame 0c&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0c 0207fed4 7c81a352 ole32!_DllMainCRTStartup+0x52&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Puis on fait un DV pour afficher les paramètres :&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;0:013&amp;gt; &lt;FONT color=#0000ff&gt;&lt;STRONG&gt;dv&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT face="Courier New"&gt;hDllHandle = 0x77670000&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp; dwReason = 3&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp; lpreserved = 0x00000000&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp; retcode = 3&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Regardons maintenant à quoi correspond ce « hDllHandle » :&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;0:013&amp;gt; &lt;FONT color=#0000ff&gt;&lt;STRONG&gt;!lmi&lt;/STRONG&gt;&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;&lt;STRONG&gt;0x77670000&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;Loaded Module Info: [0x77670000] &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Module: ole32&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp; Base Address: 77670000&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Image Name: ole32.dll&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp; Machine Type: 332 (I386)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Time Stamp: 45d70aa5 Sat Feb 17 15:01:09 2007&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Size: 139000&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CheckSum: 14357b&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;Characteristics: 210e&amp;nbsp; perf&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;Debug Data Dirs: Type&amp;nbsp; Size&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VA&amp;nbsp; Pointer&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; CODEVIEW&amp;nbsp;&amp;nbsp;&amp;nbsp; 22, 11a44c,&amp;nbsp; 11984c RSDS - GUID: {DC8A079C-AE0B-4A0C-89EC-5A936EAF1F7F}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; Age: 2, Pdb: ole32.pdb&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; CLSID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4, 11a448,&amp;nbsp; 119848 [Data not mapped]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Image Type: MEMORY&amp;nbsp;&amp;nbsp; - Image read successfully from loaded memory.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Symbol Type: PDB&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Symbols loaded successfully from symbol server.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Compiler: C++ - front end [13.10 bld 4035] - back end [13.10 bld 4035]&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Nous voyons que dans la phase de shutdown on appelle OLE32 et nous somme en attente d’un Event.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;En regardant les autres thread du spooler, nous pouvons voir un thread qui est dans une phase de&amp;nbsp; LdrUnloadDll (déchargement d’une dll). Mais ce thread est en attente sur une « critical section » qui est celle détenue par le thread précédent :&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;0:013&amp;gt; &lt;FONT color=#0000ff&gt;&lt;STRONG&gt;~18s&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;eax=77ec1944 ebx=00000000 ecx=77e424de edx=03311b00 esi=7c8877a0 edi=00000000&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;eip=7c8285ec esp=032cfcb8 ebp=032cfcf4 iopl=0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nv up ei pl zr na pe nc&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;cs=001b&amp;nbsp; ss=0023&amp;nbsp; ds=0023&amp;nbsp; es=0023&amp;nbsp; fs=003b&amp;nbsp; gs=0000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; efl=00000246&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;ntdll!KiFastSystemCallRet:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;7c8285ec c3&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; ret&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;0:018&amp;gt; &lt;FONT color=#0000ff&gt;&lt;STRONG&gt;kv&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;ChildEBP RetAddr&amp;nbsp; Args to Child&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;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cfcb4 7c827d0b 7c83d236 00000124 00000000 ntdll!KiFastSystemCallRet &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000 face="Courier New"&gt;&lt;STRONG&gt;032cfcb8 7c83d236 00000124 00000000 00000000 ntdll!NtWaitForSingleObject+0xc &lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000 face="Courier New"&gt;&lt;STRONG&gt;032cfcf4 7c83d281 00000124 00000004 00000000 ntdll!RtlpWaitOnCriticalSection+0x1a3&amp;nbsp; &lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000 face="Courier New"&gt;&lt;STRONG&gt;032cfd14 7c839844 7c8877a0 032cfe70 032cfeac ntdll!RtlEnterCriticalSection+0xa8 &lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cfe1c 77e6b1bb 02100000 032cfeac 032cfedc &lt;B&gt;&lt;FONT color=#008000&gt;ntdll!LdrUnloadDll&lt;/FONT&gt;&lt;/B&gt;+0x35 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cfe30 77691d0f 02100000 032cff04 77691d23 kernel32!FreeLibrary+0x41&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cfe3c 77691d23 032cfeb8 777965b0 00000000 ole32!CClassCache::CDllPathEntry::CFinishObject::Finish+0x2f &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cfe50 77691afe 77671af0 00000000 00000000 ole32!CClassCache::CFinishComposite::Finish+0x1d&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cff04 7769182a 02702bd8 00000080 776bc944 ole32!CClassCache::CleanUpDllsForApartment+0x1d0&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cff30 7769174c 00000000 032cff84 777966d4 ole32!FinishShutdown+0xd7 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cff50 776bce20 00000001 00007530 77792c30 ole32!ApartmentUninitialize+0x94 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cff68 776f5797 032cff84 00000001 77e61c96 ole32!wCoUninitialize+0x7d &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cff88 7768f2a2 032cffac 776bbab4 77792c30 ole32!CDllHost::WorkerThread+0xdd &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cff90 776bbab4 77792c30 00000000 0270a1c0 ole32!DLLHostThreadEntry+0xd &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cffac 776b1704 00000000 032cffec 77e64829 ole32!CRpcThread::WorkerLoop+0x26 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cffb8 77e64829 0270a1c0 00000000 00000000 ole32!CRpcThreadCache::RpcWorkerThreadEntry+0x20&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cffec 00000000 776b16e4 0270a1c0 00000000 kernel32!BaseThreadStart+0x34 &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Regardons quelle DLL ce thread essaie de décharger :&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;0:018&amp;gt; &lt;FONT color=#0000ff&gt;&lt;STRONG&gt;kP&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;ChildEBP RetAddr&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cfcb4 7c827d0b ntdll!KiFastSystemCallRet(void) &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cfcb8 7c83d236 ntdll!NtWaitForSingleObject(void)+0xc &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cfcf4 7c83d281 ntdll!RtlpWaitOnCriticalSection(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; struct _RTL_CRITICAL_SECTION * CriticalSection = 0x00000124, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; long Increment = 4)+0x1a3 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cfd14 7c839844 ntdll!RtlEnterCriticalSection(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; struct _RTL_CRITICAL_SECTION * CriticalSection = 0x7c8877a0)+0xa8 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cfe1c 77e6b1bb ntdll!LdrUnloadDll(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; void * &lt;FONT color=#ff0000&gt;&lt;STRONG&gt;DllHandle = 0x02100000&lt;/STRONG&gt;&lt;/FONT&gt;)+0x35 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cfe30 77691d0f kernel32!FreeLibrary(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; struct HINSTANCE__ * hLibModule = 0x02100000)+0x41 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cfe3c 77691d23 ole32!CClassCache::CDllPathEntry::CFinishObject::Finish(void)+0x2f &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cfe50 77691afe ole32!CClassCache::CFinishComposite::Finish(void)+0x1d &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cff04 7769182a ole32!CClassCache::CleanUpDllsForApartment(void)+0x1d0 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cff30 7769174c ole32!FinishShutdown(void)+0xd7 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cff50 776bce20 ole32!ApartmentUninitialize(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; int fHostThread = 1)+0x94 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cff68 776f5797 ole32!wCoUninitialize(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; class COleTls * Tls = 0x032cff84, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; int fHostThread = 1)+0x7d &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cff88 7768f2a2 ole32!CDllHost::WorkerThread(void)+0xdd &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cff90 776bbab4 ole32!DLLHostThreadEntry(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; void * param = 0x77792c30)+0xd [&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cffac 776b1704 ole32!CRpcThread::WorkerLoop(void)+0x26 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cffb8 77e64829 ole32!CRpcThreadCache::RpcWorkerThreadEntry(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; void * param = 0x0270a1c0)+0x20 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;032cffec 00000000 kernel32!BaseThreadStart(&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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;lt;function&amp;gt; * lpStartAddress = 0x776b16e4, &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&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; void * lpParameter = 0x0270a1c0)+0x34&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;0:018&amp;gt; &lt;FONT color=#0000ff&gt;&lt;STRONG&gt;!lmi&lt;/STRONG&gt;&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;0x02100000&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Loaded Module Info: [0x02100000] &lt;/P&gt;
&lt;P&gt;&lt;B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#ff0000&gt;Module: HPBOID&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; Base Address: 02100000&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Image Name: HPBOID.DLL&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; Machine Type: 332 (I386)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Time Stamp: 45c30dad Fri Feb 02 11:08:45 2007&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Size: 9000&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CheckSum: e266&lt;/P&gt;
&lt;P&gt;Characteristics: 210e&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Debug Data Dirs: Type&amp;nbsp; Size&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VA&amp;nbsp; Pointer&lt;/P&gt;
&lt;P&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; CODEVIEW&amp;nbsp;&amp;nbsp;&amp;nbsp; 54,&amp;nbsp; 1458,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 858 RSDS - GUID: {6D0A74B4- DFB-4467-BA2A-27942C80B5FC}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Image Type: MEMORY&amp;nbsp;&amp;nbsp; - Image read successfully from loaded memory.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Symbol Type: EXPORT&amp;nbsp;&amp;nbsp; - PDB not found&lt;/P&gt;
&lt;P&gt;Load Report: export symbols&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Conclusion&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Ici le problème semble lié au module HPBOID.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Résolution&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Nous avons dans un premier temps renommé ce composant&amp;nbsp; afin de vérifier :&lt;/P&gt;
&lt;P&gt;1. Si cela permettait de résoudre le problème (ce fût le cas)&lt;/P&gt;
&lt;P&gt;2. De s’assurer que cela n’avait pas d’impact sur le bon fonctionnement des imprimantes.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Ensuite, il a fallut contacter l’éditeur de ce composant afin soit de le désinstaller sans impacter les imprimantes ou de se procurer une version mise à jour corrigeant ce problème.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Bon réveillon et bonne année.&lt;/P&gt;
&lt;P&gt;Philippe&lt;/P&gt;
&lt;P&gt;Windows Core Support Escalation Engineer&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3174788" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/windowsinternals/archive/tags/NT+Debugging/default.aspx">NT Debugging</category><category domain="http://blogs.technet.com/windowsinternals/archive/tags/philipped/default.aspx">philipped</category></item><item><title>Debugger un 100% CPU du spooler</title><link>http://blogs.technet.com/windowsinternals/archive/2008/12/16/debugger-un-100-cpu-du-spooler.aspx</link><pubDate>Tue, 16 Dec 2008 20:17:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3169806</guid><dc:creator>philipped</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.technet.com/windowsinternals/comments/3169806.aspx</comments><wfw:commentRss>http://blogs.technet.com/windowsinternals/commentrss.aspx?PostID=3169806</wfw:commentRss><description>&lt;P&gt;&lt;FONT size=2&gt;Dans ce post nous allons voir comment traiter un problème spécifique de 100% CPU causé par le spooler.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Après avoir constaté via Task Manager ou Process Explorer que le processus causant cette consommation de temps processeur était bien Spoolsv.exe (spooler d’impression), nous avons pris plusieurs dumps du processus avec l’outil Adplus.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Cette méthodologie peut être reprise pour identifier d’autres dysfonctionnements liés au spooler.&lt;/FONT&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#000080 size=2&gt;Collecte de dump&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Pour cela, télécharger les « Debugging Tools » à cette adresse : &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx" mce_href="http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx"&gt;&lt;FONT size=2&gt;http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt; et les installer sur le serveur (il est possible d’installer ces outils sur une machine moins sensible puis de copier le répertoire d’installation vers le serveur).&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Après avoir installé ces outils nous avons pris des dumps du processus Spoolsv.exe via la commande suivante :&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2&gt;Cscript Adplus.vbs –quiet –hang –pn spoolsv.exe –r 3 60&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;UL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT size=2&gt;-quiet =&amp;gt; afin de ne pas avoir à répondre aux deux messages « popup » concernant les symbols&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT size=2&gt;-hang =&amp;gt; vous avez le choix entre hang ou crash, dans notre cas comme nous voulons prendre des dumps sans interrompre le processus nous utilisons donc –hang.&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT size=2&gt;-pn=&amp;gt; cette option permet de spécifier le nom du processus, sinon vous pouvez utiliser –p en spécifiant le PID du process.&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT size=2&gt;-r =&amp;gt; permet d’automatiser la prise de plusieurs dumps avec un intervalle de temps entre chaque dump, ici 3 dumps avec 60s entre chaque dump.&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Après avoir pris les dumps, nous les avons ouverts avec Windbg (fournis aussi avec les Debugging tools) :&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;FONT size=2&gt;Menu &lt;STRONG&gt;Démarrer =&amp;gt; Debugging tools for Windows =&amp;gt; Windbg&lt;/STRONG&gt;&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT size=2&gt;Depuis le menu &lt;STRONG&gt;File =&amp;gt; Symbol file path &lt;/STRONG&gt;entrez les paramètres suivants : &lt;STRONG&gt;SRV*C:\SYMBOLS*http://msdl.microsoft.com/download/symbols&lt;/STRONG&gt; puis OK &lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;Il est important de disposer de symboles pour que Windbg puisse interpréter le contenu de la mémoire, de la pile, etc…On spécifie ici la source utilisée pour télécharger les symboles publics (en l’occurrence les serveurs publics Microsoft)&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;File=&amp;gt; Open Crash Dump&lt;/STRONG&gt;&lt;/FONT&gt; &lt;/LI&gt;&lt;/OL&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#000080 size=2&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#000080 size=2&gt;Analyse des dumps&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;La première étape consiste à rechercher le thread consommant le plus de CPU :&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT color=#008000 size=2 face=Courier&gt;&lt;STRONG&gt;&amp;gt;!runaway&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;User Mode Time&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;Thread Time&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT color=#ff0000 size=2 face=Courier&gt;4:1144 0 days 0:00:01.312 &lt;FONT size=2&gt;&lt;STRONG&gt;=&amp;gt; Le thread 4 est celui qui utilise actuellement le plus de CPU&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;11:135c 0 days 0:00:00.015&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;17:1714 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;16:1710 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;15:170c 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;14:1708 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;13:1704 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;12:1700 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;10:16fc 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;9:16f8 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;8:16f0 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;7:16e8 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;6:16ac 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;5:113c 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;3:15c8 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;2:ff4 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;1:13c 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;0:148 0 days 0:00:00.000&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Nous devons donc nous positionner dans le contexte du thread :&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#008000 size=2 face=Courier&gt;&amp;gt;~4s&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;eax=0000004b ebx=00000000 ecx=00a3dea8 edx=7ffe0300 esi=00a3e008 edi=00000000&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;eip=7c8285ec esp=00a3df94 ebp=00a3dfd4 iopl=0 nv up ei pl nz na pe nc&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000206&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;ntdll!KiFastSystemCallRet:&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;7c8285ec c3 ret&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;On affiche la pile du thread :&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#008000 size=2 face=Courier&gt;&amp;gt;kv&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;ChildEBP RetAddr Args to Child&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3df90 7c82734b 77f5cd00 00a3dfe0 00010000 ntdll!KiFastSystemCallRet (FPO: [0,0,0]) &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3df94 77f5cd00 00a3dfe0 00010000 00a3dfb4 ntdll!ZwOpenKey+0xc (FPO: [3,0,0]) &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3dfd4 77f5cc4d 0000047c 00000000 00000000 advapi32!LocalBaseRegDeleteKeyEx+0xb0 (FPO: [Non-Fpo]) (CONV: stdcall) &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3dfec 77f5cc0d 0000047c 00a3e008 00a3e2c4 advapi32!LocalBaseRegDeleteKey+0x14 (FPO: [Non-Fpo]) (CONV: stdcall) &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3e038 7616687e 0000047c 00a3e2c4 00a3e288 advapi32!RegDeleteKeyW+0xd2 (FPO: [Non-Fpo]) (CONV: stdcall) &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3e048 7613e295 0000047c 00a3e2c4 008f52a8 &lt;FONT color=#ff0000&gt;localspl!SplRegDeleteKey&lt;/FONT&gt;+0x3d (FPO: [Non-Fpo]) (CONV: stdcall) &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3e288 7613e234 0000047c 000001e0 00a3e2c4 &lt;FONT color=#ff0000&gt;localspl!SplRegDeleteKey&lt;/FONT&gt;+0x17b (FPO: [Non-Fpo]) (CONV: stdcall) &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3e4d0 7613e234 00000478 0000047c 00a3e50c &lt;FONT color=#ff0000&gt;localspl!SplRegDeleteKey&lt;/FONT&gt;+0x126 (FPO: [Non-Fpo]) (CONV: stdcall) &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3e718 7613e234 00000480 00000478 00a3e754 &lt;FONT color=#ff0000&gt;localspl!SplRegDeleteKey&lt;/FONT&gt;+0x126 (FPO: [Non-Fpo]) (CONV: stdcall) &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3e960 76143a57 00000174 00000480 008f9e78 &lt;FONT color=#ff0000&gt;localspl!SplRegDeleteKey&lt;/FONT&gt;+0x126 (FPO: [Non-Fpo]) (CONV: stdcall) &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3e990 76143ac2 008f9e78 008f52a8 008f52a8 localspl!DeletePrinterIni+0x7a (FPO: [Non-Fpo]) (CONV: stdcall) &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3e9a8 7613f590 00958078 00000001 00000000 localspl!DeletePrinterForReal+0x2b (FPO: [Non-Fpo]) (CONV: stdcall) &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3e9bc 76133674 008f52a8 008f52a8 00a3f68c localspl!CleanupDeletedPrinters+0x2b (FPO: [Non-Fpo]) (CONV: stdcall) &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3f230 761374eb 008f52a8 00000000 008f2ab8 localspl!BuildPrinterInfo+0xee5 (FPO: [Non-Fpo]) (CONV: stdcall) &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3f668 761391f8 0090e8a0 00000001 00a3f68c localspl!SplCreateSpooler+0x644 (FPO: [Non-Fpo]) (CONV: stdcall) &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3f908 74064c44 008f2ab8 00000158 00000000 localspl!InitializePrintProvidor+0x1bc (FPO: [Non-Fpo]) (CONV: stdcall) &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3f930 74064915 74064cd0 00000000 00000000 spoolss!InitializeProvidor+0x89 (FPO: [Non-Fpo]) (CONV: stdcall) &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3ffb8 77e64829 008f1ea8 00000000 00000000 spoolss!InitializeRouter+0x25b (FPO: [Non-Fpo]) (CONV: stdcall) &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3ffec 00000000 01003f90 008f1ea8 00000000 kernel32!BaseThreadStart+0x34 (FPO: [Non-Fpo]) (CONV: stdcall) &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Ici on peut voir que nous essayons de faire une suppression d’une clé de registre, &lt;FONT color=#ff0000&gt;localspl!SplRegDeleteKey&lt;/FONT&gt;, e&lt;/FONT&gt;&lt;FONT size=2&gt;t cela en boucle car il semble que le processus n’arrive pas à la supprimer, d’où la consommation de CPU dans le temps.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Voyons à quoi correspond cette clé (du moins trouver l’adresse du handle qui pointe vers cette clé) avec la commande suivante :&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT color=#008000 size=2 face=Courier&gt;&lt;STRONG&gt;&amp;gt;Kp&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;ChildEBP RetAddr&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3df90 7c82734b ntdll!KiFastSystemCallRet(void) &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3df94 77f5cd00 ntdll!ZwOpenKey(void)+0xc &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3dfd4 77f5cc4d advapi32!LocalBaseRegDeleteKeyEx(struct HKEY__ * hKey = &lt;FONT color=#ff0000&gt;0x0000047c&lt;/FONT&gt;, struct _UNICODE_STRING * lpSubKey = 0x00000000, unsigned long samDesired = 0, unsigned long Reserved = 0)+0xb0 &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3dfec 77f5cc0d advapi32!LocalBaseRegDeleteKey(struct HKEY__ * hKey = &lt;FONT color=#ff0000&gt;0x0000047c&lt;/FONT&gt;, struct _UNICODE_STRING * lpSubKey = 0x00a3e008 "(0x1A01)")+0x14 &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3e038 7616687e advapi32!RegDeleteKeyW(struct HKEY__ * hKey = &lt;FONT color=#ff0000&gt;0x0000047c&lt;/FONT&gt;, unsigned short * lpKeyName = 0x00a3e2c4)+0xd2 &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3e048 7613e295 &lt;FONT color=#ff0000&gt;localspl!SplRegDeleteKey(void * hKey = 0x0000047c&lt;/FONT&gt;, unsigned short * pszSubKey = 0x00a3e2c4, struct _INISPOOLER * pIniSpooler = 0x008f52a8)+0x3d &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3e288 7613e234 localspl!SplDeleteThisKey(void * hParentKey = &lt;FONT color=#ff0000&gt;0x0000047c&lt;/FONT&gt;, void * hThisKey = 0x000001e0, unsigned short * pThisKeyName = 0x00a3e2c4, int bDeleteNullKey = 1, struct _INISPOOLER * pIniSpooler = 0x008f52a8)+0x17b &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3e4d0 7613e234 localspl!SplDeleteThisKey(void * hParentKey = 0x00000478, void * hThisKey = 0x0000047c, unsigned short * pThisKeyName = 0x00a3e50c, int bDeleteNullKey = 1, struct _INISPOOLER * pIniSpooler = 0x008f52a8)+0x126 &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3e718 7613e234 localspl!SplDeleteThisKey(void * hParentKey = 0x00000480, void * hThisKey = 0x00000478, unsigned short * pThisKeyName = 0x00a3e754, int bDeleteNullKey = 1, struct _INISPOOLER * pIniSpooler = 0x008f52a8)+0x126 &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3e960 76143a57 localspl!SplDeleteThisKey(void * hParentKey = 0x00000174, void * hThisKey = 0x00000480, unsigned short * pThisKeyName = 0x008f9e78, int bDeleteNullKey = 1, struct _INISPOOLER * pIniSpooler = 0x008f52a8)+0x126 &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3e990 76143ac2 localspl!DeletePrinterIni(struct _INIPRINTER * pIniPrinter = 0x008f9e78)+0x7a &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3e9a8 7613f590 localspl!DeletePrinterForReal(struct _INIPRINTER * pIniPrinter = 0x00958078, int bIsInitTime = 1)+0x2b &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3e9bc 76133674 localspl!CleanupDeletedPrinters(struct _INISPOOLER * pIniSpooler = 0x008f52a8)+0x2b &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3f230 761374eb localspl!BuildPrinterInfo(struct _INISPOOLER * pIniSpooler = 0x008f52a8, int UpdateChangeID = 0)+0xee5 &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3f668 761391f8 localspl!SplCreateSpooler(unsigned short * pMachineName = 0x0090e8a0, unsigned long Level = 1, unsigned char * pSpooler = 0x00a3f68c "", unsigned char * pReserved = 0x00000000 "")+0x644 &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3f908 74064c44 localspl!InitializePrintProvidor(struct _PRINTPROVIDOR * pPrintProvidor = 0x008f2ab8, unsigned long cbPrintProvidor = 0x158, unsigned short * pFullRegistryPath = 0x00000000)+0x1bc &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3f930 74064915 spoolss!InitializeProvidor(unsigned short * pProvidorName = 0x74064cd0, unsigned short * pFullName = 0x00000000)+0x89 &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3ffb8 77e64829 spoolss!InitializeRouter(struct RouterInitializationParams * pRouterParams = 0x008f1ea8)+0x25b &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;00a3ffec 00000000 kernel32!BaseThreadStart(&amp;lt;function&amp;gt; * lpStartAddress = 0x01003f90, void * lpParameter = 0x008f1ea8)+0x34&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;La commande suivante permet d’afficher la clé de registre qui ne peut être supprimée :&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT color=#008000 size=2 face=Courier&gt;&lt;STRONG&gt;&amp;gt;!handle 0000047c 4&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;Handle 0000047c&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=Courier&gt;Name &lt;FONT color=#ff0000&gt;\REGISTRY\MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\bg-picklabel on bgmprint (from BG-JLP) in session 1\PrinterDriverData\Papers&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Cette clé est vraisemblablement corrompue car la tentative de suppression manuelle avec Regedit &lt;/FONT&gt;&lt;FONT size=2&gt;s’est avérée impossible. Le nom de la clé est peu commun et peut donc contenir des caractères null.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;La suppression via Regedit n'étant pas possible nous avons utilisé l'outil &lt;STRONG&gt;RegDelNull.exe&lt;/STRONG&gt; (disponible depuis &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/technet/sysinternals/utilities/regdelnull.mspx" mce_href="http://www.microsoft.com/technet/sysinternals/utilities/regdelnull.mspx"&gt;&lt;FONT size=2&gt;http://www.microsoft.com/technet/sysinternals/utilities/regdelnull.mspx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt; ) via la commande : &lt;STRONG&gt;RegDelNull.exe hklm -s&lt;/STRONG&gt; puis nous avons répondu « Yes » concernant la suppression de la clé « bg-picklabel on bgmprint (from BG-JLP) in session 1\PrinterDriverData\Papers »&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Un redémarrage du spooler a permis de remettre en service le service d’impression.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Philippe&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Windows Core Support Escalation Engineer&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3169806" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/windowsinternals/archive/tags/NT+Debugging/default.aspx">NT Debugging</category><category domain="http://blogs.technet.com/windowsinternals/archive/tags/philipped/default.aspx">philipped</category></item><item><title>Comment résoudre un 100% cpu kernel?</title><link>http://blogs.technet.com/windowsinternals/archive/2008/10/14/comment-resoudre-un-100-cpu-kernel.aspx</link><pubDate>Tue, 14 Oct 2008 11:46:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3136288</guid><dc:creator>hervech</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/windowsinternals/comments/3136288.aspx</comments><wfw:commentRss>http://blogs.technet.com/windowsinternals/commentrss.aspx?PostID=3136288</wfw:commentRss><description>&lt;P&gt;Voici un exemple de troubleshooting d’un problème de 100% cpu en mode kernel en utilisant le « Microsoft Windows Performance Toolkit » + un kernel dump.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;U&gt;Scenario&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Une application réalisant des accès aux données (ODBC) part en 100% cpu après quelques milliers d’accès au SGBD. i.e. tout marche correctement pendant quelques minutes puis nous partons en 100% cpu en mode kernel ce qui a pour résultat d’avoir un système inutilisable.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;U&gt;Outils&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Nous allons utiliser le « Microsoft Windows Performance Toolkit » que l’on peut télécharger ici &lt;A href="http://msdn.microsoft.com/en-us/library/cc305187.aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc305187.aspx"&gt;http://msdn.microsoft.com/en-us/library/cc305187.aspx&lt;/A&gt; , ainsi qu’un kernel dump au moment où le problème est visible. Pour analyser le kernel dump nous allons utiliser windbg.exe qui est distribué avec les « Debugging Tools for Windows » téléchargeable ici &lt;A href="http://www.microsoft.com/whdc/devtools/debugging/default.mspx" mce_href="http://www.microsoft.com/whdc/devtools/debugging/default.mspx"&gt;http://www.microsoft.com/whdc/devtools/debugging/default.mspx&lt;/A&gt; .&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;U&gt;Collecte des données&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;I&gt;Xperf:&lt;/I&gt; nous avons démarré une trace xperf alors que l’application marchait bien puis, nous avons laissé celle-ci continuer alors que le problème était visible. Les commandes étant les suivantes :&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#808080&gt;xperf –on Base+Diag&lt;/FONT&gt; (pour démarrer le tracing)&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#808080&gt;xperf –d c:\cpu.etl&lt;/FONT&gt; (pour arrêter le tracing)&lt;/P&gt;
&lt;P&gt;&lt;I&gt;Kernel Dump:&lt;/I&gt; &lt;A href="http://msdn.microsoft.com/en-us/library/cc266492.aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc266492.aspx"&gt;http://msdn.microsoft.com/en-us/library/cc266492.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;U&gt;&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;U&gt;Troubleshooting&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;La première étape va consister à constater le problème de 100% cpu à partir du dump. Pour cela j’ouvre le dump dans windbg (menu File+ Open Crash Dump…). Puis, je cherche mon processus (apisend.exe) responsable du 100% cpu en utilisant la commande «!process»:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/windowsinternals/WindowsLiveWriter/COMMENTresoudreun100cpukernel_A559/image_2.png" mce_href="http://blogs.technet.com/blogfiles/windowsinternals/WindowsLiveWriter/COMMENTresoudreun100cpukernel_A559/image_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=image src="http://blogs.technet.com/blogfiles/windowsinternals/WindowsLiveWriter/COMMENTresoudreun100cpukernel_A559/image_thumb.png" width=640 height=68 mce_src="http://blogs.technet.com/blogfiles/windowsinternals/WindowsLiveWriter/COMMENTresoudreun100cpukernel_A559/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Nous obtenons donc l’adresse de notre processus cible. Nous pouvons utiliser la commande !process avec cette nouvelle information afin d’obtenir des informations détaillées :&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/windowsinternals/WindowsLiveWriter/COMMENTresoudreun100cpukernel_A559/image_4.png" mce_href="http://blogs.technet.com/blogfiles/windowsinternals/WindowsLiveWriter/COMMENTresoudreun100cpukernel_A559/image_4.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=image src="http://blogs.technet.com/blogfiles/windowsinternals/WindowsLiveWriter/COMMENTresoudreun100cpukernel_A559/image_thumb_1.png" width=639 height=804 mce_src="http://blogs.technet.com/blogfiles/windowsinternals/WindowsLiveWriter/COMMENTresoudreun100cpukernel_A559/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Nous constatons donc que le thread 81fc8290 a passé 7 minutes et 33 secondes en mode kernel. Sachant que l’application venait d’être lancée quelques minutes avant la génération du dump, cela semble effectivement important.&lt;/P&gt;
&lt;P&gt;Maintenant, concentrons-nous sur la trace xperf. Je lance donc xperfview.exe, ouvre le fichier cpu.etl et me concentre sur la vue « CPU Sampling by Thread » :&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/windowsinternals/WindowsLiveWriter/COMMENTresoudreun100cpukernel_A559/image_8.png" mce_href="http://blogs.technet.com/blogfiles/windowsinternals/WindowsLiveWriter/COMMENTresoudreun100cpukernel_A559/image_8.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=image src="http://blogs.technet.com/blogfiles/windowsinternals/WindowsLiveWriter/COMMENTresoudreun100cpukernel_A559/image_thumb_3.png" width=636 height=210 mce_src="http://blogs.technet.com/blogfiles/windowsinternals/WindowsLiveWriter/COMMENTresoudreun100cpukernel_A559/image_thumb_3.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Nous constatons bien que l’utilisation cpu est correcte pendant un moment puis passe en 100% cpu. Si je sélectionne une plage pendant cette période de 100% et fais un clique droit + « Summary Table ». J’obtiens les informations suivantes :&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/windowsinternals/WindowsLiveWriter/COMMENTresoudreun100cpukernel_A559/image_10.png" mce_href="http://blogs.technet.com/blogfiles/windowsinternals/WindowsLiveWriter/COMMENTresoudreun100cpukernel_A559/image_10.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=image src="http://blogs.technet.com/blogfiles/windowsinternals/WindowsLiveWriter/COMMENTresoudreun100cpukernel_A559/image_thumb_4.png" width=639 height=171 mce_src="http://blogs.technet.com/blogfiles/windowsinternals/WindowsLiveWriter/COMMENTresoudreun100cpukernel_A559/image_thumb_4.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Il est maintenant clair que 99.06% du temps cpu est utilisé par apisend.exe. Nous pouvons récupérer plus d’informations en cliquant sur la croix devant notre nom de processus :&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/windowsinternals/WindowsLiveWriter/COMMENTresoudreun100cpukernel_A559/image_12.png" mce_href="http://blogs.technet.com/blogfiles/windowsinternals/WindowsLiveWriter/COMMENTresoudreun100cpukernel_A559/image_12.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=image src="http://blogs.technet.com/blogfiles/windowsinternals/WindowsLiveWriter/COMMENTresoudreun100cpukernel_A559/image_thumb_5.png" width=638 height=171 mce_src="http://blogs.technet.com/blogfiles/windowsinternals/WindowsLiveWriter/COMMENTresoudreun100cpukernel_A559/image_thumb_5.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Nous obtenons ainsi la distribution du temps cpu par composant. Cette vue nous indique que 98.37% du temps cpu s’est effectué dans win32k.sys. Nous sommes donc bien en mode kernel et notre problème a un rapport avec le GDI.&lt;/P&gt;
&lt;P&gt;Nous pouvons continuer la même démarche et descendre dans le détail des fonctions utilisées par win32k.sys en cliquant sur la croix dans la colonne « Function ». Nous obtenons ainsi :&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/windowsinternals/WindowsLiveWriter/COMMENTresoudreun100cpukernel_A559/image_14.png" mce_href="http://blogs.technet.com/blogfiles/windowsinternals/WindowsLiveWriter/COMMENTresoudreun100cpukernel_A559/image_14.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=image src="http://blogs.technet.com/blogfiles/windowsinternals/WindowsLiveWriter/COMMENTresoudreun100cpukernel_A559/image_thumb_6.png" width=641 height=171 mce_src="http://blogs.technet.com/blogfiles/windowsinternals/WindowsLiveWriter/COMMENTresoudreun100cpukernel_A559/image_thumb_6.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Le/les appels à la fonction à l’adresse 0xbf876531 consomme(nt) 79.97% de notre temps cpu. Nous pouvons maintenant utiliser cette adresse à partir du kernel dump pour trouver notre coupable (ou victime).&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/windowsinternals/WindowsLiveWriter/COMMENTresoudreun100cpukernel_A559/image_16.png" mce_href="http://blogs.technet.com/blogfiles/windowsinternals/WindowsLiveWriter/COMMENTresoudreun100cpukernel_A559/image_16.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=image src="http://blogs.technet.com/blogfiles/windowsinternals/WindowsLiveWriter/COMMENTresoudreun100cpukernel_A559/image_thumb_7.png" width=646 height=58 mce_src="http://blogs.technet.com/blogfiles/windowsinternals/WindowsLiveWriter/COMMENTresoudreun100cpukernel_A559/image_thumb_7.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Le débogueur nous indique que nous sommes dans du code ayant un rapport avec les Timers Windows. Les Timers sont bien gérés par la partie GDI (win32k.sys).&lt;/P&gt;
&lt;P&gt;La situation est donc la suivante : cette application utilise des timers pour effectuer certaines tâches et, après quelques minutes, l’utilisation de ces Timers entraine un 100% cpu. &lt;/P&gt;
&lt;P&gt;Pour aller plus loin, il nous faut donc comprendre ce que fait cette application et obtenir les morceaux de code concernant la manipulation des Timers. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;U&gt;Conclusion&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Après analyse du code, nous avons apporté 2 modifications :&lt;/P&gt;
&lt;P&gt;1- Le code était implémenté de telle manière qu’en cas d’erreur d’accès aux données, le Timer crée (pour effectuer une annulation de la requête de manière asynchrone) n’était jamais détruit. Nous avons donc ajouté un KillTimer() en cas d’erreur.&lt;/P&gt;
&lt;P&gt;2- Lors de l’appel du handler de Timer, celui-ci n’était détruit que juste avant de quitter ce handler. Nous avons modifié cette implémentation afin de détruire le handler le plus tôt possible pour éviter des problèmes de réentrance si jamais le code (ODBC) devait prendre plus de temps que la durée du Timer lui-même.&lt;/P&gt;
&lt;P&gt;Une fois ces 2 modifications apportées, l’application et le serveur se sont mis à fonctionner parfaitement bien.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;U&gt;Epilogue&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Xperf est vraiment un outil extrêmement puissant. Il me parait indispensable de savoir l’utiliser. Xperf &lt;B&gt;EST&lt;/B&gt; l’outil standard de tracing pour Windows Vista, Windows 2008 et les prochaines versions d’OS. Xperf peut être utilisé (pour la partie Kernel) sous Windows 2003 et Windows XP mais ne s’installera pas sur ces plateformes. Il faudra donc l’installer sur un Vista ou un 2008 puis copier l’intégralité du répertoire sur 2003 ou XP.&lt;/P&gt;
&lt;P&gt;Merci de m’avoir lu jusqu’ici :-)&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#808080 size=2&gt;Hervé Chapalain&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#808080 size=2&gt;Windows Core Escalation Engineer&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3136288" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/windowsinternals/archive/tags/Herv_26002300_233_3B00_/default.aspx">Herv&amp;#233;</category><category domain="http://blogs.technet.com/windowsinternals/archive/tags/NT+Debugging/default.aspx">NT Debugging</category></item></channel></rss>