summaryrefslogtreecommitdiff
path: root/indra/llcommon/llthread.cpp
diff options
context:
space:
mode:
authorRichard Linden <none@none>2014-01-30 19:35:34 -0800
committerRichard Linden <none@none>2014-01-30 19:35:34 -0800
commit5df86c9a6e258221440a775e229a5be25a4b7e51 (patch)
treebfb82d16c8413db104209b2f19f80f3203976e9d /indra/llcommon/llthread.cpp
parenta712aab616b13a9887e00b5d37714f02d7fde6a0 (diff)
fix for heap corruption crash on shutdown
don't set stopped flag until recorder object has been deleted
Diffstat (limited to 'indra/llcommon/llthread.cpp')
-rwxr-xr-xindra/llcommon/llthread.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/indra/llcommon/llthread.cpp b/indra/llcommon/llthread.cpp
index cf7768c67b..fd1f8ee096 100755
--- a/indra/llcommon/llthread.cpp
+++ b/indra/llcommon/llthread.cpp
@@ -143,12 +143,13 @@ void *APR_THREAD_FUNC LLThread::staticRun(apr_thread_t *apr_threadp, void *datap
//LL_INFOS() << "LLThread::staticRun() Exiting: " << threadp->mName << LL_ENDL;
- // We're done with the run function, this thread is done executing now.
- threadp->mStatus = STOPPED;
-
delete threadp->mRecorder;
threadp->mRecorder = NULL;
+ // 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;
+
return NULL;
}