title: WinDbg/SOS: How to correlate managed threads from !threads command with System.Threading.Thread instances
body: <p>Using WinDbg and SOS, I have the following:</p>
  
  <pre><code>0:011&gt; !threads
  ThreadCount: 7
  UnstartedThread: 0
  BackgroundThread: 4
  PendingThread: 0
  DeadThread: 2
                               PreEmptive   GC Alloc               Lock     
         ID ThreadOBJ    State     GC       Context       Domain   Count APT Exception
    0   618 0015b350        20 Enabled  00000000:00000000 0017b720     0 Ukn
    2   624 0016f508      b220 Enabled  00000000:00000000 0017b720     0 MTA (Finalizer)
    9   e48 001c13d0      1220 Enabled  00000000:00000000 0017b720     0 Ukn
   10   e8c 048c6a40   1800220 Enabled  00c296a8:00c2ab44 0017b720     0 MTA (Threadpool Worker) System.NullReferenceException
  XXX     0 00224138      1820 Enabled  00000000:00000000 0017b720     0 MTA
  XXX     0 001d5b50      1820 Enabled  00000000:00000000 0017b720     0 Ukn
   11   564 00166318   1800220 Enabled  00c2cf30:00c2eb44 0017b720     0 MTA (Threadpool Worker)
  0:011&gt; !dumpheap -type System.Threading.Thread
   Address       MT     Size
  00b16478 79bba7a4       60
  00b41a7c 79bca7ac       28
  00b41a98 79bba7a4       60
  00b41ecc 79bba7a4       60
  00bf1e20 79bca7ac       28
  00bf1e3c 79bba7a4       60
  00c03b34 79bca7ac       28
  00c03b50 79bba7a4       60
  total 8 objects
  Statistics:
        MT    Count TotalSize Class Name
  79bca7ac        3        84 System.Threading.ThreadStart
  79bba7a4        5       300 System.Threading.Thread
  Total 8 objects
  </code></pre>
  
  <p>My question is: how can I determine which instances of System.Threading.Thread on the heap correspond to which of the managed threads actually executing. </p>
  
  <p>Updated: 
  This is debugging a .NET 1.1 application.
  In this version I get output like this from !DumpObj </p>
  
  <pre><code>0:000&gt; !dumpobj 00b16478 
  Name: System.Threading.Thread
  MethodTable 0x79bba7a4
  EEClass 0x79bba9d4
  Size 60(0x3c) bytes
  mdToken: 020000ec  (c:\windows\microsoft.net\framework\v1.1.4322\mscorlib.dll)
  FieldDesc*: 79bbaa38
        MT    Field   Offset                 Type       Attr    Value Name
  79bba7a4  4000337        4                CLASS   instance 00000000 m_Context
  79bba7a4  4000338        8                CLASS   instance 00000000 m_LogicalCallContext
  79bba7a4  4000339        c                CLASS   instance 00000000 m_IllogicalCallContext
  79bba7a4  400033a       10                CLASS   instance 00000000 m_Name
  79bba7a4  400033b       14                CLASS   instance 00000000 m_ExceptionStateInfo
  79bba7a4  400033c       18                CLASS   instance 00000000 m_Delegate
  79bba7a4  400033d       1c                CLASS   instance 00000000 m_PrincipalSlot
  79bba7a4  400033e       20                CLASS   instance 00000000 m_ThreadStaticsBuckets
  79bba7a4  400033f       24                CLASS   instance 00000000 m_ThreadStaticsBits
  79bba7a4  4000340       28                CLASS   instance 00000000 m_CurrentCulture
  79bba7a4  4000341       2c                CLASS   instance 00000000 m_CurrentUICulture
  79bba7a4  4000342       30         System.Int32   instance        2 m_Priority
  79bba7a4  4000343       34         System.Int32   instance  1422160 DONT_USE_InternalThread
  79bba7a4  4000344        0                CLASS     shared   static m_LocalDataStoreMgr
      &gt;&gt; Domain:Value 0017b720:00b162e8 &lt;&lt;
  </code></pre>