diff --git a/indra/linux_crash_logger/llcrashloggerlinux.cpp b/indra/linux_crash_logger/llcrashloggerlinux.cpp
old mode 100644
new mode 100755
index 7316717193bbc1aa2b8f2ffaefdf90cbb01c76c1..62465f9937d486fd780fe4bd5a58738e35b89fcf
--- a/indra/linux_crash_logger/llcrashloggerlinux.cpp
+++ b/indra/linux_crash_logger/llcrashloggerlinux.cpp
@@ -133,6 +133,12 @@ bool LLCrashLoggerLinux::mainLoop()
 	return true;
 }
 
+bool LLCrashLoggerLinux::cleanup()
+{
+	commonCleanup();
+	return true;
+}
+
 void LLCrashLoggerLinux::updateApplication(const std::string& message)
 {
 	LLCrashLogger::updateApplication(message);
diff --git a/indra/linux_crash_logger/llcrashloggerlinux.h b/indra/linux_crash_logger/llcrashloggerlinux.h
old mode 100644
new mode 100755
index 65d5e4e653b8dc19b14b33a8463f77fd597fdb2b..dae6c46651ba642e401aa09874d4c2d2567eb92f
--- a/indra/linux_crash_logger/llcrashloggerlinux.h
+++ b/indra/linux_crash_logger/llcrashloggerlinux.h
@@ -39,6 +39,7 @@ class LLCrashLoggerLinux : public LLCrashLogger
 	virtual bool mainLoop();
 	virtual void updateApplication(const std::string& = LLStringUtil::null);
 	virtual void gatherPlatformSpecificFiles();
+	virtual bool cleanup();
 };
 
 #endif
diff --git a/indra/llcrashlogger/llcrashlogger.cpp b/indra/llcrashlogger/llcrashlogger.cpp
old mode 100644
new mode 100755
index 331a1692ee8abff68e12d4d02173634011f1741d..3461aa3e6ccdc4b18dcc8a8a37d8b12f003a15a3
--- a/indra/llcrashlogger/llcrashlogger.cpp
+++ b/indra/llcrashlogger/llcrashlogger.cpp
@@ -42,6 +42,7 @@
 #include "llpumpio.h"
 #include "llhttpclient.h"
 #include "llsdserialize.h"
+#include "llproxy.h"
 
 LLPumpIO* gServicePump;
 BOOL gBreak = false;
@@ -428,3 +429,9 @@ bool LLCrashLogger::init()
 	
 	return true;
 }
+
+// For cleanup code common to all platforms.
+void LLCrashLogger::commonCleanup()
+{
+	LLProxy::cleanupClass();
+}
diff --git a/indra/llcrashlogger/llcrashlogger.h b/indra/llcrashlogger/llcrashlogger.h
old mode 100644
new mode 100755
index 5d0cb5931ce2875f40a5b790e7a17392b525b4e9..1510d7e0b3d33ea4d0acc4e012c496a824da1ac8
--- a/indra/llcrashlogger/llcrashlogger.h
+++ b/indra/llcrashlogger/llcrashlogger.h
@@ -48,7 +48,8 @@ class LLCrashLogger : public LLApp
 	virtual void updateApplication(const std::string& message = LLStringUtil::null);
 	virtual bool init();
 	virtual bool mainLoop() = 0;
-	virtual bool cleanup() { return true; }
+	virtual bool cleanup() = 0;
+	void commonCleanup();
 	void setUserText(const std::string& text) { mCrashInfo["UserNotes"] = text; }
 	S32 getCrashBehavior() { return mCrashBehavior; }
 	bool runCrashLogPost(std::string host, LLSD data, std::string msg, int retries, int timeout);
diff --git a/indra/mac_crash_logger/llcrashloggermac.cpp b/indra/mac_crash_logger/llcrashloggermac.cpp
old mode 100644
new mode 100755
index b555e92b96e563f42e167d1c3585aca610418338..8f1c1a2dd0fba32c849252a9cac5e4491fad7688
--- a/indra/mac_crash_logger/llcrashloggermac.cpp
+++ b/indra/mac_crash_logger/llcrashloggermac.cpp
@@ -249,5 +249,6 @@ void LLCrashLoggerMac::updateApplication(const std::string& message)
 
 bool LLCrashLoggerMac::cleanup()
 {
+	commonCleanup();
 	return true;
 }
diff --git a/indra/win_crash_logger/llcrashloggerwindows.cpp b/indra/win_crash_logger/llcrashloggerwindows.cpp
old mode 100644
new mode 100755
index 170babbb985695ef22fcb6b78fd1b9e65003f9cf..36d988ead750b3d9689068d5592b9e380af5df39
--- a/indra/win_crash_logger/llcrashloggerwindows.cpp
+++ b/indra/win_crash_logger/llcrashloggerwindows.cpp
@@ -370,5 +370,6 @@ bool LLCrashLoggerWindows::cleanup()
 		sleep_and_pump_messages(3);
 	}
 	PostQuitMessage(0);
+	commonCleanup();
 	return true;
 }