diff options
Diffstat (limited to 'src/entry/sapp_main.c')
| -rw-r--r-- | src/entry/sapp_main.c | 44 |
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(); |
