Scroom 0.14-49-gb7ae7a6d
Loading...
Searching...
No Matches
Scroom::Utils::Detail::ErrorSignalHandler Class Reference
Collaboration diagram for Scroom::Utils::Detail::ErrorSignalHandler:
Collaboration graph

Public Member Functions

 ErrorSignalHandler () noexcept
 

Static Private Member Functions

static void handler (int)
 

Static Private Attributes

static volatile sig_atomic_t isHandlerActive = 0
 

Friends

void abort ()
 

Constructor & Destructor Documentation

◆ ErrorSignalHandler()

Scroom::Utils::Detail::ErrorSignalHandler::ErrorSignalHandler ( )
noexcept
116 {
117 signal(SIGFPE, handler);
118 signal(SIGILL, handler);
119 signal(SIGABRT, handler);
120 signal(SIGSEGV, handler);
121#ifndef _WIN32
122 signal(SIGBUS, handler);
123 signal(SIGSYS, handler);
124#endif
125 }
Semaphore signal
Definition async-deleter-tests.cc:64
static void handler(int)
Definition assertions.cc:78
Here is the call graph for this function:

Member Function Documentation

◆ handler()

void Scroom::Utils::Detail::ErrorSignalHandler::handler ( int  sig)
staticprivate
79 {
81 {
83 std::cerr << __FILE__ << ":" << __LINE__ << ": Entering signal handler" << std::endl;
84#ifdef _WIN32
85 std::string_view sigName;
86 switch(sig)
87 {
88 case SIGFPE:
89 sigName = "SIGFPE";
90 break;
91 case SIGILL:
92 sigName = "SIGILL";
93 break;
94 case SIGABRT:
95 sigName = "SIGABRT";
96 break;
97 case SIGSEGV:
98 sigName = "SIGSEGV";
99 break;
100 }
101#else
102 std::string_view const sigName = strsignal(sig); // NOLINT(concurrency-mt-unsafe)
103#endif
104 std::cerr << "PROGRAM DEFECTIVE (TERMINATED BY SIGNAL): " << sigName << std::endl;
105 std::cerr << stackTrace(1);
106 std::cerr << std::endl;
107 std::cerr << __FILE__ << ":" << __LINE__ << ": Leaving signal handler" << std::endl;
108 std::cerr << std::flush;
109 }
110
111 signal(sig, SIG_DFL);
112 raise(sig);
113 }
static volatile sig_atomic_t isHandlerActive
Definition assertions.cc:69
std::string stackTrace(size_t cutoff)
Definition assertions.cc:26

Referenced by ErrorSignalHandler().

Here is the call graph for this function:
Here is the caller graph for this function:

Friends And Related Symbol Documentation

◆ abort

void abort ( )
friend
130 {
131 signal(SIGABRT, SIG_DFL);
132 ::abort();
134 }
friend void abort()
Definition assertions.cc:129
static ErrorSignalHandler errorSignalHandler
Definition assertions.cc:127

Member Data Documentation

◆ isHandlerActive

volatile sig_atomic_t Scroom::Utils::Detail::ErrorSignalHandler::isHandlerActive = 0
staticprivate

Referenced by handler().


The documentation for this class was generated from the following file: