While using [x64dbg](https://x64dbg.com/) I was experiencing incredibly strange issue - `int3` was swallowed and `KiUserExceptionDispatcher` was never invoked.
Turns out that x64dbg ([TitanEngine](https://github.com/x64dbg/TitanEngine/blob/x64dbg/TitanEngine/…) expects system breakpoint to be first breakpoint that will be triggered and it always swallows it (it's hardcoded no setting to change it's behavior).
That means if you have a DLL with `int3` for example
```c
LONG ExceptionHandler(EXCEPTION_POINTERS *ExceptionInfo) {
ExceptionInfo->ContextRecord->Rip++;
return EXCEPTION_CONTINUE_EXECUTION;
}
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
if (fdwReason == DLL_PROCESS_ATTACH)
{
AddVectoredExceptionHandler(1, ExceptionHandler);
asm("int $0x03; nop; nop;");
}
return TRUE;
}
```
That `int3` would be swallowed and `ExceptionHandler` never invoked when running under x64dbg.
Now with this MR applied it works correctly and as expected (same as on Windows).
Another interesting thing is that without this MR it wouldn't just swallow `int3` but even skip first `nop` aswell and RIP would end up on 2nd `nop`.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/4655
When running `wine explorer.exe /desktop=shell` as a full-screen app,
there is no obvious way to close it and return to the Linux desktop.
Remedy that problem by adding an "Exit desktop" button to the Start menu
in the same place as the "Shut Down" button on Windows.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/4630
This fixes the layout of the tabcontrol when a font other than the
system font is used.
--
v9: comctl32/tests: Modify test_width to try different fonts
comctl32/tests: Check size initially and after changing padding only
comctl32/tests: Fix tabcontrol tests to work with different fonts
comctl32: Use selected font to determine default min tab width
https://gitlab.winehq.org/wine/wine/-/merge_requests/4484
--
v4: vkd3d: Co-locate all descriptor-related members.
vkd3d: Rename the device mutex to pipeline_cache_mutex.
vkd3d: Write Vulkan descriptors in a worker thread.
vkd3d: Update the descriptor `next` index before getting a reference for writing.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/292
This fixes various problems I've run into while trying to use Fusion 360 in wine.
- stacking issues in unmanaged mode
- I also attempted to apply the same fix for managed mode, but it looks difficult to do this in a way that plays well with window managers; I think it's best left up to them to keep override_redirect windows at the top of the stack)
- when the window manager sets our state to withdrawn, tell the window that it's been minimized, since the semantics are very similar
- the last one is a hack because I don't really know what to do about it, when clicking on the floating popups, they gain focus, which causes wine to incorrectly make them managed and that breaks everything
--
v3: winex11: don't let captionless popups be managed
winex11: pass ICCCM withdrawn state as minimized
winex11: restack a window's owned popups above it
https://gitlab.winehq.org/wine/wine/-/merge_requests/2343
On Thu Dec 7 18:47:06 2023 +0000, Rémi Bernon wrote:
> Well, code freeze is tomorrow so I don't intend to do anything soon.
> You can submit it in a separate MR if you think it's critical for the
> well behaving of the driver, and then @julliard will decide what to do
> with it, but I would personally wait until we try to fix these
> activation issues.
Thanks. As a possibly more freeze-safe alternative, I proposed a mitigation in the driver itself https://gitlab.winehq.org/wine/wine/-/merge_requests/4651 .
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/4593#note_55533