https://bugs.winehq.org/show_bug.cgi?id=48689
Ken Thomases ken@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 CC| |ken@codeweavers.com Status|UNCONFIRMED |NEW Regression SHA1| |64dc42e34ffb0178fd9679359f4 | |1d09fca76d5df
--- Comment #4 from Ken Thomases ken@codeweavers.com --- I've bisected this to commit 64dc42e34ffb0178fd9679359f41d09fca76d5df. That commit introduced code which runs on macOS and Android, but not Linux. That's why it wasn't detected before being committed.
The issue is that init_unix_codepage() is called before init_user_process_params(), but the former depends on stuff set up by the latter. In particular, the backtrace is:
* frame #0: 0x000000007bc3a614 ntdll.dll.so`RtlQueryEnvironmentVariable_U(env=0x0000000000000000, name=0x000070000fdf6bf0, value=0x000070000fdf6c50) at env.c:945:55 [opt] frame #1: 0x000000007bc5a0a6 ntdll.dll.so`NtGetNlsSectionPtr [inlined] open_nls_data_file(type=<unavailable>, id=<unavailable>) at locale.c:648:9 [opt] frame #2: 0x000000007bc59cde ntdll.dll.so`NtGetNlsSectionPtr(type=<unavailable>, id=<unavailable>, unknown=<unavailable>, ptr=<unavailable>, size=0x000070000fdf6d78) at locale.c:1120 [opt] frame #3: 0x000000007bc5852e ntdll.dll.so`load_norm_table(form=1, info=0x000070000fdf6da8) at locale.c:223:23 [opt] frame #4: 0x000000007bc584c6 ntdll.dll.so`init_unix_codepage at locale.c:800:5 [opt] frame #5: 0x000000007bc53934 ntdll.dll.so`__wine_process_init at loader.c:4257:5 [opt]
The crash happens on this line: var = NtCurrentTeb()->Peb->ProcessParameters->Environment;
because NtCurrentTeb()->Peb->ProcessParameters is NULL.