https://bugs.winehq.org/show_bug.cgi?id=57250
Bernhard Übelacker bernhardu@mailbox.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|-unknown |ucrtbase
--- Comment #2 from Bernhard Übelacker bernhardu@mailbox.org --- I found this too interesting to leave it, so I searched further and this is what happens in my opinion: - The installer creates a new thread. - In this thread a setlocale(LC_ALL, "") is done to retrieve the currently configured one for later restoring. This new thread seems not configured properly, e.g. data->cached_locale is not yet filled, therefore this value is stored: "Invariant Language_Invariant Country.0" - Then with inside xul.dll a function call to wcrtomb_l [1] sets first the locale to "C". Does the call to wcrtomb. And tries to restore the "Invariant Language_Invariant Country.0" locale, which fails because the codepage ".0" cannot be found. - This failure leads to a call to __throw_bad_alloc, and finally to xul!abort_message [2] and ucrtbase!abort.
[1] https://github.com/llvm/llvm-project/blob/70cbedcd6edf00fc11aa7685f41f8ec29c... https://github.com/llvm/llvm-project/blob/dd0fe4fb7440182d8101135bfd694b2d84...
[2] https://github.com/llvm/clangir/blob/4b0a36daafaa3e71b95304cc501d2d6c4a81c67...