summaryrefslogtreecommitdiffstats
path: root/lldb/source/Commands/CommandObjectProcess.cpp
diff options
context:
space:
mode:
authorTodd Fiala <todd.fiala@gmail.com>2014-08-12 14:33:19 +0000
committerTodd Fiala <todd.fiala@gmail.com>2014-08-12 14:33:19 +0000
commita3b89e272c6f99d878d674a3346808e06fa75e28 (patch)
treebfa32c160da45f4b8856f5687aff5f5894ee5bcd /lldb/source/Commands/CommandObjectProcess.cpp
parent01d9e24f7044710e685ed57ec697df30c8038a90 (diff)
downloadbcm5719-llvm-a3b89e272c6f99d878d674a3346808e06fa75e28.tar.gz
bcm5719-llvm-a3b89e272c6f99d878d674a3346808e06fa75e28.zip
Fix iohandler prompt race condition.
This issue caused the lldb prompt to not show up in certain cases, very noticeable on Linux systems. See details on this review: http://reviews.llvm.org/D4863 And on this lldb-commits thread: http://lists.cs.uiuc.edu/pipermail/lldb-commits/Week-of-Mon-20140811/012306.html Change by Shawn Best. (Much useful help and testing by the rest of the community, thanks all!) llvm-svn: 215446
Diffstat (limited to 'lldb/source/Commands/CommandObjectProcess.cpp')
-rw-r--r--lldb/source/Commands/CommandObjectProcess.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/lldb/source/Commands/CommandObjectProcess.cpp b/lldb/source/Commands/CommandObjectProcess.cpp
index 5dde4dd7d07..5678ae40464 100644
--- a/lldb/source/Commands/CommandObjectProcess.cpp
+++ b/lldb/source/Commands/CommandObjectProcess.cpp
@@ -773,10 +773,16 @@ protected:
process->GetThreadList().GetThreadAtIndex(idx)->SetResumeState (eStateRunning, override_suspend);
}
}
-
+
Error error(process->Resume());
+
if (error.Success())
{
+ // There is a race condition where this thread will return up the call stack to the main command
+ // handler and show an (lldb) prompt before HandlePrivateEvent (from PrivateStateThread) has
+ // a chance to call PushProcessIOHandler().
+ process->SyncIOHandler(2000);
+
result.AppendMessageWithFormat ("Process %" PRIu64 " resuming\n", process->GetID());
if (synchronous_execution)
{
OpenPOWER on IntegriCloud