X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvlib%2Funix%2Fmain.c;h=7f1a8f35126dabfeb0e6a681b286ea75d09a76c3;hb=10a8bda37eed33ada1e7c6ece7bda1fe066ba541;hp=3ec4c342cf13e6676812047df46ab1eab62ece03;hpb=f8d50682cd1245f6f5ce4c846ca6f1bdc11255a6;p=vpp.git diff --git a/src/vlib/unix/main.c b/src/vlib/unix/main.c index 3ec4c342cf1..7f1a8f35126 100755 --- a/src/vlib/unix/main.c +++ b/src/vlib/unix/main.c @@ -91,7 +91,7 @@ unsetup_signal_handlers (int sig) /* allocate this buffer from mheap when setting up the signal handler. dangerous to vec_resize it when crashing, mheap itself might have been - corruptted already */ + corrupted already */ static u8 *syslog_msg = 0; static int last_signum = 0; static uword last_faulting_address = 0; @@ -177,10 +177,14 @@ unix_signal_handler (int signum, siginfo_t * si, ucontext_t * uc) syslog (LOG_ERR | LOG_DAEMON, "%s", syslog_msg); } - /* have to remove SIGABRT to avoid recusive - os_exit calling abort() */ + /* have to remove SIGABRT to avoid recursive - os_exit calling abort() */ unsetup_signal_handlers (SIGABRT); - os_exit (1); + /* os_exit(1) causes core generation, do not do this for SIGINT */ + if (signum == SIGINT) + os_exit (0); + else + os_exit (1); } else clib_warning ("%s", syslog_msg); @@ -372,6 +376,7 @@ VLIB_REGISTER_NODE (startup_config_node,static) = { .function = startup_config_process, .type = VLIB_NODE_TYPE_PROCESS, .name = "startup-config-process", + .process_log2_n_stack_bytes = 18, }; /* *INDENT-ON* */ @@ -500,6 +505,11 @@ unix_config (vlib_main_t * vm, unformat_input_t * input) vlib_default_runtime_dir, 0); } + /* Ensure the runtime directory is created */ + error = vlib_unix_recursive_mkdir ((char *) um->runtime_dir); + if (error) + return error; + error = setup_signal_handlers (um); if (error) return error;