MCPcopy Create free account
hub / github.com/crownengine/crown / callstack_init

Function callstack_init

src/core/debug/callstack_linux.cpp:141–182  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

139 }
140
141 s32 callstack_init()
142 {
143 s32 ret = -1;
144
145 if (pipe(symbol_fds) < 0)
146 goto close_0;
147 if (pipe(demangled_fds) < 0)
148 goto close_1;
149 if (pipe(exit_fds) < 0)
150 goto close_2;
151
152 demangler = fork();
153 if (demangler == -1) {
154 close(symbol_fds[0]);
155 close(symbol_fds[1]);
156 close(demangled_fds[0]);
157 close(demangled_fds[1]);
158 close(exit_fds[0]);
159 close(exit_fds[1]);
160 return -1;
161 } else if (demangler == 0) {
162 // Block all signals.
163 sigset_t set;
164 sigfillset(&set);
165 sigprocmask(SIG_BLOCK, &set, NULL);
166
167 close(symbol_fds[1]);
168 close(demangled_fds[0]);
169 close(exit_fds[1]);
170 exit(demangler_main());
171 } else {
172 ret = 0;
173 }
174
175 close(exit_fds[0]);
176 close_2:
177 close(demangled_fds[1]);
178 close_1:
179 close(symbol_fds[0]);
180 close_0:
181 return ret;
182 }
183
184 void callstack(log_internal::System system, LogSeverity::Enum severity)
185 {

Callers

nothing calls this directly

Calls 3

forkFunction · 0.85
demangler_mainFunction · 0.85
exitFunction · 0.50

Tested by

no test coverage detected