Note that there are some explanatory texts on larger screens.

plurals
  1. PODebugging RtlUserThreadStart in Process Explorer
    primarykey
    data
    text
    <p>I have a multi-threaded wpf application built on 3.5. When I look at the running threads through Process Explorer I see 8 threads all with the same start address, ntdll.dll!RtlUserThreadStart and all eight have a CPU value from 3-6+ and have a high Cycles Delta. I can't figure out what these threads are doing. It is always the same threads. It never varies within the same instance of the application. When I debug my application at the same time and pause the debugger, all these threads are showing a single line for the stack either System.Threading.ConcurrencyScheduler.Scheduler.WaitForWork() or System.Threading.Monitor.Wait(). </p> <p>I enabled the symbol files for Visual Studio and I see the following stack on those threads:</p> <pre><code>System.Threading.Monitor.Wait() Normal mscorlib.dll!System.Threading.Monitor.Wait(object obj, int millisecondsTimeout) + 0x19 bytes System.Threading.dll!System.Threading.ConcurrencyScheduler.Scheduler.WaitForWork() + 0xd0 bytes System.Threading.dll!System.Threading.ConcurrencyScheduler.InternalContext.Dispatch() + 0x74a bytes System.Threading.dll!System.Threading.ConcurrencyScheduler.ThreadInternalContext.ThreadStartBridge(System.IntPtr dummy) + 0x9f bytes </code></pre> <p>When I look at the stack provided on the thread within process monitor I see the following as examples:</p> <pre><code>0 ntoskrnl.exe!KeWaitForMultipleObjects+0xc0a 1 ntoskrnl.exe!KeAcquireSpinLockAtDpcLevel+0x732 2 ntoskrnl.exe!KeWaitForSingleObject+0x19f 3 ntoskrnl.exe!_misaligned_access+0xba4 4 ntoskrnl.exe!_misaligned_access+0x1821 5 ntoskrnl.exe!_misaligned_access+0x1a97 6 mscorwks.dll!InitializeFusion+0x990b 7 mscorwks.dll!DeleteShadowCache+0x31ef </code></pre> <p>or:</p> <pre><code>0 ntoskrnl.exe!KeWaitForMultipleObjects+0xc0a 1 ntoskrnl.exe!KeAcquireSpinLockAtDpcLevel+0x732 2 ntoskrnl.exe!KeWaitForSingleObject+0x19f 3 ntoskrnl.exe!_misaligned_access+0xba4 4 ntoskrnl.exe!_misaligned_access+0x1821 5 ntoskrnl.exe!KeAcquireSpinLockAtDpcLevel+0x93d 6 ntoskrnl.exe!KeWaitForMultipleObjects+0x26a 7 ntoskrnl.exe!NtWaitForSingleObject+0x41f 8 ntoskrnl.exe!NtWaitForSingleObject+0x78e 9 ntoskrnl.exe!KeSynchronizeExecution+0x3a23 10 ntdll.dll!ZwWaitForMultipleObjects+0xa 11 KERNELBASE.dll!GetCurrentProcess+0x40 12 KERNEL32.dll!WaitForMultipleObjectsEx+0xb3 13 mscorwks.dll!CreateApplicationContext+0x10499 14 mscorwks.dll!CreateApplicationContext+0xbc41 15 mscorwks.dll!StrongNameFreeBuffer+0xc54d 16 mscorwks.dll!StrongNameFreeBuffer+0x2ac48 17 mscorwks.dll!StrongNameTokenFromPublicKey+0x1a5ea 18 mscorwks.dll!CopyPDBs+0x17362 19 mscorwks.dll!CorExitProcess+0x3dc9 20 mscorwks.dll!TranslateSecurityAttributes+0x547f 21 mscorlib.ni.dll+0x8e6bc9 </code></pre> <p>As an additional note to this item. My computer is a single CPU with 4 cores. When we run the same app on a dual CPU with 4 cores we see this number of threads go from 8 to 16.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload