From 758348974bdb1ccd5bd8231d931466d2fd1d28ca Mon Sep 17 00:00:00 2001 From: Steven Michaud Date: Mon, 12 Mar 2012 15:13:14 -0500 Subject: [PATCH] Bug 730282 - Firefox crash @ mozilla::SignalTracerThread. r=ted.mielczarek. --- widget/cocoa/WidgetTraceEvent.mm | 2 ++ widget/gtk2/WidgetTraceEvent.cpp | 2 ++ widget/windows/WidgetTraceEvent.cpp | 1 + 3 files changed, 5 insertions(+) diff --git a/widget/cocoa/WidgetTraceEvent.mm b/widget/cocoa/WidgetTraceEvent.mm index 1777e96e0c54..9ebafdd9ae49 100644 --- a/widget/cocoa/WidgetTraceEvent.mm +++ b/widget/cocoa/WidgetTraceEvent.mm @@ -74,6 +74,8 @@ void CleanUpWidgetTracing() // This function is called from the main (UI) thread. void SignalTracerThread() { + if (!sMutex || !sCondVar) + return; MutexAutoLock lock(*sMutex); NS_ABORT_IF_FALSE(!sTracerProcessed, "Tracer synchronization state is wrong"); sTracerProcessed = true; diff --git a/widget/gtk2/WidgetTraceEvent.cpp b/widget/gtk2/WidgetTraceEvent.cpp index 8c090ba7b504..7d708cbdb4f5 100644 --- a/widget/gtk2/WidgetTraceEvent.cpp +++ b/widget/gtk2/WidgetTraceEvent.cpp @@ -99,6 +99,8 @@ bool FireAndWaitForTracerEvent() void SignalTracerThread() { + if (!sMutex || !sCondVar) + return; MutexAutoLock lock(*sMutex); NS_ABORT_IF_FALSE(!sTracerProcessed, "Tracer synchronization state is wrong"); sTracerProcessed = true; diff --git a/widget/windows/WidgetTraceEvent.cpp b/widget/windows/WidgetTraceEvent.cpp index fec950812277..6cec555bfe7e 100644 --- a/widget/windows/WidgetTraceEvent.cpp +++ b/widget/windows/WidgetTraceEvent.cpp @@ -125,6 +125,7 @@ bool InitWidgetTracing() void CleanUpWidgetTracing() { CloseHandle(sEventHandle); + sEventHandle = NULL; } // This function is called from the main (UI) thread.