| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
macOS always fills in si_code for SIG{BUS,ILL,SEGV} as if it were a real
hardware fault, so returning from the handler is not guaranteed to re-
trigger the signal.
Fixes: aecdabb ("sighook: Return instead of re-raising for faults")
Link: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2386463/4/util/posix/signals_test.cc
Link: https://github.com/chromium/crashpad/commit/e0d8a0aa01ac176804077f1f128ccc894c098f79
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This makes the death look exactly like it would if we didn't handle the
signal at all. Coredumps will point at the right instruction, segfaults
will get logged in dmesg again, etc.
Technically POSIX says this is undefined, but if we get a fault, we've
already done something undefined anyway ;)
Link: https://github.com/rust-lang/rust/issues/26458
|
|
|
|
| |
QNX doesn't support SA_RESTART.
|
|
|
|
|
|
|
| |
This was causing a UAF if we ever unregistered the last hook for a
signal and then re-registered one.
Fixes: 75b7f70 ("sighook: Make sigunhook() O(1)")
|
| |
|
|
|
|
|
|
| |
This replaces the explicit CPPFLAGS list in flags.mk with just
`-include src/prelude.h`, shortening our compiler command lines and
allowing them to be easily documented.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
POSIX allows optional features to be supported at compile time but not
necessarily at run time by defining _POSIX_OPTION to 0 and requiring
users to check sysconf(_SC_OPTION) > 0. The new sysoption() macro
simplifies the check.
sighook() and bfs_spawn() now check for conditional runtime support for
the relevant POSIX options.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
This fixes an ABA problem where sigdispatch() could think no handlers
are registered for a signal even when there are.
Link: https://unix.stackexchange.com/a/779594/56202
Fixes: 375caac ("sighook: New utilities for hooking signals")
|
| |
|
|
|
|
| |
This fixes bfs under Valgrind, which reserves SIGRTMAX for its own use.
|
| |
|
| |
|
| |
|
|
This allows multiple hooks to be installed for a single signal.
|