diff options
author | Todd Fiala <todd.fiala@gmail.com> | 2014-08-12 14:33:19 +0000 |
---|---|---|
committer | Todd Fiala <todd.fiala@gmail.com> | 2014-08-12 14:33:19 +0000 |
commit | a3b89e272c6f99d878d674a3346808e06fa75e28 (patch) | |
tree | bfa32c160da45f4b8856f5687aff5f5894ee5bcd /lldb/source/Commands/CommandObjectProcess.cpp | |
parent | 01d9e24f7044710e685ed57ec697df30c8038a90 (diff) | |
download | bcm5719-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.cpp | 8 |
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) { |