Gerald Pfeifer pfeifer@dbai.tuwien.ac.at writes:
Unfortunately, a general patch for this is beyond my (current) capabilities, so I'd really appreciate could the two of you agree on a general fix for this.
Does this do the right thing on FreeBSD?
Index: scheduler/client.c =================================================================== RCS file: /opt/cvs-commit/wine/scheduler/client.c,v retrieving revision 1.97 diff -u -r1.97 client.c --- scheduler/client.c 1 Apr 2003 04:39:35 -0000 1.97 +++ scheduler/client.c 17 Apr 2003 02:45:46 -0000 @@ -672,11 +672,19 @@ TEB *teb = NtCurrentTeb(); int version, ret; int reply_pipe[2]; + struct sigaction sig_act; + + sig_act.sa_handler = SIG_IGN; + sig_act.sa_flags = 0; + sigemptyset( &sig_act.sa_mask );
/* ignore SIGPIPE so that we get a EPIPE error instead */ - signal( SIGPIPE, SIG_IGN ); + sigaction( SIGPIPE, &sig_act, NULL ); /* automatic child reaping to avoid zombies */ - signal( SIGCHLD, SIG_IGN ); +#ifdef SA_NOCLDWAIT + sig_act.sa_flags |= SA_NOCLDWAIT; +#endif + sigaction( SIGCHLD, &sig_act, NULL );
/* create the server->client communication pipes */ if (pipe( reply_pipe ) == -1) server_protocol_perror( "pipe" );