On Sat Dec 14 13:05:29 2024 +0000, Jinoh Kang wrote:
> > The problem is that there might be no threads that initiate any wait.
> You're probably talking about GetQueuedCompletionStatus(). Sure, no
> threads might be waiting on IOCP. By "initiate the wait" I mean the wait
> on the (arbitrary) target object handle, not the IOCP.
> NtAssociateWaitCompletionPacket() initiates an *asynchronous* wait on
> the object handle. When the wait is done (the object is signaled), it
> queues a completion to the associated I/O completion port.
Note that this issue is currently masked by another omission in this MR: WaitCompletionPacket doesn't call obj->ops->satisfied().
Waiting on mutexes, semaphores, and auto-reset events have the side effect of acquiring or resetting their state. Your MR, in its current state, does _not_ let this side effect take place, rendering them useless.
Maybe, in the particular case of React Native, it only uses WaitCompletionPacket on manual reset events or other objects with no-op satisfied()? FWIW I couldn't find any reference to NtAssociateWaitCompletionPacket in https://github.com/facebook/react-native.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6911#note_90537
> The problem is that there might be no threads that initiate any wait.
You're probably thinking about synchronous wait. By "initiate the wait" I mean the thread that called NtAssociateWaitCompletionPacket().
Not all waits are synchronous (like WaitForSingleObject). NtAssociateWaitCompletionPacket() initiates an *asynchronous* wait. When the wait is done (the object is signaled), it queues a completion to the associated I/O completion port.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6911#note_90531
https://bugs.winehq.org/show_bug.cgi?id=51998
The first patch should make no functional change, just move the block out to a helper function. I assume changing to L"" literals is expected?
The second patch handles ImagePaths starting with `System32` similar like it is already done for `\\SystemRoot\\` and adds the windows directory in front of it.
--
v2: ntoskrnl.exe: Support ImagePaths just starting with System32.
ntoskrnl.exe: Add helper to create absolute ImagePath.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5009
The dialog box in wineboot has a fixed width but the prefix path
string doesn't (which could cause parts of the prefix path to be cut off
and made invisible).
This issue got worse in commit 8e1197c92e8c08fb197c8656a07215296d656890
which introduced more accurate word wrap behavior (that no longer wraps
strings without spaces and causes space-less paths to be more commonly cut off).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6325