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