HomePhabricator

Fix process launch failure on FreeBSD after r365761

Authored by dim on Oct 10 2019, 1:26 PM.

Description

Fix process launch failure on FreeBSD after r365761

Summary:
After rLLDB365761, and with LLVM_ENABLE_ABI_BREAKING_CHECKS enabled,
launching any process on FreeBSD crashes lldb with:

Expected<T> must be checked before access or destruction.
Expected<T> value was in success state. (Note: Expected<T> values in success mode must still be checked prior to being destroyed).

This is because m_operation_thread and m_monitor_thread were wrapped
in llvm::Expected<>, but this requires the objects to be correctly
initialized before accessing them.

To fix the crashes, use llvm::Optional<> for the members (as indicated
by labath), and use local variables to store the return values of
LaunchThread and StartMonitoringChildProcess. Then, only assign to
the member variables after checking if the return values indicated
success.

Reviewers: devnexen, emaste, MaskRay, mgorny

Reviewed By: devnexen

Subscribers: jfb, labath, krytarowski, lldb-commits

Differential Revision: https://reviews.llvm.org/D68723

llvm-svn: 374444

Details

Committed
dimOct 10 2019, 1:26 PM
Reviewer
devnexen
Differential Revision
D68723: Fix process launch failure on FreeBSD after r365761
Parents
rG79f243296654: [MSVC] Automatically add atlmfc folder to include and libpath.
Branches
Unknown
Tags
Unknown