diff options
| author | RunitaiLinden <davep@lindenlab.com> | 2024-07-09 15:36:00 -0500 | 
|---|---|---|
| committer | RunitaiLinden <davep@lindenlab.com> | 2024-07-09 15:36:00 -0500 | 
| commit | f1f7426d5436bd019213fb9d086f513688ee5fe1 (patch) | |
| tree | c9041ec24154cb49aa97646660210fcfcb2df47a | |
| parent | 08f2236736f00a1f1d8b2d042b7423fb306dc94f (diff) | |
#1826 Fix for LL_ERRS crashing in mutex lock
| -rw-r--r-- | indra/llcommon/llerror.cpp | 13 | 
1 files changed, 7 insertions, 6 deletions
| diff --git a/indra/llcommon/llerror.cpp b/indra/llcommon/llerror.cpp index a45bc32028..fa24c2eaf4 100644 --- a/indra/llcommon/llerror.cpp +++ b/indra/llcommon/llerror.cpp @@ -55,6 +55,7 @@  #include "llsingleton.h"  #include "llstl.h"  #include "lltimer.h" +#include <boost/fiber/recursive_mutex.hpp>  // On Mac, got:  // #error "Boost.Stacktrace requires `_Unwind_Backtrace` function. Define @@ -506,7 +507,7 @@ namespace          LLError::TimeFunction               mTimeFunction;          Recorders                           mRecorders; -        LLCoros::Mutex                      mRecorderMutex; +        boost::fibers::recursive_mutex      mRecorderMutex;          int                                 mShouldLogCallCounter; @@ -1044,7 +1045,7 @@ namespace LLError              return;          }          SettingsConfigPtr s = Globals::getInstance()->getSettingsConfig(); -        LLCoros::LockType lock(s->mRecorderMutex); +        std::unique_lock<boost::fibers::recursive_mutex> lock(s->mRecorderMutex);          s->mRecorders.push_back(recorder);      } @@ -1055,7 +1056,7 @@ namespace LLError              return;          }          SettingsConfigPtr s = Globals::getInstance()->getSettingsConfig(); -        LLCoros::LockType lock(s->mRecorderMutex); +        std::unique_lock<boost::fibers::recursive_mutex> lock(s->mRecorderMutex);          s->mRecorders.erase(std::remove(s->mRecorders.begin(), s->mRecorders.end(), recorder),                              s->mRecorders.end());      } @@ -1104,7 +1105,7 @@ namespace LLError      std::shared_ptr<RECORDER> findRecorder()      {          SettingsConfigPtr s = Globals::getInstance()->getSettingsConfig(); -        LLCoros::LockType lock(s->mRecorderMutex); +        std::unique_lock<boost::fibers::recursive_mutex> lock(s->mRecorderMutex);          return findRecorderPos<RECORDER>(s).first;      } @@ -1115,7 +1116,7 @@ namespace LLError      bool removeRecorder()      {          SettingsConfigPtr s = Globals::getInstance()->getSettingsConfig(); -        LLCoros::LockType lock(s->mRecorderMutex); +        std::unique_lock<boost::fibers::recursive_mutex> lock(s->mRecorderMutex);          auto found = findRecorderPos<RECORDER>(s);          if (found.first)          { @@ -1221,7 +1222,7 @@ namespace          std::string escaped_message; -        LLCoros::LockType lock(s->mRecorderMutex); +        std::unique_lock<boost::fibers::recursive_mutex> lock(s->mRecorderMutex);          for (LLError::RecorderPtr& r : s->mRecorders)          {              if (!r->enabled()) | 
