summaryrefslogtreecommitdiff
path: root/indra/llcommon/llthread.cpp
diff options
context:
space:
mode:
authorAndrey Kleshchev <andreykproductengine@lindenlab.com>2018-01-29 12:40:44 +0000
committerAndrey Kleshchev <andreykproductengine@lindenlab.com>2018-01-29 12:40:44 +0000
commitb10e46167b7aa3b44c4d2fb3fcdcbdc4f6e11096 (patch)
tree0494c516d16ed3297f5762024094e330f6a35cce /indra/llcommon/llthread.cpp
parentb654513257ea7e5f74d61c9b4586e480838be23c (diff)
MAINT-8234 Mesh tread protections and removed unnecessary try in staticRun()
Diffstat (limited to 'indra/llcommon/llthread.cpp')
-rw-r--r--indra/llcommon/llthread.cpp58
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;