Red Hat Bugzilla – Bug 806413
Please make Xorg server to exit with correct exitcode on SEGV (patch included)
Last modified: 2012-10-08 01:07:29 EDT
Created attachment 572331 [details]
Currently when Xorg server receives fatal signal, it generates some diagnostics, performs some cleanup, and exits with exit code 1.
Thus, it will not exit with correct exit code. If parent process will check for it, it will see WIFEXITED = true, not WIFSIGNALED = true.
This seems to be not too difficult to rectify: instead of exiting, we cal reset signal handler to SIG_DFL, and resend the signals to ourself again.
Please see attached patch.
While at it, I also corrected a typo in error message: s/Recieved/Received/
Denys, this is a good idea. Unfortunately, your patch does not compile (undefined reference FatalSignal) and it doesn't have any effect.
The call to raise() is after OsAbort() which calls abort(3), so your code is never hit. Also, in the case of abort, the exit code is always 134 (128 + SIGABRT). Finally, the exit code listed in the log has an actual meaning:
EXIT_NO_ERROR = 0,
EXIT_ERR_ABORT = 1,
EXIT_ERR_CONFIGURE = 2,
EXIT_ERR_DRIVERS = 3
I'll close this bug here, this is stuff that we need to get upstream first. Please submit the patch to the xorg-devel list (against 1.13 or git master to make it easier for maintainers).
fwiw, I'll get the typo patch as standalone into the upstream server, so consider that one done.