diff options
| -rw-r--r-- | lldb/source/Target/Process.cpp | 5 | ||||
| -rw-r--r-- | lldb/source/Target/Target.cpp | 4 |
2 files changed, 7 insertions, 2 deletions
diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp index fb6614d3f67..8968c755bc4 100644 --- a/lldb/source/Target/Process.cpp +++ b/lldb/source/Target/Process.cpp @@ -279,6 +279,11 @@ Process::Finalize() { // Do any cleanup needed prior to being destructed... Subclasses // that override this method should call this superclass method as well. + + // We need to destroy the loader before the derived Process class gets destroyed + // since it is very likely that undoing the loader will require access to the real process. + if (m_dyld_ap.get() != NULL) + m_dyld_ap.reset(); } void diff --git a/lldb/source/Target/Target.cpp b/lldb/source/Target/Target.cpp index b76f9f6d573..175aa7dfaab 100644 --- a/lldb/source/Target/Target.cpp +++ b/lldb/source/Target/Target.cpp @@ -98,8 +98,8 @@ Target::DeleteCurrentProcess () m_section_load_list.Clear(); if (m_process_sp->IsAlive()) m_process_sp->Destroy(); - else - m_process_sp->Finalize(); + + m_process_sp->Finalize(); // Do any cleanup of the target we need to do between process instances. // NB It is better to do this before destroying the process in case the |

