raise() won't propagate the siginfo information of the signal that's
re-raised. rt_sigqueueinfo() allows us to provide the original siginfo
struct which makes sure it is propagated to the next signal handler
(or to the coredump).
#include "macro.h"
#include "memory-util.h"
+#include "missing_syscall.h"
+#include "process-util.h"
#include "sigbus.h"
#define SIGBUS_QUEUE_MAX 64
if (si->si_code != BUS_ADRERR || !si->si_addr) {
assert_se(sigaction(SIGBUS, &old_sigaction, NULL) == 0);
- raise(SIGBUS);
+ rt_sigqueueinfo(getpid_cached(), SIGBUS, si);
return;
}