From 14a6aee05092147a42611c9f2b57cfda36547049 Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 26 Jul 2018 14:47:38 +0200 Subject: [PATCH 1/2] changed exit(4) to asynchronous-safe _exit(4) in signal handler sig_alrm --- src/udev/collect/collect.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/udev/collect/collect.c b/src/udev/collect/collect.c index 82b8354763..39fd03d152 100644 --- a/src/udev/collect/collect.c +++ b/src/udev/collect/collect.c @@ -59,7 +59,7 @@ static inline struct _mate *node_to_mate(struct udev_list_node *node) _noreturn_ static void sig_alrm(int signo) { - exit(4); + _exit(4); } static void usage(void) From 1595b257df98b361d178b3ce3e4ca5ac463be0cd Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 26 Jul 2018 15:39:12 +0200 Subject: [PATCH 2/2] void call of page_size guarantees that sysconf is not called from signal handler --- src/basic/sigbus.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/basic/sigbus.c b/src/basic/sigbus.c index 70afba6bcf..d5254eab9d 100644 --- a/src/basic/sigbus.c +++ b/src/basic/sigbus.c @@ -113,6 +113,10 @@ void sigbus_install(void) { .sa_flags = SA_SIGINFO, }; + /* make sure that sysconf() is not called from a signal handler because + * it is not guaranteed to be async-signal-safe since POSIX.1-2008 */ + (void) page_size(); + n_installed++; if (n_installed == 1)