HomePhabricator

Fix a race on process exit

Description

Fix a race on process exit

Summary:
Process::SetExitStatus was popping the process io handler and resetting m_process_input_reader
shared pointer, which is not a safe thing to do as the function is called asynchronously and
other threads may be accessing the member variable. (E.g. if the process terminates really
quickly, the private state thread might only be in the process of pushing the handler on the
stack. Sometimes, this leads to deadlock, as the shared pointer's state gets corrupted by the
concurrent access.

Since the IOHandler will be popped anyway in Process:HandleProcessStateChangedEvent when the
exited event gets processed, doing the same in SetExitStatus seems to be unnecessary.

Reviewers: clayborg

Subscribers: lldb-commits

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

Details

Committed
labathJul 12 2016, 2:37 AM
Differential Revision
D22209: Fix a race on process exit
Parents
rL275164: Dwarf parser: don't lookup void typedefs in the DWO
Branches
Unknown
Tags
Unknown