Skip to content

dotnet.exe hangs on exit due to icu.dll  #89194

@joncham

Description

@joncham

Description

I am seeing an intermittent hang in dotnet.exe when exiting. The icu.dll is attempting to acquire a lock and block indefinitely. Callstack of hung process is:

>	ntdll.dll!NtWaitForAlertByThreadId()	Unknown
 	ntdll.dll!RtlpRunOnceWaitForInit()	Unknown
 	ntdll.dll!RtlRunOnceExecuteOnce()	Unknown
 	KernelBase.dll!InitOnceExecuteOnce()	Unknown
 	icu.dll!std::call_once<void (&)(void)>(struct std::once_flag &,void (&)(void))	Unknown
 	icu.dll!icu::UMutex::getMutex(void)	Unknown
 	icu.dll!icu::UMutex::lock(void)	Unknown
 	icu.dll!u_cleanup()	Unknown
 	ucrtbase.dll!<lambda>(void)()	Unknown
 	ucrtbase.dll!__crt_seh_guarded_call<int>::operator()<<lambda_7777bce6b2f8c936911f934f8298dc43>,<lambda>(void) &,<lambda_3883c3dff614d5e0c5f61bb1ac94921c>>()	Unknown
 	ucrtbase.dll!_execute_onexit_table()	Unknown
 	ucrtbase.dll!__crt_state_management::wrapped_invoke<int (*)(int *),int *,int>(int (*)(int *),int *)	Unknown
 	icu.dll!dllmain_crt_process_detach()	Unknown
 	icu.dll!dllmain_dispatch()	Unknown
 	ntdll.dll!LdrpCallInitRoutine()	Unknown
 	ntdll.dll!LdrShutdownProcess()	Unknown
 	ntdll.dll!RtlExitUserProcess()	Unknown
 	kernel32.dll!ExitProcessImplementation()	Unknown
 	ucrtbase.dll!exit_or_terminate_process()	Unknown
 	ucrtbase.dll!common_exit()	Unknown
 	dotnet.exe!__scrt_common_main_seh() Line 295	C++
 	kernel32.dll!BaseThreadInitThunk()	Unknown
 	ntdll.dll!RtlUserThreadStart()	Unknown

Only a single thread (main thread) is executing at this point in the process.

Reproduction Steps

No reproduction. I can produce this with a stress test under our CI environment and cause it to hang after a few hours.

Expected behavior

Process exits without hang.

Actual behavior

Process never exits.

Regression?

No response

Known Workarounds

No response

Configuration

.NET 7.0.102
Windows 10 Pro (10.0.19045)
x64

Other information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions