| 2061 | } |
| 2062 | |
| 2063 | static void sigill_handler(int /*sig*/, siginfo_t* info, void* /*uct*/) noexcept |
| 2064 | { |
| 2065 | std::string msg = fmt::format("Illegal instruction at %p (%s).\n", info->si_addr, *reinterpret_cast<be_t<u128>*>(info->si_addr)); |
| 2066 | |
| 2067 | append_thread_name(msg); |
| 2068 | |
| 2069 | sys_log.fatal("\n%s", msg); |
| 2070 | sys_log.notice("\n%s", dump_useful_thread_info()); |
| 2071 | logs::listener::sync_all(); |
| 2072 | |
| 2073 | if (IsDebuggerPresent()) |
| 2074 | { |
| 2075 | // Convert to SIGTRAP |
| 2076 | raise(SIGTRAP); |
| 2077 | return; |
| 2078 | } |
| 2079 | |
| 2080 | thread_ctrl::emergency_exit(msg); |
| 2081 | } |
| 2082 | |
| 2083 | void sigpipe_signaling_handler(int) |
| 2084 | { |
nothing calls this directly
no test coverage detected