https://bugs.winehq.org/show_bug.cgi?id=37135
Bug ID: 37135 Summary: Wine fails to handle EWOULDBLOCK return from sendmsg Product: Wine Version: 1.7.24 Hardware: x86 OS: Solaris Status: UNCONFIRMED Severity: critical Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: carson@taltos.org
On Solaris 11.2, launching any application via "wine c:\somepath\foo.exe" frequently fails, printing the following errors:
sendmsg: Resource temporarily unavailable sendmsg: Resource temporarily unavailable Protocol error: process 000c: Protocol error: process 000
Debugging, I find these errors come from 2 different places. Fixing both makes wine run reliably.
server/request.c dlls/ntdll/server.c
The fix for ./dlls/ntdll/server.c is easy, just add EWOULDBLOCK to the EINTR case that's already present.
dlls/ntdll/server.c requires the addition of a loop around sendmsg as well as handling the non-fatal EWOULDBLOCK (and it should probably retry EINTR as well).
I can generate patches if desired, but the fixes are fairly obvious.