From: José Bollo Date: Thu, 23 Aug 2018 10:23:39 +0000 (+0200) Subject: jobs: Abort when systemd's event loop lost X-Git-Tag: flounder_5.99.4^0 X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?p=src%2Fapp-framework-binder.git;a=commitdiff_plain;h=8aac4b82fa18fe6f0feacac86fdde3d78b19cd18 jobs: Abort when systemd's event loop lost When sd_event_prepare returns an error there is currently no way to restore the event loop working. It happens when a callback of an sd_event is faulty (ex: SIGSEGV). In that case the monitoring of signals (sig-monitor) interfer badly with systemd. But at the the application firstly has error. To avoid flooding the journal with messages, aborting is the best solution. Bug-AGL: SPEC-1681 Change-Id: If01295f07b3c3fc8c8ec1ac5bf04840d42ee9774 Signed-off-by: José Bollo --- diff --git a/src/jobs.c b/src/jobs.c index 16434d4f..27b7dfbf 100644 --- a/src/jobs.c +++ b/src/jobs.c @@ -313,7 +313,8 @@ static void evloop_run(int signum, void *arg) rc = sd_event_prepare(se); if (rc < 0) { errno = -rc; - ERROR("sd_event_prepare returned an error (state: %d): %m", sd_event_get_state(se)); + CRITICAL("sd_event_prepare returned an error (state: %d): %m", sd_event_get_state(se)); + abort(); } else { if (rc == 0) { rc = sd_event_wait(se, (uint64_t)(int64_t)-1);