diff options
Diffstat (limited to 'lldb')
-rw-r--r-- | lldb/include/lldb/lldb-enumerations.h | 3 | ||||
-rw-r--r-- | lldb/source/Plugins/Process/Windows/Common/ProcessWindows.cpp | 1 | ||||
-rw-r--r-- | lldb/source/Target/Process.cpp | 6 |
3 files changed, 7 insertions, 3 deletions
diff --git a/lldb/include/lldb/lldb-enumerations.h b/lldb/include/lldb/lldb-enumerations.h index 8cce1358a07..7bf6fdaecf2 100644 --- a/lldb/include/lldb/lldb-enumerations.h +++ b/lldb/include/lldb/lldb-enumerations.h @@ -44,6 +44,9 @@ enum StateType { ///launched or attached to anything yet eStateAttaching, ///< Process is currently trying to attach eStateLaunching, ///< Process is in the process of launching + // The state changes eStateAttaching and eStateLaunching are both sent while the + // private state thread is either not yet started or paused. For that reason, they + // should only be signaled as public state changes, and not private state changes. eStateStopped, ///< Process or thread is stopped and can be examined. eStateRunning, ///< Process or thread is running and can't be examined. eStateStepping, ///< Process or thread is in the process of stepping and can diff --git a/lldb/source/Plugins/Process/Windows/Common/ProcessWindows.cpp b/lldb/source/Plugins/Process/Windows/Common/ProcessWindows.cpp index 13b8a49ca6e..42b4effc709 100644 --- a/lldb/source/Plugins/Process/Windows/Common/ProcessWindows.cpp +++ b/lldb/source/Plugins/Process/Windows/Common/ProcessWindows.cpp @@ -249,7 +249,6 @@ Status ProcessWindows::DoLaunch(Module *exe_module, bool stop_at_entry = launch_info.GetFlags().Test(eLaunchFlagStopAtEntry); m_session_data.reset(new ProcessWindowsData(stop_at_entry)); - SetPrivateState(eStateLaunching); DebugDelegateSP delegate(new LocalDebugDelegate(shared_from_this())); m_session_data->m_debugger.reset(new DebuggerThread(delegate)); DebuggerThreadSP debugger = m_session_data->m_debugger; diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp index 583a9200917..32ed39842e3 100644 --- a/lldb/source/Target/Process.cpp +++ b/lldb/source/Target/Process.cpp @@ -2688,8 +2688,7 @@ StateType Process::WaitForProcessStopPrivate(EventSP &event_sp, const Timeout<std::micro> &timeout) { StateType state; - // Now wait for the process to launch and return control to us, and then call - // DidLaunch: + while (true) { event_sp.reset(); state = GetStateChangedEventsPrivate(event_sp, timeout); @@ -2767,6 +2766,9 @@ Status Process::Launch(ProcessLaunchInfo &launch_info) { } } else { EventSP event_sp; + + // Now wait for the process to launch and return control to us, and then call + // DidLaunch: StateType state = WaitForProcessStopPrivate(event_sp, seconds(10)); if (state == eStateInvalid || !event_sp) { |