From fb793870fe95f1951d7c30ea6068e187b9dededd Mon Sep 17 00:00:00 2001 From: Mark Palange Date: Tue, 23 Dec 2008 19:39:58 +0000 Subject: QAR-1142 merging 1.22 RC0-RC4 changes. svn merge -c 106471 svn+ssh://svn.lindenlab.com/svn/linden/qa/viewer_1-22-106055_merge --- indra/newview/llwatchdog.cpp | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'indra/newview/llwatchdog.cpp') diff --git a/indra/newview/llwatchdog.cpp b/indra/newview/llwatchdog.cpp index 27a0155b14..c611aa0b91 100644 --- a/indra/newview/llwatchdog.cpp +++ b/indra/newview/llwatchdog.cpp @@ -35,6 +35,15 @@ const U32 WATCHDOG_SLEEP_TIME_USEC = 1000000; +void default_killer_callback() +{ +#ifdef LL_WINDOWS + RaiseException(0,0,0,0); +#else + raise(SIGQUIT); +#endif +} + // This class runs the watchdog timing thread. class LLWatchdogTimerThread : public LLThread { @@ -52,7 +61,7 @@ public: void stop() { mStopping = true; - ms_sleep(1); + mSleepMsecs = 1; } /* virtual */ void run() @@ -146,7 +155,8 @@ void LLWatchdogTimeout::ping(const std::string& state) LLWatchdog::LLWatchdog() : mSuspectsAccessMutex(NULL), mTimer(NULL), - mLastClockCount(0) + mLastClockCount(0), + mKillerCallback(&default_killer_callback) { } @@ -168,8 +178,9 @@ void LLWatchdog::remove(LLWatchdogEntry* e) unlockThread(); } -void LLWatchdog::init() +void LLWatchdog::init(killer_event_callback func) { + mKillerCallback = func; if(!mSuspectsAccessMutex && !mTimer) { mSuspectsAccessMutex = new LLMutex(NULL); @@ -238,11 +249,7 @@ void LLWatchdog::run() } llinfos << "Watchdog detected error:" << llendl; -#ifdef LL_WINDOWS - RaiseException(0,0,0,0); -#else - raise(SIGQUIT); -#endif + mKillerCallback(); } } -- cgit v1.2.3