- 
                Notifications
    
You must be signed in to change notification settings  - Fork 5.2k
 
Closed
Description
- Start an ETW session, enabling the .NET runtime provider with GCHeapDump and Type keywords
- For example, collect with PerfView and set additional providers to 
Microsoft-Windows-DotNETRuntime:GCHeapDumpKeyword|TypeKeyword:Verbose 
 - For example, collect with PerfView and set additional providers to 
 - Run a nativeaot app that has 
<EventSourceSupport>true</EventSourceSupport>and does a GC (explicit call or otherwise)- The ETW session is for the machine, so regardless of whether whoever started the session cares about the nativeaot app, the app is affected.
 
 
App crashes trying to get the type manager from a method table. The runtime is trying to use the GCStaticEEType method table, which is intentionally not fully populated.
> helloworld.exe!TypeManagerHandle::AsTypeManager() Line 105
  helloworld.exe!BulkTypeEventLogger::LogSingleType(MethodTable * pEEType) Line 252
  helloworld.exe!BulkTypeEventLogger::LogTypeAndParameters(unsigned __int64 thAsAddr, ETW::TypeSystemLog::TypeLogBehavior typeLogBehavior) Line 54
  helloworld.exe!ETW::TypeSystemLog::LogTypeAndParametersIfNecessary(BulkTypeEventLogger * pLogger, unsigned __int64 thAsAddr, ETW::TypeSystemLog::TypeLogBehavior typeLogBehavior) Line 357
  helloworld.exe!ETW::GCLog::ObjectReference(ProfilerWalkHeapContext * profilerWalkHeapContext, Object * pObjReferenceSource, unsigned __int64 typeID, unsigned __int64 cRefs, Object * * rgObjReferenceTargets) Line 1046
  helloworld.exe!HeapWalkHelper(Object * pBO, void * pvContext) Line 188
  helloworld.exe!WKS::gc_heap::walk_heap_per_heap(bool(*)(Object *, void *) fn, void * context, int gen_number, int walk_large_object_heap_p) Line 51537
  helloworld.exe!WKS::gc_heap::walk_heap(bool(*)(Object *, void *) fn, void * context, int gen_number, int walk_large_object_heap_p) Line 51563
  helloworld.exe!WKS::GCHeap::DiagWalkHeap(bool(*)(Object *, void *) fn, void * context, int gen_number, bool walk_large_object_heap_p) Line 51617
  helloworld.exe!GCProfileWalkHeapWorker(int fShouldWalkHeapRootsForEtw, int fShouldWalkHeapObjectsForEtw) Line 897
  helloworld.exe!GCProfileWalkHeap() Line 927
  helloworld.exe!GCToEEInterface::DiagGCEnd(unsigned __int64 index, int gen, int reason, bool fConcurrent) Line 955
  helloworld.exe!WKS::gc_heap::do_post_gc() Line 49754
cc @LakshanF
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
No status