| 299 | } |
| 300 | |
| 301 | void MinidumpExceptionHandler::RunUserSignalHandlerThread() { |
| 302 | sigset_t signals = GetSigset(SIGUSR1); |
| 303 | while (true) { |
| 304 | int signal; |
| 305 | int err = sigwait(&signals, &signal); |
| 306 | CHECK(err == 0) << "sigwait(): " << ErrnoToString(err) << ": " << err; |
| 307 | CHECK_EQ(SIGUSR1, signal); |
| 308 | if (!user_signal_handler_thread_running_.load(std::memory_order_relaxed)) { |
| 309 | // Exit thread if we are shutting down. |
| 310 | return; |
| 311 | } |
| 312 | if (!WriteMinidump()) { |
| 313 | LOG(WARNING) << "Received USR1 signal but failed to write minidump"; |
| 314 | } |
| 315 | } |
| 316 | } |
| 317 | |
| 318 | #else // defined(__linux__) |
| 319 |
no test coverage detected