https://bugs.winehq.org/show_bug.cgi?id=48019
Bug ID: 48019 Summary: SSE register MXCSR is wrong for new threads Product: Wine Version: 4.15 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: kernel32 Assignee: wine-bugs@winehq.org Reporter: mterrisse@free.fr Distribution: ---
Created attachment 65554 --> https://bugs.winehq.org/attachment.cgi?id=65554 Command line executable with source code to get MXCSR in a new created thread
Hello,
I am running Wine 4.15 64 bits (PlayOnLinux) on Ubuntu 19.10 (More recent versions of Wine are not available yet).
On Windows when a new thread is created (CreateThread), the value of the SSE register MXCSR is initialized to 0x1f80. But for Wine 4.15 on Ubuntu, it is initialized to 0x1920.
This is fatal for our programs that use libcef.dll (Chromium Embedded Framework), this library creates new renderer threads, doesn't set the MXCSR register (so exceptions due to denormalization of floats are not masked), then there is an unhandled exception and the whole program crashes.
I tested with Wine 4.18 on macOS 10.15.1 Catalina, I get the correct value 0x1f80, and indeed there is no crash on macOS. So this is specific to Wine on Linux (except is something has changed between Wine 4.15 and Wine 4.18).
Here attach you can find a command line executable with source code (Delphi) that displays the value of MXCSR for a new thread.
Thank you for your help. Regards,
Michel Terrisse