diff --git a/libfreerdp/utils/signal.c b/libfreerdp/utils/signal.c index 0510ef4ee..b529b7823 100644 --- a/libfreerdp/utils/signal.c +++ b/libfreerdp/utils/signal.c @@ -43,6 +43,7 @@ int freerdp_handle_signals(void) #else #include +#include volatile sig_atomic_t terminal_needs_reset = 0; int terminal_fildes = 0; @@ -53,8 +54,15 @@ static void fatal_handler(int signum) { struct sigaction default_sigaction; sigset_t this_mask; - WLog_INFO(TAG, "Caught signal '%s' [%d]", strsignal(signum), signum); + static BOOL recursive = FALSE; + if (!recursive) + { + recursive = TRUE; + WLog_ERR(TAG, "Caught signal '%s' [%d]", strsignal(signum), signum); + + winpr_log_backtrace(TAG, WLOG_ERROR, 20); + } if (terminal_needs_reset) tcsetattr(terminal_fildes, TCSAFLUSH, &orig_flags);