mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2026-03-13 05:34:13 -04:00
xwayland: don't fail on SIGCHLD
SIGCHLD here isn't fatal: we have other means of notifying that things were successful or failure, and it causes many compositors to have to do a bunch of extra work: https://github.com/qtile/qtile/issues/5101 https://github.com/flacjacket/pywlroots/pull/207#issuecomment-2502680133 https://github.com/djpohly/dwl/pull/212 Signed-off-by: Tycho Andersen <tycho@tycho.pizza>
This commit is contained in:
parent
be3d2b74cf
commit
631e5be0d7
1 changed files with 11 additions and 0 deletions
|
|
@ -257,6 +257,17 @@ static int xserver_handle_ready(int fd, uint32_t mask, void *data) {
|
||||||
if (errno == EINTR) {
|
if (errno == EINTR) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* If some application has installed a SIGCHLD handler, they
|
||||||
|
* may race and waitpid() on our child, which will cause this
|
||||||
|
* waitpid() to fail. We have a signal from the
|
||||||
|
* notify pipe that things are ready, so this waitpid() is only
|
||||||
|
* to prevent zombies, which will have already been reaped by
|
||||||
|
* the application's SIGCHLD handler.
|
||||||
|
*/
|
||||||
|
if (errno == ECHILD) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
wlr_log_errno(WLR_ERROR, "waitpid for Xwayland fork failed");
|
wlr_log_errno(WLR_ERROR, "waitpid for Xwayland fork failed");
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue