This is just a draft to receive feedback, I'm not sure how could I test this behavior, right now the test I wrote works but there are times where it doesn't enter into the deadlock.
Also I'm not sure if leaving the critical section before waiting for the streaming thread is the correct way to solve the problem.
--
v2: evr: Leave critical section before waiting for streaming thread.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3319
On Thu Jul 13 19:42:16 2023 +0000, Jinoh Kang wrote:
> This leads to a regression: NtContinue() can no longer properly restore
> X16 and X17, since they are now clobbered by `__wine_syscall_dispatcher_return`.
> The proper fix is at
> https://www.winehq.org/mailman3/hyperkitty/list/wine-devel@winehq.org/threa…,
> which is a superset of this patchset.
> I don't have an ARM64 build machine at the moment; can you rebase it and
> see if it works?
> Many thanks for your work!
Can verify that your patch works for me, apologies for missing this in my original MR
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3315#note_38932
This fixes SetWindowLongPtr on WoW64. On 32-bit, we have
```
#define SetWindowLongPtrA SetWindowLongA
#define SetWindowLongPtrW SetWindowLongW
```
meaning that on WoW64, all pointers passed would be padded with `0xffffffff` (because they are treated as LONG), and this is the cause of many of the failing WoW64 tests. This fixes that behavior. I'm not sure if this is the right place to fix it though.
--
v6: wow64win: Always use NtUserSetWindowLongPtr() for GWLP_HINSTANCE and GWLP_WNDPROC.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3294