diff options
| author | Adrian McCarthy <amccarth@google.com> | 2017-09-19 18:07:33 +0000 |
|---|---|---|
| committer | Adrian McCarthy <amccarth@google.com> | 2017-09-19 18:07:33 +0000 |
| commit | 3887ba8d3831c7ff097fd49f109b0dc24a0b289f (patch) | |
| tree | 93a9327ab6e4156c9ea822868032e05253c6e035 /lldb/source/Target/Process.cpp | |
| parent | 6567ecd74106a38e48fceb0e43748819d462c039 (diff) | |
| download | bcm5719-llvm-3887ba8d3831c7ff097fd49f109b0dc24a0b289f.tar.gz bcm5719-llvm-3887ba8d3831c7ff097fd49f109b0dc24a0b289f.zip | |
Re-land r313210 - Fix for bug 34532 - A few rough corners related to post-mortem debugging (core/minidump)
The main change is to avoid setting the process state as running when
debugging core/minidumps (details in the bug). Also included a few small,
related fixes around how the errors propagate in this case.
Fixed the FreeBSD/Windows break: the intention was to keep
Process::WillResume() and Process::DoResume() "in-sync", but this had the
unfortunate consequence of breaking Process sub-classes which don't override
WillResume().
The safer approach is to keep Process::WillResume() untouched and only
override it in the minidump and core implementations.
patch by lemo
Bug: https://bugs.llvm.org/show_bug.cgi?id=34532
Differential Revision: https://reviews.llvm.org/D37651
llvm-svn: 313655
Diffstat (limited to 'lldb/source/Target/Process.cpp')
| -rw-r--r-- | lldb/source/Target/Process.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp index 6cbe289ef26..16f56881dcb 100644 --- a/lldb/source/Target/Process.cpp +++ b/lldb/source/Target/Process.cpp @@ -1621,7 +1621,12 @@ Status Process::Resume() { log->Printf("Process::Resume: -- TrySetRunning failed, not resuming."); return error; } - return PrivateResume(); + Status error = PrivateResume(); + if (!error.Success()) { + // Undo running state change + m_public_run_lock.SetStopped(); + } + return error; } Status Process::ResumeSynchronous(Stream *stream) { @@ -1650,6 +1655,9 @@ Status Process::ResumeSynchronous(Stream *stream) { error.SetErrorStringWithFormat( "process not in stopped state after synchronous resume: %s", StateAsCString(state)); + } else { + // Undo running state change + m_public_run_lock.SetStopped(); } // Undo the hijacking of process events... |

