summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/source/Target/Process.cpp5
-rw-r--r--lldb/source/Target/Target.cpp4
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
OpenPOWER on IntegriCloud