diff options
| author | Pavel Labath <labath@google.com> | 2016-04-11 16:40:09 +0000 |
|---|---|---|
| committer | Pavel Labath <labath@google.com> | 2016-04-11 16:40:09 +0000 |
| commit | bb5c39d79e4b0a187c180bc25d41921eb7d51dac (patch) | |
| tree | f5b67d1bdddf38d4817fb2f9064df6a877a04be5 | |
| parent | c98de13871b3376ba7c25dd33ca49a9712e6542b (diff) | |
| download | bcm5719-llvm-bb5c39d79e4b0a187c180bc25d41921eb7d51dac.tar.gz bcm5719-llvm-bb5c39d79e4b0a187c180bc25d41921eb7d51dac.zip | |
[Driver] Fix a segfault in signal handlers
Summary:
If we recieve a SIGCONT or SIGTSTP, while the driver is shutting down (which, sometimes, we do,
for reasons which are not completely clear to me), we would crash to due a null pointer
dereference. Guard against this situation.
Reviewers: clayborg
Subscribers: lldb-commits
Differential Revision: http://reviews.llvm.org/D18965
llvm-svn: 265958
| -rw-r--r-- | lldb/tools/driver/Driver.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/lldb/tools/driver/Driver.cpp b/lldb/tools/driver/Driver.cpp index fdf58ca5c3e..328b90beab4 100644 --- a/lldb/tools/driver/Driver.cpp +++ b/lldb/tools/driver/Driver.cpp @@ -1283,7 +1283,9 @@ sigint_handler (int signo) void sigtstp_handler (int signo) { - g_driver->GetDebugger().SaveInputTerminalState(); + if (g_driver) + g_driver->GetDebugger().SaveInputTerminalState(); + signal (signo, SIG_DFL); kill (getpid(), signo); signal (signo, sigtstp_handler); @@ -1292,7 +1294,9 @@ sigtstp_handler (int signo) void sigcont_handler (int signo) { - g_driver->GetDebugger().RestoreInputTerminalState(); + if (g_driver) + g_driver->GetDebugger().RestoreInputTerminalState(); + signal (signo, SIG_DFL); kill (getpid(), signo); signal (signo, sigcont_handler); |

