Re-Factor EventSource to Support Writing to EventPipe (#11435)
[platform/upstream/coreclr.git] / src / inc / CrstTypes.def
1 // Licensed to the .NET Foundation under one or more agreements.
2 // The .NET Foundation licenses this file to you under the MIT license.
3 // See the LICENSE file in the project root for more information.
4
5 //
6 // This file is used to describe the different types of Crst and their dependencies on other Crst types (in
7 // terms of which types may be legally held while others are acquired).
8 //
9 // The CrstTypeTool utility is used to parse this file, verify that there are no logical inconsistencies (such
10 // as a cycle in the dependencies) and generate an enum value and numerical ranking for each type. This
11 // ranking is used by the runtime (in checked builds) to verify that none of the rules described below are
12 // violated (which could lead to a deadlock).
13 //
14 // When you add a new Crst type you need to be aware of which Crst types may be already held when your Crst is
15 // acquired and which other types may be subsequently acquired. You can then add a Crst definition to this
16 // file and annotate it with those dependencies. Running CrstTypeTool will check to see if this introduces a
17 // potential deadlock problem and if everything checks out will generate a new version of
18 // file:CrstTypes.h (be sure to check this file out from TFS/SD before running CrstTypeTool).
19 //
20 // The format of this file is a very simple language. Comments are introduced with '//' and continue to the
21 // end of the line. Keywords are case insensitive (Crst type names, however, are case sensitive since they'll
22 // be translated directly to C++ enum values). Crst type names are used without the 'Crst' prefix used in C++
23 // code (e.g. CrstAppDomainCache is referred to as AppDomainCache). The following words are reserved keywords
24 // and may not be used as the names of Crst types:
25 //      Crst
26 //      End
27 //      AcquiredBefore
28 //      AcquiredAfter
29 //      Unordered
30 //      SameLevelAs
31 //
32 // Each Crst type definition has the following format (where [] indicates optional and ... indicates zero or
33 // more repetitions):
34 //      Crst <type name>
35 //          [AcquiredBefore <type name>...]
36 //          [AcquiredAfter <type name>...]
37 //          [SameLevelAs <type name>...]
38 //          [Unordered]
39 //      End
40 //
41 // For example:
42 //      Crst Foo
43 //          AcquiredBefore Bar
44 //          AcquiredAfter Zob Baz
45 //          SameLevelAs Foo
46 //      End
47 //
48 // This introduces a new Crst type Foo (CrstFoo inside the runtime). This type may be legally acquired when
49 // the current thread holds Crst instances of type Zob, Bar or even other instances of Foo. While Foo is held
50 // it is legal to acquire Crsts of type Bar. Assuming that this definition does not introduce any dependency
51 // cycles, CrstTypeTool will assign a numeric rank to CrstFoo that maximizes the chance that any other Crst
52 // type interaction you didn't explicitly specify (e.g. holding Foo while taking a Crst of type Wibble) will
53 // generate a ranking violation assert in the checked build.
54 //
55 // Note that the following set of definitions:
56 //      Crst A AcquiredBefore B End
57 //      Crst B End
58 //
59 //      Crst A End
60 //      Crst B AcquiredAfter A End
61 //
62 //      Crst A AcquiredBefore B End
63 //      Crst B AcquiredAfter A End
64 //
65 // are all equivalent. You are free to use whichever variant seems clearest to you (CrstTypeTool will tell you
66 // if you introduce conflicting rules). Similarly "A SameLevelAs B" implies "B SameLevelAs A". The initial
67 // contents of this file uses AcquiredBefore in preference to AcquiredAfter purely because it was generated
68 // automatically by a profiling mechanism (the initial rules were seeded from observations of Crst usage while
69 // running our test suites). Feel free to add meaningful comments to existing rules if you feel they can
70 // usefully clarify the reasons for particular dependencies.
71 //
72 // CrstTypeTool is a csScript file at file:..\..\bin\CrstTypeTool.csScript. Simply typing "CrstTypeTool" from a
73 // clrenv command window prompt should rebuild file:CrstTypes.h from the current CrstTypes.def (again,
74 // remember to check out CrstTypes.h first).
75 // Note: If you cannot run the script from command line, because of this error:
76 //     Script language type is unsupported.
77 //     Use /? for more help on usage.
78 // Or because .csscript extension is not associated with anything on your machine,
79 // Then use "csc.exe CrstTypeTool.csscript" from ClrEnv environment and run the resulting executable.
80 //
81 // Each Crst type definition is currently in alphabetical order. Please maintain this convention.
82 //
83
84 Crst AllowedFiles
85     AcquiredBefore JumpStubCache UniqueStack
86 End
87
88 Crst AppDomainCache
89     AcquiredBefore FusionBindContext FusionLoadContext LoaderHeap UniqueStack UnresolvedClassLock
90 End
91
92 Crst AppDomainHandleTable
93     AcquiredBefore AvailableParamTypes HandleTable IbcProfile SyncBlockCache SystemDomainDelayedUnloadList
94                    ThreadStore SystemDomain
95 End
96
97 Crst ArgBasedStubCache
98 End
99
100 Crst AssemblyIdentityCache
101 End
102
103 Crst AssemblyLoader
104     AcquiredBefore DeadlockDetection UniqueStack
105 End
106
107 Crst AvailableClass
108     AcquiredBefore LoaderHeap
109 End
110
111 Crst AssemblyDependencyGraph
112 End
113
114 Crst AvailableParamTypes
115     AcquiredBefore FusionBindContext FusionLoadContext IbcProfile LoaderHeap
116 End
117
118 Crst BaseDomain
119     AcquiredBefore LoaderHeap UniqueStack
120 End
121
122 Crst CCompRC
123     Unordered
124 End
125
126 Crst Cer
127     AcquiredBefore JumpStubCache UniqueStack
128 End
129
130 Crst ClassFactInfoHash
131     AcquiredBefore SyncBlockCache ThreadStore
132 End
133
134 Crst ClassInit
135     AcquiredBefore DeadlockDetection IbcProfile
136     SameLevelAs Jit
137 End
138
139 Crst ClrNotification
140     Unordered
141 End
142
143 Crst CrstCLRPrivBinderLocalWinMDPath
144 End
145
146 Crst CLRPrivBinderMaps
147 End
148
149 Crst CLRPrivBinderMapsAdd
150     AcquiredBefore CLRPrivBinderMaps
151 End
152
153 Crst COMWrapperCache
154     AcquiredBefore HandleTable UniqueStack
155 End
156
157 Crst ConnectionNameTable
158 End
159
160 Crst Contexts
161     AcquiredBefore AvailableParamTypes Cer ClassInit DeadlockDetection DomainLocalBlock FuncPtrStubs
162                    GlobalStrLiteralMap Jit LoaderHeap ModuleLookupTable RWLock SigConvert SingleUseLock
163                    StubUnwindInfoHeapSegments SyncBlockCache TypeIDMap UnresolvedClassLock FusionClosure
164 End
165
166 Crst CoreCLRBinderLog
167         Unordered
168 End
169
170 Crst CSPCache
171     AcquiredBefore JumpStubCache 
172 End
173
174 Crst DeadlockDetection
175 End
176
177 Crst DebuggerController
178     // AcquiredBefore DebuggerHeapLock DebuggerJitInfo LoaderHeap
179     
180     // See bug: 581892. This has a conflict with CrstInstMethodHashTableRanking.     
181     // The controller logic will be moved to OOP in V3, and so this lock will no longer be necessary.
182     // Fixing this in-proc would be difficult, and it would all be throwaway as we go oop.
183     Unordered
184 End
185
186 // This is a leaf debugger lock. 
187 Crst DebuggerFavorLock
188     AcquiredAfter DebuggerJitInfo DebuggerMutex
189 End
190
191 // This is the lock used by the DebuggerHeapExecutableMemoryAllocator for allocating/freeing memory.
192 Crst DebuggerHeapExecMemLock
193 End
194
195 // Debugger Heap lock is the smallest of the debugger locks.
196 Crst DebuggerHeapLock
197     AcquiredAfter DebuggerFavorLock DebuggerJitInfo DebuggerMutex
198     // Disabled per bug 581892
199     // AcquiredAfter DebuggerController 
200 End
201
202 Crst DebuggerJitInfo
203     AcquiredBefore DebuggerHeapLock
204 End
205
206 // This is the major debugger lock. 
207 // It's the largest of the debugger locks.
208 Crst DebuggerMutex
209     AcquiredBefore AvailableParamTypes ConnectionNameTable 
210                    DynamicIL LoaderHeap ModuleLookupTable ThreadStore                   
211
212     // Disabled per bug 581892
213     // AcquiredBefore DebuggerController 
214     AcquiredBefore DebuggerHeapLock DebuggerJitInfo
215
216 End
217
218 // This lock is used only for testing data consistency (see code:DataTest::TestDataSafety) 
219 // and is released before taking any other lock except for CrstDataTest2
220 Crst DataTest1
221     AcquiredAfter DebuggerMutex
222 End
223
224 // This lock is used only for testing data consistency (see code:DataTest::TestDataSafety) 
225 // and is released before taking any other lockCrst DataTest2
226 Crst DataTest2
227     AcquiredAfter DataTest1
228 End
229
230
231 Crst DbgTransport
232 End
233
234 Crst DelegateToFPtrHash
235 End
236
237 Crst DomainLocalBlock
238     AcquiredBefore AppDomainHandleTable IbcProfile LoaderHeap SystemDomainDelayedUnloadList UniqueStack
239 End
240
241 Crst DynamicIL
242 End
243
244 Crst DynamicMT
245     AcquiredBefore IbcProfile
246 End
247
248 Crst DynLinkZapItems
249     AcquiredBefore LoaderHeap
250 End
251
252 Crst EventStore
253 End
254
255 Crst Exception
256 End
257
258 Crst ExecuteManLock
259     AcquiredBefore UniqueStack
260 End
261
262 Crst ExecuteManRangeLock
263 End
264
265 Crst FCall
266     AcquiredBefore LoaderHeap
267 End
268
269 Crst RetThunkCache
270     AcquiredBefore LoaderHeap
271 End
272
273 Crst FriendAccessCache
274     AcquiredBefore JumpStubCache UniqueStack
275 End
276
277 Crst FuncPtrStubs
278     AcquiredBefore IbcProfile LoaderHeap UniqueStack CodeFragmentHeap JumpStubCache PatchEntryPoint
279 End
280
281 Crst FusionAppCtx
282     AcquiredBefore FusionPolicyConfigPool FusionSingleUse  FusionAssemblyDownload
283 End
284
285 Crst FusionAssemblyDownload
286     AcquiredBefore FusionDownload UniqueStack
287 End
288
289 Crst FusionBindResult
290 End
291
292 Crst FusionClb
293 End
294
295 Crst FusionClosure
296     AcquiredBefore FusionBindContext FusionLoadContext FusionAppCtx FusionClosureGraph DomainLocalBlock ModuleFixup
297 End
298
299 Crst FusionClosureGraph
300     AcquiredBefore FusionAppCtx FusionBindContext FusionLoadContext
301 End
302
303 Crst FusionConfigSettings
304 End
305
306 Crst FusionDownload
307 End
308
309 Crst FusionLoadContext
310     AcquiredBefore PEImage
311 End
312
313 Crst FusionBindContext
314     AcquiredBefore PEImage
315 End
316
317 Crst FusionLog
318     AcquiredBefore IbcProfile UniqueStack
319 End
320
321 Crst FusionWarningLog
322     AcquiredBefore FusionBindContext FusionLoadContext FusionLog
323 End
324
325 Crst FusionNgenIndex
326     AcquiredBefore SystemDomainDelayedUnloadList
327 End
328
329 Crst FusionNgenIndexPool
330     AcquiredBefore SystemDomainDelayedUnloadList
331 End
332
333 Crst FusionPcyCache
334 End
335
336 Crst FusionPolicyConfigPool
337      AcquiredBefore UniqueStack
338 End
339
340 Crst FusionSingleUse
341     AcquiredBefore PEImage
342 End
343
344 Crst FusionIsoLibInit
345 End
346
347 Crst NativeBinderInit
348     Unordered
349 End
350
351 Crst NativeImageCache
352     Unordered
353 End
354
355 Crst GCMemoryPressure
356 End
357
358 Crst GlobalStrLiteralMap
359     AcquiredBefore HandleTable IbcProfile SyncBlockCache SystemDomainDelayedUnloadList ThreadStore UniqueStack
360 End
361
362 Crst HandleTable
363     SameLevelAs HandleTable
364 End
365
366 Crst HostAssemblyMap
367 End
368
369 Crst HostAssemblyMapAdd
370     AcquiredBefore HostAssemblyMap
371 End
372
373 Crst IbcProfile
374 End
375
376 Crst IJWFixupData
377     AcquiredBefore FuncPtrStubs IJWHash LoaderHeap
378 End
379
380 Crst IJWHash
381 End
382
383 Crst ILStubGen
384     AcquiredBefore DeadlockDetection UniqueStack
385 End
386
387 Crst InstMethodHashTable
388     AcquiredBefore FusionBindContext FusionLoadContext LoaderHeap UniqueStack JumpStubCache
389 End
390
391 Crst InterfaceVTableMap
392 End
393
394 Crst Interop
395     AcquiredBefore AppDomainHandleTable AvailableParamTypes Cer ClassInit DeadlockDetection DomainLocalBlock
396                    HandleTable InstMethodHashTable InteropData JitGenericHandleCache LoaderHeap SigConvert
397                    StubDispatchCache StubUnwindInfoHeapSegments SyncBlockCache TypeIDMap UnresolvedClassLock
398 End
399
400 Crst InteropData
401     AcquiredBefore LoaderHeap UniqueStack
402 End
403
404 Crst IOThreadpoolWorker
405     AcquiredBefore ThreadIdDispenser ThreadStore
406 End
407
408 Crst IsJMCMethod
409 End
410
411 Crst ISymUnmanagedReader
412     AcquiredBefore PEImagePDBStream UniqueStack JumpStubCache
413 End
414
415 Crst Jit
416     AcquiredBefore DeadlockDetection JumpStubCache
417     SameLevelAs ClassInit
418 End
419
420 Crst JitGenericHandleCache
421 End
422
423 Crst JitPerf
424     Unordered
425 End
426
427 Crst JumpStubCache
428     AcquiredBefore ExecuteManRangeLock LoaderHeap SingleUseLock
429     AcquiredAfter AppDomainCache ExecuteManLock FusionAssemblyDownload FusionNgenIndex FusionNgenIndexPool 
430                   ILStubGen SharedBaseDomain ThreadpoolTimerQueue ThreadpoolWaitThreads 
431                   TPMethodTable TypeIDMap BaseDomain AssemblyLoader
432 End
433
434 Crst ListLock
435     Unordered
436 End
437
438 // Leaflock leveling, used for crsts that explicitly want to be a leaf lock
439 Crst LeafLock
440 End
441
442 Crst LoaderAllocator
443     AcquiredBefore AppDomainHandleTable HandleTable UniqueStack ThreadStore
444     AcquiredAfter DomainLocalBlock
445 End
446
447 Crst LoaderAllocatorReferences
448     AcquiredBefore LoaderAllocator
449     AcquiredAfter PendingTypeLoadEntry InstMethodHashTable
450 End
451
452 Crst AssemblyList
453     AcquiredAfter LoaderAllocatorReferences ThreadStore AssemblyLoader
454 End
455
456 Crst LoaderHeap
457 End
458
459 Crst Mda
460 End
461
462 Crst MetadataTracker
463     Unordered
464 End
465
466 Crst StubCache
467     AcquiredBefore LoaderHeap
468 End
469
470 Crst ModIntPairList
471 End
472
473 Crst Module
474     AcquiredBefore LoaderHeap UniqueStack
475 End
476
477 Crst ModuleFixup
478     AcquiredBefore AppDomainHandleTable GlobalStrLiteralMap IbcProfile SyncBlockCache
479 End
480
481 Crst ModuleLookupTable
482     AcquiredBefore LoaderHeap
483 End
484
485 Crst MUThunkHash
486 End
487
488 Crst Nls
489 End
490
491 Crst ObjectList
492     SameLevelAs ObjectList
493 End
494
495 Crst OnEventManager
496 End
497
498 Crst PatchEntryPoint
499 End
500
501 Crst PEFileSecurityManager
502 End
503
504 Crst PEImage
505     AcquiredBefore UniqueStack
506 End
507
508 Crst ILFingerprintCache
509     AcquiredBefore PEImage
510 End
511
512 Crst PEImagePDBStream
513 End
514
515 Crst PendingTypeLoadEntry
516     AcquiredBefore AppDomainCache AppDomainHandleTable AssemblyLoader AvailableClass AvailableParamTypes
517                    BaseDomain ClassInit DeadlockDetection DebuggerController DebuggerJitInfo DebuggerMutex
518                    DomainLocalBlock DynLinkZapItems Exception ExecuteManRangeLock FuncPtrStubs
519                    FusionAppCtx FusionAssemblyDownload FusionBindResult FusionClosure FusionDownload
520                    FusionBindContext FusionLoadContext FusionNgenIndex FusionNgenIndexPool FusionPcyCache
521                    FusionPolicyConfigPool FusionSingleUse GlobalStrLiteralMap HandleTable IbcProfile
522                    IJWFixupData IJWHash ISymUnmanagedReader Jit JumpStubCache LoaderHeap ModIntPairList
523                    Module ModuleLookupTable PEImage SecurityStackwalkCache SharedAssemblyCreate
524                    SharedBaseDomain SigConvert SingleUseLock StubDispatchCache StubUnwindInfoHeapSegments
525                    SyncBlockCache SystemDomain ThreadIdDispenser ThreadStore TypeIDMap UnresolvedClassLock
526     SameLevelAs PendingTypeLoadEntry
527 End
528
529 Crst PinHandle
530 End
531
532 // ProfilerGCRefDataFreeList synchronizes access to the profiler API's list of
533 // free, previously allocated structures that track moved references and
534 // root references during a GC.
535 Crst ProfilerGCRefDataFreeList
536 End
537
538 // ProfilingAPIStatus serializes attempts to transition the global status
539 // from state to state, and access to the ProfilerDetachInfo structure
540 // between the thread executing DetachProfiler(), and the DetachThread
541 // carrying out the evacuation order.
542 Crst ProfilingAPIStatus
543 End
544
545 Crst PublisherCertificate
546 End
547
548 Crst RCWCache
549     AcquiredBefore IbcProfile LoaderHeap RCWCleanupList
550 End
551
552 Crst RCWRefCache
553     AcquiredBefore HandleTable
554 End
555
556 Crst RCWCleanupList
557 End
558
559 Crst ReDacl
560 End
561
562 Crst Reflection
563     AcquiredBefore LoaderHeap UnresolvedClassLock
564 End
565
566 // Used to synchronize all rejit information stored in a given AppDomain.  One of these
567 // crsts exist per domain (except the SharedDomain--see below)
568 Crst ReJITDomainTable
569     AcquiredBefore LoaderHeap SingleUseLock DeadlockDetection JumpStubCache DebuggerController
570     AcquiredAfter ReJITGlobalRequest ThreadStore GlobalStrLiteralMap SystemDomain DebuggerMutex
571 End
572
573 // Same as ReJITDomainTable, but this is for the SharedDomain's ReJitManager.  Only
574 // reason we have a special type for the SharedDomain's ReJitManager is so that we can
575 // explicitly level this guy differently from ReJITDomainTable, so that both the
576 // SharedDomain's ReJitManager table lock AND one non-SharedDomain's ReJitManager table
577 // lock may be held simultaneously.  This is useful during ETW rundown.
578 Crst ReJITSharedDomainTable
579     AcquiredBefore ReJITDomainTable
580     AcquiredAfter ReJITGlobalRequest ThreadStore GlobalStrLiteralMap SystemDomain DebuggerMutex
581 End
582
583 // Used to synchronize all global requests (which may span multiple AppDomains) which add
584 // new functions to rejit tables, or request Reverts on existing functions in the rejit
585 // tables.  One of these crsts exist per runtime.
586 Crst ReJITGlobalRequest
587     AcquiredBefore ThreadStore ReJITSharedDomainTable ReJITDomainTable SystemDomain
588 End
589
590 // ETW infrastructure uses this crst to protect a hash table of TypeHandles which is
591 // used to remember which types have been logged (to avoid duplicate logging of the
592 // same type).
593 Crst EtwTypeLogHash
594     AcquiredAfter ThreadStore AllowedFiles Cer TPMethodTable
595     AcquiredBefore AvailableParamTypes ConnectionNameTable DeadlockDetection DebuggerController 
596                DebuggerHeapLock DebuggerJitInfo DynamicIL ExecuteManRangeLock HandleTable IbcProfile
597                JitGenericHandleCache JumpStubCache LoaderHeap ModuleLookupTable ProfilingAPIStatus
598                ProfilerGCRefDataFreeList RWLock SingleUseLock SyncBlockCache SystemDomainDelayedUnloadList
599                ThreadIdDispenser ThreadStaticDataHashTable
600 End
601
602 Crst Remoting
603     AcquiredBefore AppDomainHandleTable AvailableParamTypes Cer ClassInit DeadlockDetection DebuggerController
604                    DebuggerHeapLock DebuggerJitInfo DebuggerMutex DomainLocalBlock ExecuteManRangeLock
605                    FuncPtrStubs GlobalStrLiteralMap HandleTable InstMethodHashTable Jit JitGenericHandleCache
606                    JumpStubCache LoaderHeap StubCache Module ModuleLookupTable SecurityStackwalkCache SigConvert
607                    SingleUseLock StubUnwindInfoHeapSegments SyncBlockCache SystemDomainDelayedUnloadList
608                    ThreadStore UnresolvedClassLock PendingTypeLoadEntry
609 End
610
611 Crst RWLock
612 End
613
614 Crst SavedExceptionInfo
615     AcquiredBefore DebuggerController
616 End
617
618 Crst SaveModuleProfileData
619 End
620
621 Crst SecurityPolicyCache
622 End
623
624 Crst SecurityPolicyInit
625     AcquiredBefore SecurityPolicyCache
626 End
627
628 Crst SecurityStackwalkCache
629 End
630
631 Crst SharedAssemblyCreate
632     AcquiredBefore DeadlockDetection UniqueStack
633 End
634
635 Crst SharedBaseDomain
636     AcquiredBefore UniqueStack
637 End
638
639 Crst SigConvert
640     AcquiredBefore LoaderHeap
641 End
642
643 Crst SingleUseLock
644     AcquiredBefore ExecuteManRangeLock LoaderHeap UniqueStack DebuggerJitInfo
645 End
646
647 Crst UnwindInfoTableLock
648         AcquiredAfter StubUnwindInfoHeapSegments SingleUseLock
649     AcquiredBefore StressLog
650 End
651
652 Crst SpecialStatics
653 End
654
655 Crst StressLog
656     Unordered
657 End
658
659 Crst StrongName
660 End
661
662 Crst CodeFragmentHeap
663     AcquiredBefore SingleUseLock
664 End
665
666 Crst StubDispatchCache
667 End
668
669 Crst StubUnwindInfoHeapSegments
670     AcquiredAfter StubCache
671 End
672
673 Crst SyncBlockCache
674     AcquiredBefore ThreadIdDispenser
675 End
676
677 Crst SyncHashLock
678 End
679
680 Crst SystemBaseDomain
681 End
682
683 Crst SystemDomain
684     AcquiredBefore DebuggerMutex HandleTable IbcProfile SaveModuleProfileData SecurityPolicyCache
685                    ThreadIdDispenser ThreadStore
686 End
687
688 Crst SystemDomainDelayedUnloadList
689 End
690
691 Crst ThreadIdDispenser
692 End
693
694 Crst ThreadpoolEventCache
695 End
696
697 Crst ThreadpoolTimerQueue
698     AcquiredBefore UniqueStack
699 End
700
701 Crst ThreadpoolWaitThreads
702     AcquiredBefore UniqueStack
703 End
704
705 Crst ThreadpoolWorker
706     AcquiredBefore ThreadIdDispenser ThreadStore
707 End
708
709 Crst ThreadStaticDataHashTable
710     AcquiredBefore SyncBlockCache
711 End
712
713 Crst ThreadStore
714     AcquiredBefore AvailableParamTypes ConnectionNameTable DeadlockDetection DebuggerController 
715                    DebuggerHeapLock DebuggerJitInfo DynamicIL ExecuteManRangeLock HandleTable IbcProfile
716                    JitGenericHandleCache JumpStubCache LoaderHeap ModuleLookupTable ProfilingAPIStatus
717                    ProfilerGCRefDataFreeList RWLock SingleUseLock SyncBlockCache SystemDomainDelayedUnloadList
718                    ThreadIdDispenser ThreadStaticDataHashTable
719 End
720
721 Crst TPMethodTable
722     AcquiredBefore DebuggerHeapLock LoaderHeap UniqueStack AvailableParamTypes
723 End
724
725 Crst TypeIDMap
726     AcquiredBefore UniqueStack
727 End
728
729 Crst TypeEquivalenceMap
730     AcquiredBefore LoaderHeap
731 End
732
733 Crst UMThunkHash
734 End
735
736 Crst UniqueStack
737     AcquiredBefore LoaderHeap
738 End
739
740 Crst UnresolvedClassLock
741     AcquiredBefore AvailableParamTypes DynLinkZapItems IbcProfile JumpStubCache
742 End
743
744 Crst WrapperTemplate
745     AcquiredBefore IbcProfile
746 End
747
748 Crst UMEntryThunkCache
749     AcquiredBefore LoaderHeap
750 End
751
752 Crst PinnedByrefValidation
753 End
754
755 Crst AssemblyUsageLog
756 End
757
758 Crst VSDIndirectionCellLock
759     AcquiredBefore LoaderHeap
760 End
761
762 Crst MulticoreJitHash
763 End
764
765 Crst MulticoreJitManager
766     AcquiredBefore MulticoreJitHash ThreadStore
767 End
768
769 Crst WinRTFactoryCache
770     AcquiredBefore HandleTable    
771 End
772
773 Crst SqmManager 
774 End
775
776 Crst StackSampler
777 End
778
779 Crst InlineTrackingMap
780     AcquiredBefore IbcProfile
781 End
782
783 Crst EventPipe
784     AcquiredBefore ThreadIdDispenser ThreadStore DomainLocalBlock InstMethodHashTable
785 End