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
Supersedes !741.
On macOS 10.14+ `thread_get_register_pointer_values` is called on every thread of the process.
On Linux 4.14+ `membarrier(MEMBARRIER_CMD_PRIVATE_EXPEDITED, ...)` is used.
On x86 Linux <= 4.13 and on other platforms it falls back to calling `NtGetContextThread()` on each thread.
The fast path patches from @tmatthies are slightly modified in the following ways:
1. On unsupported platforms, the `try_*()` functions return `FALSE` instead of `0`.
2. `try_exp_membarrier()` is called first, then `try_mach_tgrpvs()`.
---
Known applications fixed by this MR:
- osu! (rhythm game) song selection menu stuttering
- .NET CoreCLR GC
- HotSpot JVM (-XX:+UseSystemMemoryBarrier) safepoints
--
v3: kernel32/tests: Add a store buffering litmus test involving FlushProcessWriteBuffers.
ntdll: Add slow fallback implementation of NtFlushProcessWriteBuffers.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7250
Supersedes !741.
On macOS 10.14+ `thread_get_register_pointer_values` is called on every thread of the process.
On Linux 4.14+ `membarrier(MEMBARRIER_CMD_GLOBAL_EXPEDITED, ...)` is used.
On x86 Linux <= 4.13 and on other platforms it falls back to calling `NtGetContextThread()` on each thread.
The fast path patches from @tmatthies are slightly modified in the following ways:
1. On unsupported platforms, the `try_*()` function returns `FALSE` instead of `0`.
2. `try_exp_membarrier()` is called first, then `try_mach_tgrpvs()`.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7250
Supersedes !741.
On macOS 10.14+ `thread_get_register_pointer_values` is called on every thread of the process.
On Linux 4.14+ `membarrier(MEMBARRIER_CMD_PRIVATE_EXPEDITED, ...)` is used.
On x86 Linux <= 4.13 and on other platforms it falls back to calling `NtGetContextThread()` on each thread.
The fast path patches from @tmatthies are slightly modified in the following ways:
1. On unsupported platforms, the `try_*()` functions return `FALSE` instead of `0`.
2. `try_exp_membarrier()` is called first, then `try_mach_tgrpvs()`.
---
Known applications fixed by this MR:
- osu! (rhythm game) song selection menu stuttering
- .NET CoreCLR GC
- HotSpot JVM (-XX:+UseSystemMemoryBarrier) safepoints
--
v2: kernel32/tests: Add a store buffering litmus test involving FlushProcessWriteBuffers.
ntdll: Add slow fallback implementation of NtFlushProcessWriteBuffers.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7250
--
v2: wldap32/tests: Add some tests for LDAP authentication to a Kerberos DC.
wldap32: ldap_init() should resolve NULL hostname to default Kerberos DC.
wldap32: Use correct host when connecting to Kerberos DC.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7235
Modern Windows versions do not export these symbols.
The symbol `??0?$CDynamicArray@GPAG@QAE@I@Z` uses an unusual mangling scheme that no existing tool understands.
This causes issues on ARM64EC, which requires demangling when generating an import library.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7246