https://bugs.winehq.org/show_bug.cgi?id=53032
--- Comment #17 from Bernhard Übelacker bernhardu@mailbox.org --- I redid the steps inside a Fedore 35 VM, with gcc 11.3.1.
There I can confirm the assembly for SetupCloseLog is equal. (Except two instructions swapped before the EnterCriticalSection.)
But there the $esp value at the ret instruction is the same as at SetupCloseLog+0. But still a segfault is observable because the stack memory holding the return address for the ret instruction got overwritten here:
(rr) stepi 0xf7b93f10 in __wine_syscall_dispatcher () 1: x/i $pc => 0xf7b93f10 <__wine_syscall_dispatcher+20>: mov %esp,0xc(%ecx) 3: *(void**)0x165ef4c = (void *) 0x7d8c9f9c <DllMain+124> (rr) bt #0 0xf7b93f10 in __wine_syscall_dispatcher () #1 0x7b087541 in CloseHandle () #2 0x7d8b9b6f in SetupCloseLog () #3 0x7d8c9f9c in DllMain () #4 0x7bc55216 in call_dll_entry_point () #5 0x7bc59ae1 in MODULE_InitDLL () #6 0x7bc5a07f in process_detach () ... (rr) stepi 0xf7b93f13 in __wine_syscall_dispatcher () 1: x/i $pc => 0xf7b93f13 <__wine_syscall_dispatcher+23>: mov %cs,0x10(%ecx) 3: *(void**)0x165ef4c = (void *) 0x165eeec
@Artem: If you build with MinGW cross compilers, which versions do you have installed?
@All: Is a MinGW-less build still considered fully supported?