Adapted from [check_invalid_gs](https://gitlab.winehq.org/wine/wine/-/blob/d7a7cae2e2d1ad… in signal_i386.c. This prevents crashing when the %gs register is manipulated, such as in 32-bit code on "new-style" WoW64.
"Exertus: Darkness Approaches" is a 32-bit game that triggers this crash (on WoW64), which can be downloaded from the Bugzilla page's attachments. For another example, [test.c](https://bugs.winehq.org/attachment.cgi?id=77444) can reproduce it, courtesy of Fabian Maurer from the Bugzilla comments. This will crash whether it's compiled as 32-bit or 64-bit, while it works fine on Windows.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=57444
Also, excuse me if submitting this is against some sort of code-freeze etiquette, it wasn't my intention try to have it merged immediately.
--
v8: ntdll/tests: Re-enable a previously crashing test.
ntdll: Check for invalid gs_base in the 64-bit segv_handler.
ntdll/tests: Add an exception test for accessing a modified %gs on x86_64.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7064
Componenets installed by winetricks have "deadbeef.manifest" trailer
in their manifests, so it's not clear that filtering logic works. On
the other hand when manifests for versions 1.2.3.4 and 1.2.3.10 are
installed and application exe needs version 1.2.0.0 and later uses
LoadLibrary() to load a plugin.dll that needs 1.2.3.7, version 1.2.3.4
gets loaded with an .exe (because manifest for version 1.2.3.10 is
ignored) and version 1.2.3.10 gets loaded with a plugin.dll, and
this leads to crashes.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7028
(For after the code freeze.)
I think we want to have this DLL living in Wine for easier development, and probably dynamically load our custom Chromium fork from here. (just like MSHTML and wine-Gecko)
The code for that fork could then be created in its own repo.
--
v7: embeddedbrowserwebview: Create CreateWebViewEnvironmentWithOptionsInternal stub.
embeddedbrowserwebview: Add stub dll.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7032
--
v2: Release 9.0.1.
wbemprox: Use separate critical sections for tables and table list.
kernel32/tests: Add tests for critical section debug info presence.
This merge request has too many patches to be relayed via email.
Please visit the URL below to see the contents of the merge request.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7462
This fixes a real problem and improves behavior at the same time.
- ~~Fixes: hanging when trying to run Wine built with epoll_pwait2 headers available but epoll_pwait2 is missing in the run-time kernel (i.e. build 5.11->run 5.10)~~ (already fixed.)
- Improvement: bring the improved timeout resolution to Wine builds
which didn't have epoll_pwait2 at compile time, if the run-time kernel supports it
(i.e. build 5.10->run 6.14)
This last point is especially important in my opinion, as it applies to official Proton builds.
Proton is (currently) built in Debian 11 with kernel 5.10, but SteamOS is a moving target with
a much newer kernel version being used to run these Wine builds.
These builds use the lower resolution timeouts if epoll_pwait2 is only checked for at compile-time,
when it can cheaply and easily be done at run-time instead.
~~Fixes: 87ca5db40e2c1b37423bdc25101a5c5e39e67e6f~~
~~An alternative to !7640 that kills two birds with one stone.~~
--
v6: server: Use dlsym() to check for epoll_pwait2 at run-time.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7642
This fixes failure to play the prologue video in Planet of the Apes: Last Frontier, which unpauses by calling Start() with a location. The exact state leading to this issue does not occur in the Start() tests, and it's not clear how to reproduce it reliably.
--
v5: mf: Reset transform nodes when seeking.
mf: Initialise the grabber sample count when setting state after a seek.
mf: Reset transform node outputs when seeking.
mf: Flush nodes before restarting a paused source at a specific position.
mf: Drop transform node input events when unpausing at a specific position.
mf: Reset transforms before restarting a paused source instead of after.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7466