diff options
author | José Bollo <jose.bollo@iot.bzh> | 2018-08-23 12:23:39 +0200 |
---|---|---|
committer | José Bollo <jose.bollo@iot.bzh> | 2018-08-23 12:42:14 +0200 |
commit | 8aac4b82fa18fe6f0feacac86fdde3d78b19cd18 (patch) | |
tree | 51075bc3b4f4ff68cbd1717934900b502da1a186 | |
parent | 2991a2564bc5e21b04dcb3157ce38804080c0056 (diff) |
jobs: Abort when systemd's event loop lostflounder_5.99.4flounder/5.99.45.99.4
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 <jose.bollo@iot.bzh>
-rw-r--r-- | src/jobs.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -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); |