Paolo Bonzini wrote:
> I agree, but it seems like pipe WaitForSingleObject is broken. You'd
> need a thread polling with PeekNamedPipe, or a busy-waiting loop in the
> main thread altogether.
Maybe we need to reset the pipe from "signaled" to "non-signaled" state
after [Msg]WaitFor..Objects returns, using ResetState()?
Or otherwise, a nearly busy-waiting loop like this:
rpl_select (...)
{
...preparations up to line 346...
for (;;)
{
... code from line 348..418...
if ((timeout && ret == WAIT_TIMEOUT) || rc != 0)
break;
/* MsgWaitForMultipleObjects returned because some handle is in signaled
state, but the handle is not actually ready for I/O. */
Sleep (5);
}
if (!timeout && rc == 0)
abort ();
return rc;
}
Bruno