From c0b15c2982428dfe763bbba7ea2ed91790ea0dd4 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Sun, 6 May 2018 16:46:41 +0200 Subject: [PATCH] signals: don't trap segfault/abort when envvar NANO_NOCATCH is defined When the user wants to get a backtrace, the crash handler shouldn't kick in. --- doc/nano.1 | 4 ++++ src/nano.c | 2 ++ 2 files changed, 6 insertions(+) diff --git a/doc/nano.1 b/doc/nano.1 index bf8ff871..c7fb7433 100644 --- a/doc/nano.1 +++ b/doc/nano.1 @@ -309,6 +309,10 @@ not by default distinguish modified from unmodified arrow keys. Please report any other bugs that you encounter via: .br \fIhttps://savannah.gnu.org/bugs/?group=nano\fR. +.sp +When nano crashes, it will save any modified buffers to emergency .save files. +If you are able to reproduce the crash and you want to get a backtrace, define +the environment variable \fBNANO_NOCATCH\fR. .SH HOMEPAGE \fIhttps://nano-editor.org/\fR diff --git a/src/nano.c b/src/nano.c index 2398d91c..2620b418 100644 --- a/src/nano.c +++ b/src/nano.c @@ -1213,6 +1213,7 @@ void signal_init(void) } #ifndef DEBUG + if (getenv("NANO_NOCATCH") == NULL) { /* Trap SIGSEGV and SIGABRT to save any changed buffers and reset * the terminal to a usable state. Reset these handlers to their * defaults as soon as their signal fires. */ @@ -1220,6 +1221,7 @@ void signal_init(void) act.sa_flags |= SA_RESETHAND; sigaction(SIGSEGV, &act, NULL); sigaction(SIGABRT, &act, NULL); + } #endif }