summaryrefslogtreecommitdiff
path: root/src/entry/sapp_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/entry/sapp_main.c')
-rw-r--r--src/entry/sapp_main.c44
1 files changed, 12 insertions, 32 deletions
diff --git a/src/entry/sapp_main.c b/src/entry/sapp_main.c
index c23f9cd..72ba7a8 100644
--- a/src/entry/sapp_main.c
+++ b/src/entry/sapp_main.c
@@ -25,47 +25,25 @@ extern int sapp_args_v;
int dpdk_init(int argc, char **argv);
-static void dump_backtrace(int max_depth, const char *path) {
- /*
- NOTE:
- �˴�һ��Ҫʹ��ջ����ڴ�, ����malloc���ܻ������,
- ���жϴ��������е��������ܺ����������̳߳�ͻ, ����������������!!!!
- */
- static char stack_trace[65536];
-
- int stack_depth = backtrace((void **)stack_trace, max_depth);
- int fp = open(path, O_APPEND|O_RDWR|O_CREAT, 0444);
- if(fp < 0)return;
- time_t t = time(NULL);
- char time_str[64];
- ctime_r(&t, time_str);
- const char *spilt_str = "---------------------------------------------------";
- write(fp, spilt_str, strlen(spilt_str));
- write(fp, time_str, strlen(time_str));
- backtrace_symbols_fd((void **)stack_trace, stack_depth, fp);
- close(fp);
- return;
-}
-
static void signal_handler(int signo)
{
- time_t last_time = time(NULL);
-
- while(time(NULL) < last_time + 10); /* wait 10 second, for DPDK IO module detect this process is not running */
+ //time_t last_time = time(NULL);
+ //while(time(NULL) < last_time + 10); /* wait 10 second, for DPDK IO module detect this process is not running */
signal(signo, SIG_DFL);
- //dump_backtrace(128, "./sapp_bt.log");
kill(getpid(), signo);
}
static void signal_take_over(void)
{
- if(0 == sapp_global_single.signal_take_over_sw){
+ sapp_config_t *pconfig = &sapp_global_val->config;
+ if (0 == sapp_global_single.signal_take_over_sw && 0 == pconfig->tools.signal_handler.signal)
+ {
return;
}
-
- signal(SIGABRT, signal_handler);
- signal(SIGSEGV, signal_handler);
- signal(SIGBUS, signal_handler);
+
+ signal(SIGUSR1, signal_handler);
+ signal(SIGUSR2, signal_handler);
+ //signal(pconfig->tools.signal_handler.signal, signal_handler);
}
@@ -116,11 +94,13 @@ int main(int argc, char *argv[])
sleep(1);
#endif
+ sapp_init_breakpad_mini();
+ signal_take_over();
+
if(MESA_platform_init(argc, argv) < 0){
exit(1);
}
- signal_take_over();
MESA_platform_run();