From cc3cc1f392e14e53fcf6054ac6d7e3752c145f8f Mon Sep 17 00:00:00 2001 From: Michael Rennie Date: Thu, 18 Aug 2016 16:27:04 +0100 Subject: [PATCH] Wait for the socket thread to finish when unloading, close the open socket. The Android loader dlopens a layer twice, so if the layer did not clean up properly the first time it is unloaded then we will fail to open a socket on the default port 38920 during the second dlopen. --- renderdoc/core/core.cpp | 1 + renderdoc/core/remote_access.cpp | 2 ++ 2 files changed, 3 insertions(+) diff --git a/renderdoc/core/core.cpp b/renderdoc/core/core.cpp index 06c413591..e1ed7def7 100644 --- a/renderdoc/core/core.cpp +++ b/renderdoc/core/core.cpp @@ -320,6 +320,7 @@ RenderDoc::~RenderDoc() { m_RemoteServerThreadShutdown = true; // don't join, just close the thread, as we can't wait while in the middle of module unloading + Threading::Sleep(50); Threading::CloseThread(m_RemoteThread); m_RemoteThread = 0; } diff --git a/renderdoc/core/remote_access.cpp b/renderdoc/core/remote_access.cpp index c13eed2e9..dd2e073a3 100644 --- a/renderdoc/core/remote_access.cpp +++ b/renderdoc/core/remote_access.cpp @@ -353,6 +353,8 @@ void RenderDoc::RemoteAccessServerThread(void *s) Threading::CloseThread(clientThread); clientThread = 0; + SAFE_DELETE(sock); + Threading::ReleaseModuleExitThread(); }