[Bug 53032] winedevice.exe segfaults on exit when built by GCC >=12.0 and -march=pentium-m

WineHQ Bugzilla wine-bugs at winehq.org
Wed May 25 06:22:20 CDT 2022


https://bugs.winehq.org/show_bug.cgi?id=53032

--- Comment #17 from Bernhard Übelacker <bernhardu at 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?

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.


More information about the wine-bugs mailing list