Fix race condition with -o "process launch" on linux
authorPavel Labath <labath@google.com>
Fri, 6 Mar 2015 10:52:47 +0000 (10:52 +0000)
committerPavel Labath <labath@google.com>
Fri, 6 Mar 2015 10:52:47 +0000 (10:52 +0000)
commit78521ef545bbf6c6aba29368fb011e1280f3541d
tree4e45866e30bbfa304de19bc74da1fa97b796704e
parent6adbd7aecf5182ee5d7b50a3547c89de1483b7e3
Fix race condition with -o "process launch" on linux

Summary:
starting a debug session on linux with -o "process launch" lldb parameter was failing since
Target::Launch (in sychronous mode) is expecting to be able to receive public process events.
However, PlatformLinux did not set up event hijacking on process launch, which caused these
events to be processed elsewhere and left Target::Launch hanging. This patch enables event
interception in PlatformLinux (which was commented out).

Upon enabling event interception, I noticed an issue, which I traced back to the inconsistent
state of public run lock, which remained false even though public and private process states were
"stopped". I addressed this by making sure the run lock is "stopped" upon exit from
WaitForProcessToStop (which already had similar provisions for other return paths).

Test Plan: This should fix the intermittent TestFormats failure we have been experiencing on Linux.

Reviewers: jingham, clayborg, vharron

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D8079

llvm-svn: 231460
lldb/source/Plugins/Platform/Linux/PlatformLinux.cpp
lldb/source/Target/Process.cpp