compositor: return failure even if SEGV handler works v2
Weston has a SIGSEGV handler that attempts to shut everything down
cleanly. If it actually succeeds in that, the process exit status will
indicate success, when the process just segfaulted.
Fix that by setting the return value to failure in the SEGV handler.
v2: use a local instead of a global variable
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
diff --git a/src/compositor.c b/src/compositor.c
index ac39fe9..3b1ca1e 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -3090,6 +3090,7 @@
int main(int argc, char *argv[])
{
+ int ret = EXIT_SUCCESS;
struct wl_display *display;
struct weston_compositor *ec;
struct wl_event_source *signals[4];
@@ -3217,6 +3218,8 @@
weston_compositor_wake(ec);
if (setjmp(segv_jmp_buf) == 0)
wl_display_run(display);
+ else
+ ret = EXIT_FAILURE;
/* prevent further rendering while shutting down */
ec->state = WESTON_COMPOSITOR_SLEEPING;
@@ -3234,5 +3237,5 @@
ec->destroy(ec);
wl_display_destroy(display);
- return 0;
+ return ret;
}