107
static void signal_handler(int signo)
114
n_ptrs = backtrace(frames, G_N_ELEMENTS(frames));
115
symbols = backtrace_symbols(frames, n_ptrs);
116
if (symbols == NULL) {
117
connman_error("No backtrace symbols");
121
connman_error("Aborting (signal %d)", signo);
122
connman_error("++++++++ backtrace ++++++++");
124
for (i = 1; i < n_ptrs; i++)
125
connman_error("[%d]: %s", i - 1, symbols[i]);
127
connman_error("+++++++++++++++++++++++++++");
133
static void signal_setup(sighandler_t handler)
139
sa.sa_handler = handler;
142
sigaction(SIGBUS, &sa, NULL);
143
sigaction(SIGILL, &sa, NULL);
144
sigaction(SIGFPE, &sa, NULL);
145
sigaction(SIGSEGV, &sa, NULL);
146
sigaction(SIGABRT, &sa, NULL);
147
sigaction(SIGPIPE, &sa, NULL);
103
150
extern struct connman_debug_desc __start___debug[];
104
151
extern struct connman_debug_desc __stop___debug[];
179
226
if (detach == FALSE)
180
227
option |= LOG_PERROR;
229
signal_setup(signal_handler);
182
231
openlog("connmand", option, LOG_DAEMON);
184
233
syslog(LOG_INFO, "Connection Manager version %s", VERSION);