Closed
Description
Hi there,
We started to use ICorProfilerInfo14::GetNonGCHeapBounds
and got permanent red tests on:
- Windows ARM64 for some kinds of x64 and x86 processes
- macOS ARM64 for some kinds of x64 processes
I think the deadlock appears because we call ICorProfilerInfo14::GetNonGCHeapBounds
during the initialization of the execution engine.
Stack trace:
0:000:ARM64EC> ~* k
. 0 Id: 44b8.57b8 Suspend: 1 Teb: 000000e3`ff155000 Unfrozen
# Arch Child-SP RetAddr Call Site
00 ARM64EC 000000e3`fefde6f0 00007ffd`12e65334 ntdll!#NtWaitForSingleObject+0x14
01 ARM64EC 000000e3`fefde700 00007ffd`12f93444 KERNELBASE!WaitForSingleObjectEx+0x84
02 ARM64EC 000000e3`fefde790 00007ffc`97779e4d KERNELBASE!$ientry_thunk$cdecl$i8$i8+0x24
03 AMD64 (Inline Function) --------`-------- coreclr!GCEvent::Impl::Wait+0xc [D:\a\_work\1\s\src\coreclr\gc\windows\gcenv.windows.cpp @ 1372]
04 AMD64 (Inline Function) --------`-------- coreclr!GCEvent::Wait+0x13 [D:\a\_work\1\s\src\coreclr\gc\windows\gcenv.windows.cpp @ 1422]
05 AMD64 000000e3`fefde840 00007ffc`979078ea coreclr!WKS::gc_heap::wait_for_gc_done+0x29 [D:\a\_work\1\s\src\coreclr\gc\gc.cpp @ 14543]
06 AMD64 (Inline Function) --------`-------- coreclr!WKS::WaitLonger+0x44 [D:\a\_work\1\s\src\coreclr\gc\gc.cpp @ 1635]
07 AMD64 (Inline Function) --------`-------- coreclr!WKS::enter_spin_lock+0xa6e85 [D:\a\_work\1\s\src\coreclr\gc\gc.cpp @ 1690]
08 AMD64 000000e3`fefde870 00007ffc`97860a17 coreclr!WKS::gc_heap::insert_ro_segment+0xa6eba [D:\a\_work\1\s\src\coreclr\gc\gc.cpp @ 9868]
09 AMD64 000000e3`fefde8c0 00007ffc`97864178 coreclr!WKS::GCHeap::RegisterFrozenSegment+0x87 [D:\a\_work\1\s\src\coreclr\gc\gcee.cpp @ 466]
0a AMD64 000000e3`fefde8f0 00007ffc`9778c21f coreclr!FrozenObjectSegment::FrozenObjectSegment+0xb0 [D:\a\_work\1\s\src\coreclr\vm\frozenobjectheap.cpp @ 149]
0b AMD64 000000e3`fefde950 00007ffc`9778bc46 coreclr!FrozenObjectHeapManager::TryAllocateObject+0x15f [D:\a\_work\1\s\src\coreclr\vm\frozenobjectheap.cpp @ 66]
0c AMD64 (Inline Function) --------`-------- coreclr!AllocateString+0x4d [D:\a\_work\1\s\src\coreclr\vm\gchelpers.cpp @ 971]
0d AMD64 (Inline Function) --------`-------- coreclr!AllocateStringObject+0x54 [D:\a\_work\1\s\src\coreclr\vm\stringliteralmap.cpp @ 472]
0e AMD64 000000e3`fefde9d0 00007ffc`9778ba9d coreclr!GlobalStringLiteralMap::AddStringLiteral+0x76 [D:\a\_work\1\s\src\coreclr\vm\stringliteralmap.cpp @ 503]
0f AMD64 (Inline Function) --------`-------- coreclr!GlobalStringLiteralMap::GetStringLiteral+0x5a [D:\a\_work\1\s\src\coreclr\vm\stringliteralmap.cpp @ 396]
10 AMD64 000000e3`fefdeae0 00007ffc`977cbb22 coreclr!StringLiteralMap::GetStringLiteral+0xdd [D:\a\_work\1\s\src\coreclr\vm\stringliteralmap.cpp @ 170]
11 AMD64 000000e3`fefdeb40 00007ffc`977cbaa8 coreclr!LoaderAllocator::GetStringObjRefPtrFromUnicodeString+0x4e [D:\a\_work\1\s\src\coreclr\vm\loaderallocator.cpp @ 1751]
12 AMD64 000000e3`fefdeb80 00007ffc`977cba5d coreclr!StringObject::InitEmptyStringRefPtr+0x48 [D:\a\_work\1\s\src\coreclr\vm\object.cpp @ 859]
13 AMD64 000000e3`fefdebd0 00007ffc`977cb9f5 coreclr!StringObject::GetEmptyString+0x1d [D:\a\_work\1\s\src\coreclr\vm\object.h @ 989]
14 AMD64 000000e3`fefdec00 00007ffc`97812877 coreclr!AppDomain::SetupSharedStatics+0x51 [D:\a\_work\1\s\src\coreclr\vm\appdomain.cpp @ 3059]
15 AMD64 000000e3`fefdec40 00007ffc`9783c5a3 coreclr!EEStartupHelper+0x697 [D:\a\_work\1\s\src\coreclr\vm\ceemain.cpp @ 933]
16 AMD64 000000e3`fefdee60 00007ffc`9783c54a coreclr!EEStartup+0x27 [D:\a\_work\1\s\src\coreclr\vm\ceemain.cpp @ 1051]
17 AMD64 000000e3`fefdeeb0 00007ffc`9783c488 coreclr!EnsureEEStarted+0x92 [D:\a\_work\1\s\src\coreclr\vm\ceemain.cpp @ 300]
18 AMD64 000000e3`fefdef00 00007ffc`9784d040 coreclr!CorHost2::Start+0x58 [D:\a\_work\1\s\src\coreclr\vm\corhost.cpp @ 101]
19 AMD64 000000e3`fefdef40 00007ffc`c47335b0 coreclr!coreclr_initialize+0x180 [D:\a\_work\1\s\src\coreclr\dlls\mscoree\exports.cpp @ 320]
1a AMD64 000000e3`fefdf010 00007ffc`c4752068 hostpolicy!coreclr_t::create+0x2b0 [D:\a\_work\1\s\src\native\corehost\hostpolicy\coreclr.cpp @ 73]
1b AMD64 000000e3`fefdf190 00007ffc`c4753c37 hostpolicy!`anonymous namespace'::create_coreclr+0x158 [D:\a\_work\1\s\src\native\corehost\hostpolicy\hostpolicy.cpp @ 82]
1c AMD64 000000e3`fefdf1f0 00007ffc`c5a2b5ac hostpolicy!corehost_main+0x187 [D:\a\_work\1\s\src\native\corehost\hostpolicy\hostpolicy.cpp @ 427]
1d AMD64 000000e3`fefdf2f0 00007ffc`c5a2e166 hostfxr!execute_app+0x2ac [D:\a\_work\1\s\src\native\corehost\fxr\fx_muxer.cpp @ 145]
1e AMD64 000000e3`fefdf3f0 00007ffc`c5a30316 hostfxr!`anonymous namespace'::read_config_and_execute+0xa6 [D:\a\_work\1\s\src\native\corehost\fxr\fx_muxer.cpp @ 532]
1f AMD64 000000e3`fefdf4e0 00007ffc`c5a2e744 hostfxr!fx_muxer_t::handle_exec_host_command+0x166 [D:\a\_work\1\s\src\native\corehost\fxr\fx_muxer.cpp @ 1007]
20 AMD64 000000e3`fefdf590 00007ffc`c5a28533 hostfxr!fx_muxer_t::execute+0x494 [D:\a\_work\1\s\src\native\corehost\fxr\fx_muxer.cpp @ 578]
21 AMD64 000000e3`fefdf6d0 00007ff6`51ec3399 hostfxr!hostfxr_main_startupinfo+0xb3 [D:\a\_work\1\s\src\native\corehost\fxr\hostfxr.cpp @ 61]
22 AMD64 000000e3`fefdf7d0 00007ff6`51ec3706 DetectMemoryLeak!exe_start+0x859 [D:\a\_work\1\s\src\native\corehost\corehost.cpp @ 242]
23 AMD64 000000e3`fefdf9a0 00007ff6`51ec4c58 DetectMemoryLeak!wmain+0xa6 [D:\a\_work\1\s\src\native\corehost\corehost.cpp @ 313]
24 AMD64 (Inline Function) --------`-------- DetectMemoryLeak!invoke_main+0x22 [D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl @ 90]
25 AMD64 000000e3`fefdf9d0 00007ffd`1535f0cc DetectMemoryLeak!__scrt_common_main_seh+0x10c [D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl @ 288]
26 ARM64EC 000000e3`fefdfa10 00007ffd`152f6020 KERNEL32!$iexit_thunk$cdecl$i8$i8+0x1c
27 ARM64EC 000000e3`fefdfa40 00007ffd`17188308 KERNEL32!#BaseThreadInitThunk+0x30
28 ARM64EC 000000e3`fefdfa50 00000000`00000000 ntdll!#RtlUserThreadStart+0x48
15 Id: 44b8.5344 Suspend: 1 Teb: 000000e3`ff173000 Unfrozen
# Arch Child-SP RetAddr Call Site
00 ARM64EC 000000e3`822fe530 00007ffd`171cd188 ntdll!#NtWaitForAlertByThreadId+0x14
01 ARM64EC 000000e3`822fe540 00007ffd`171cc5e8 ntdll!#RtlpWaitOnCriticalSection+0x390
02 ARM64EC 000000e3`822fe650 00007ffd`171ca580 ntdll!#RtlpEnterCriticalSectionContended+0x308
03 ARM64EC 000000e3`822fe6d0 00007ffd`1727e654 ntdll!#RtlEnterCriticalSection+0x70
04 ARM64EC 000000e3`822fe6f0 00007ffc`9776b55a ntdll!$ientry_thunk$cdecl$i8$i8+0x24
05 AMD64 000000e3`822fe7a0 00007ffc`979b04e4 coreclr!CrstBase::Enter+0x5a [D:\a\_work\1\s\src\coreclr\vm\crst.cpp @ 328]
06 AMD64 (Inline Function) --------`-------- coreclr!CrstBase::AcquireLock+0x8 [D:\a\_work\1\s\src\coreclr\vm\crst.h @ 187]
07 AMD64 (Inline Function) --------`-------- coreclr!CrstBase::CrstHolder::{ctor}+0xd [D:\a\_work\1\s\src\coreclr\vm\crst.h @ 378]
08 AMD64 000000e3`822fe7d0 00007ffc`83bf8a97 coreclr!ProfToEEInterfaceImpl::GetNonGCHeapBounds+0x44 [D:\a\_work\1\s\src\coreclr\vm\proftoeeinterfaceimpl.cpp @ 7676]
09 AMD64 000000e3`822fe810 00007ffc`83bf56f6 JetBrains_Profiler_Core!jbprof::GraphGatherer::get_non_gc_heaps+0xb7 [C:\Work\dotnet-products\Profiler\Native\Solution\core\src\profilers\memory\GraphGatherer.cpp @ 174]
0a AMD64 000000e3`822feb70 00007ffc`83c90510 JetBrains_Profiler_Core!jbprof::GraphGatherer::WriteGarbageCollectionStarted+0x206 [C:\Work\dotnet-products\Profiler\Native\Solution\core\src\profilers\memory\GraphGatherer.cpp @ 256]
0b AMD64 000000e3`822fee20 00007ffc`83c94f46 JetBrains_Profiler_Core!`jbprof::memory_profiler::GarbageCollectionStarted'::`10'::<lambda_2>::operator()+0x5b0 [C:\Work\dotnet-products\Profiler\Native\Solution\core\src\profilers\memory\memory_profiler.gc.cpp @ 341]
0c AMD64 000000e3`822ff010 00007ffc`83c8d786 JetBrains_Profiler_Core!jbprof::do_noexcept_log<`jbprof::memory_profiler::GarbageCollectionStarted'::`10'::<lambda_2>,`jbprof::memory_profiler::GarbageCollectionStarted'::`10'::<lambda_3> >+0x26 [C:\Work\dotnet-products\Profiler\Native\Solution\core\src\utility\do_noexcept_log.hpp @ 21]
0d AMD64 000000e3`822ff040 00007ffc`9796f587 JetBrains_Profiler_Core!jbprof::memory_profiler::GarbageCollectionStarted+0x2d6 [C:\Work\dotnet-products\Profiler\Native\Solution\core\src\profilers\memory\memory_profiler.gc.cpp @ 342]
0e AMD64 000000e3`822ff170 00007ffc`979a694b coreclr!EEToProfInterfaceImpl::GarbageCollectionStarted+0x7f [D:\a\_work\1\s\src\coreclr\vm\eetoprofinterfaceimpl.cpp @ 5866]
0f AMD64 000000e3`822ff1c0 00007ffc`978c5207 coreclr!ProfControlBlock::DoProfilerCallbackHelper<int (__cdecl*)(ProfilerInfo *),long (__cdecl*)(EEToProfInterfaceImpl *,int,int * const,enum __MIDL___MIDL_itf_corprof_0000_0001_0006),int,int *,enum __MIDL___MIDL_itf_corprof_0000_0001_0006>+0x3f [D:\a\_work\1\s\src\coreclr\inc\profilepriv.h @ 284]
10 AMD64 (Inline Function) --------`-------- coreclr!ProfControlBlock::DoOneProfilerIteration+0x5e [D:\a\_work\1\s\src\coreclr\inc\profilepriv.h @ 199]
11 AMD64 (Inline Function) --------`-------- coreclr!ProfControlBlock::IterateProfilers+0x5e [D:\a\_work\1\s\src\coreclr\inc\profilepriv.h @ 207]
12 AMD64 (Inline Function) --------`-------- coreclr!ProfControlBlock::DoProfilerCallback+0x6c [D:\a\_work\1\s\src\coreclr\inc\profilepriv.h @ 295]
13 AMD64 (Inline Function) --------`-------- coreclr!ProfControlBlock::GarbageCollectionStarted+0x6c [D:\a\_work\1\s\src\coreclr\inc\profilepriv.inl @ 1656]
14 AMD64 000000e3`822ff200 00007ffc`9779fc49 coreclr!GarbageCollectionStartedCallback+0x12555f [D:\a\_work\1\s\src\coreclr\vm\proftoeeinterfaceimpl.cpp @ 680]
15 AMD64 000000e3`822ff2a0 00007ffc`9779f4d0 coreclr!GCToEEInterface::DiagGCStart+0x1d [D:\a\_work\1\s\src\coreclr\vm\gcenv.ee.cpp @ 771]
16 AMD64 000000e3`822ff300 00007ffc`977a1cf9 coreclr!WKS::gc_heap::garbage_collect+0x16c [D:\a\_work\1\s\src\coreclr\gc\gc.cpp @ 23758]
17 AMD64 000000e3`822ff350 00007ffc`97a237b9 coreclr!WKS::GCHeap::GarbageCollectGeneration+0x141 [D:\a\_work\1\s\src\coreclr\gc\gc.cpp @ 50081]
18 AMD64 000000e3`822ff3a0 00007ffc`979d476e coreclr!WKS::GCHeap::GarbageCollect+0xc9 [D:\a\_work\1\s\src\coreclr\gc\gc.cpp @ 49252]
19 AMD64 000000e3`822ff3e0 00007ffc`979ab82f coreclr!ETW::GCLog::ForceGCForDiagnostics+0xc6 [D:\a\_work\1\s\src\coreclr\vm\eventtrace_gcheap.cpp @ 492]
1a AMD64 000000e3`822ff4b0 00007ffc`83c6c9a4 coreclr!ProfToEEInterfaceImpl::ForceGC+0x7f [D:\a\_work\1\s\src\coreclr\vm\proftoeeinterfaceimpl.cpp @ 4686]
1b AMD64 000000e3`822ff4e0 00007ffc`83c6d8eb JetBrains_Profiler_Core!jbprof::gc_command_queue::thread_data::force_gc_thread+0x264 [C:\Work\dotnet-products\Profiler\Native\Solution\core\src\profilers\memory\gc_command_queue.cpp @ 367]
1c AMD64 000000e3`822ff730 00007ffc`83c71996 JetBrains_Profiler_Core!`jbprof::gc_command_queue::raw_force_gc_thread'::`2'::<lambda_1>::operator()+0xab [C:\Work\dotnet-products\Profiler\Native\Solution\core\src\profilers\memory\gc_command_queue.cpp @ 303]
1d AMD64 000000e3`822ff7c0 00007ffc`83c7195b JetBrains_Profiler_Core!jbprof::do_noexcept_log<`jbprof::gc_command_queue::raw_force_gc_thread'::`2'::<lambda_1>,`jbprof::do_noexcept_log<`jbprof::gc_command_queue::raw_force_gc_thread'::`2'::<lambda_1> >'::`2'::<lambda_1> >+0x26 [C:\Work\dotnet-products\Profiler\Native\Solution\core\src\utility\do_noexcept_log.hpp @ 21]
1e AMD64 000000e3`822ff7f0 00007ffc`83c6c4ed JetBrains_Profiler_Core!jbprof::do_noexcept_log<`jbprof::gc_command_queue::raw_force_gc_thread'::`2'::<lambda_1> >+0x2b [C:\Work\dotnet-products\Profiler\Native\Solution\core\src\utility\do_noexcept_log.hpp @ 34]
1f AMD64 000000e3`822ff830 00007ffd`1535f0cc JetBrains_Profiler_Core!jbprof::gc_command_queue::raw_force_gc_thread+0x5d [C:\Work\dotnet-products\Profiler\Native\Solution\core\src\profilers\memory\gc_command_queue.cpp @ 305]
20 ARM64EC 000000e3`822ff890 00007ffd`152f6020 KERNEL32!$iexit_thunk$cdecl$i8$i8+0x1c
21 ARM64EC 000000e3`822ff8c0 00007ffd`17188308 KERNEL32!#BaseThreadInitThunk+0x30
22 ARM64EC 000000e3`822ff8d0 00000000`00000000 ntdll!#RtlUserThreadStart+0x48
Could you please fix before release?