mirror of
https://github.com/intel/llvm.git
synced 2026-01-20 01:58:44 +08:00
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
This commit is contained in:
@@ -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...
|
||||
|
||||
Reference in New Issue
Block a user