core: unblock fatal (crashing) signals in all threads
Currently all non-main threads have all the signals blocked, however according to `man pthread_sigmask': > If SIGBUS, SIGFPE, SIGILL, or SIGSEGV are generated while they > are blocked, the result is undefined, unless the signal was > generated by kill(2), sigqueue(3), or raise(3). On macOS they are actually blocked, causing the faulting instruction to loop indefinitely. While on Linux they are not blocked, however the signal handler registered by sigaction is not executed. Don't block them. Closes #8023 Closes #8083 NO_DOC=bugfix
Showing
- changelogs/unreleased/gh-8083-fatal-signal-handler.md 5 additions, 0 deletionschangelogs/unreleased/gh-8083-fatal-signal-handler.md
- src/lib/core/errinj.h 1 addition, 0 deletionssrc/lib/core/errinj.h
- src/lib/core/fiber.c 1 addition, 0 deletionssrc/lib/core/fiber.c
- src/tt_pthread.h 8 additions, 2 deletionssrc/tt_pthread.h
- test/app-luatest/gh_8083_fatal_signal_handler_test.lua 2 additions, 1 deletiontest/app-luatest/gh_8083_fatal_signal_handler_test.lua
- test/box/errinj.result 1 addition, 0 deletionstest/box/errinj.result
Please register or sign in to comment