When PROX detects an error condition at startup, it calls PROX_PANIC
which prints an message before calling rte_panic to end the application.
If ncurses was already started, this results in the message being printed
in ncurses (and prox.log) then leaving ncurses; hence the message is usually
not visible to the user (until it open prox.log), giving the impression of an
unexpected crash.
With this fix, the error message is repeated after closing ncurses, hence the message
will be printed on stdout.
Note that it might also be printed twice on stdout if ncurses was not already started.
As part of this fix, prox.log is now properly closed.
Change-Id: If41875843f1a39bc715f4264b3992c3fa018394e
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
if (scr != NULL) {
endwin();
}
+ scr = NULL;
}
static void pps_print(WINDOW *dst_scr, int y, int x, uint64_t val, int is_blue)
tsc_off = rte_rdtsc() + 2500000000;
}
+void plog_end(void)
+{
+ if (fp)
+ fclose(fp);
+ fp = NULL;
+}
+
int plog_set_lvl(int lvl)
{
if (lvl <= PROX_MAX_LOG_LVL) {
#endif
void plog_init(const char *log_name, int log_name_pid);
+void plog_end(void);
void file_print(const char *str);
int plog_set_lvl(int lvl);
if (cond) { \
plog_info(__VA_ARGS__); \
display_end(); \
+ plog_end(); \
+ plog_info(__VA_ARGS__); \
if (prox_cfg.flags & DSF_DAEMON) { \
pid_t ppid = getppid(); \
plog_info("sending SIGUSR2 to %d\n", ppid);\