diff options
author | Richard Linden <none@none> | 2014-01-30 19:35:34 -0800 |
---|---|---|
committer | Richard Linden <none@none> | 2014-01-30 19:35:34 -0800 |
commit | 5df86c9a6e258221440a775e229a5be25a4b7e51 (patch) | |
tree | bfb82d16c8413db104209b2f19f80f3203976e9d /indra/llcommon | |
parent | a712aab616b13a9887e00b5d37714f02d7fde6a0 (diff) |
fix for heap corruption crash on shutdown
don't set stopped flag until recorder object has been deleted
Diffstat (limited to 'indra/llcommon')
-rwxr-xr-x | indra/llcommon/llthread.cpp | 7 |
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; } |