diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2009-12-17 13:54:23 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2009-12-17 13:54:23 +0100 |
commit | 1341f0c56cf70700e997075239b8ad7f108a611f (patch) | |
tree | b92a2eb688d7c72666f167022b2b1e6166948040 | |
parent | 5c5215b8c213cd68523813258f7e70313034f081 (diff) | |
download | abrt-1341f0c56cf70700e997075239b8ad7f108a611f.tar.gz abrt-1341f0c56cf70700e997075239b8ad7f108a611f.tar.xz abrt-1341f0c56cf70700e997075239b8ad7f108a611f.zip |
further robustification of signal handler
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | src/Daemon/Daemon.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/Daemon/Daemon.cpp b/src/Daemon/Daemon.cpp index 8c7d0095..5c1a7ace 100644 --- a/src/Daemon/Daemon.cpp +++ b/src/Daemon/Daemon.cpp @@ -399,11 +399,15 @@ static int Lock() static void handle_fatal_signal(int signo) { - s_sig_caught = signo; - // Enable for debug only, malloc & printf are unsafe in signal handlers + // Enable for debugging only, malloc/printf are unsafe in signal handlers //VERB3 log("Got signal %d", signo); + + uint8_t l_sig_caught; + s_sig_caught = l_sig_caught = signo; + /* Using local copy of s_sig_caught so that concurrent signal + * won't change it under us */ if (s_signal_pipe_write >= 0) - write(s_signal_pipe_write, &s_sig_caught, 1); + write(s_signal_pipe_write, &l_sig_caught, 1); } /* Signal pipe handler */ |