summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp')
-rw-r--r--lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp b/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp
index ba8e4bede2f..0551596f4cc 100644
--- a/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp
+++ b/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp
@@ -1262,7 +1262,16 @@ NativeProcessLinux::MonitorSIGTRAP(const siginfo_t &info, NativeThreadLinux &thr
SetExitStatus (convert_pid_status_to_exit_type (data), convert_pid_status_to_return_code (data), nullptr, true);
}
- ResumeThread(thread, thread.GetState(), LLDB_INVALID_SIGNAL_NUMBER);
+ StateType state = thread.GetState();
+ if (! StateIsRunningState(state))
+ {
+ // Due to a kernel bug, we may sometimes get this stop after the inferior gets a
+ // SIGKILL. This confuses our state tracking logic in ResumeThread(), since normally,
+ // we should not be receiving any ptrace events while the inferior is stopped. This
+ // makes sure that the inferior is resumed and exits normally.
+ state = eStateRunning;
+ }
+ ResumeThread(thread, state, LLDB_INVALID_SIGNAL_NUMBER);
break;
}
OpenPOWER on IntegriCloud