diff options
| author | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2018-01-29 12:40:44 +0000 | 
|---|---|---|
| committer | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2018-01-29 12:40:44 +0000 | 
| commit | b10e46167b7aa3b44c4d2fb3fcdcbdc4f6e11096 (patch) | |
| tree | 0494c516d16ed3297f5762024094e330f6a35cce /indra/llcommon | |
| parent | b654513257ea7e5f74d61c9b4586e480838be23c (diff) | |
MAINT-8234 Mesh tread protections and removed unnecessary try in staticRun()
Diffstat (limited to 'indra/llcommon')
| -rw-r--r-- | indra/llcommon/llthread.cpp | 58 | 
1 files changed, 20 insertions, 38 deletions
| diff --git a/indra/llcommon/llthread.cpp b/indra/llcommon/llthread.cpp index b96b2ce4bc..e353230791 100644 --- a/indra/llcommon/llthread.cpp +++ b/indra/llcommon/llthread.cpp @@ -129,50 +129,32 @@ void *APR_THREAD_FUNC LLThread::staticRun(apr_thread_t *apr_threadp, void *datap      sThreadID = threadp->mID; -    try +    // Run the user supplied function +    do       { -        // Run the user supplied function -        do  +        try          { -            try -            { -                threadp->run(); -            } -            catch (const LLContinueError &e) -            { -                LL_WARNS("THREAD") << "ContinueException on thread '" << threadp->mName << -                    "' reentering run(). Error what is: '" << e.what() << "'" << LL_ENDL; -                //output possible call stacks to log file. -                LLError::LLCallStacks::print(); - -                LOG_UNHANDLED_EXCEPTION("LLThread"); -                continue; -            } -            break; - -        } while (true); +            threadp->run(); +        } +        catch (const LLContinueError &e) +        { +            LL_WARNS("THREAD") << "ContinueException on thread '" << threadp->mName << +                "' reentering run(). Error what is: '" << e.what() << "'" << LL_ENDL; +            //output possible call stacks to log file. +            LLError::LLCallStacks::print(); -        //LL_INFOS() << "LLThread::staticRun() Exiting: " << threadp->mName << LL_ENDL; +            LOG_UNHANDLED_EXCEPTION("LLThread"); +            continue; +        } +        break; -        // We're done with the run function, this thread is done executing now. -        //NB: we are using this flag to sync across threads...we really need memory barriers here -        threadp->mStatus = STOPPED; -    } -    catch (std::bad_alloc) -    { -        threadp->mStatus = CRASHED; -        LLMemory::logMemoryInfo(TRUE); +    } while (true); -        //output possible call stacks to log file. -        LLError::LLCallStacks::print(); +    //LL_INFOS() << "LLThread::staticRun() Exiting: " << threadp->mName << LL_ENDL; -        LL_ERRS("THREAD") << "Bad memory allocation in LLThread::staticRun() named '" << threadp->mName << "'!" << LL_ENDL; -    } -    catch (...) -    { -        threadp->mStatus = CRASHED; -        CRASH_ON_UNHANDLED_EXCEPTION("LLThread"); -    } +    // We're done with the run function, this thread is done executing now. +    //NB: we are using this flag to sync across threads...we really need memory barriers here +    threadp->mStatus = STOPPED;      delete threadp->mRecorder;      threadp->mRecorder = NULL; | 
