From f1b7fce1db6cd7a8f312216baaa8fada931b2579 Mon Sep 17 00:00:00 2001 From: Xiaohong Bao Date: Tue, 4 Jan 2011 16:28:40 -0700 Subject: a debug tool to detect LLPointer issues for SH-694: check if there are any other LLPointer issues in the mesh model uploading flow and fix them if exist. This debug tool is off by default. To turn it on, set LL_REF_COUNT_DEBUG to be 1 in the header file "llcommon/llrefcount.h". --- indra/llcommon/llrefcount.h | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'indra/llcommon/llrefcount.h') diff --git a/indra/llcommon/llrefcount.h b/indra/llcommon/llrefcount.h index 19f008b15c..693c1c4b83 100644 --- a/indra/llcommon/llrefcount.h +++ b/indra/llcommon/llrefcount.h @@ -28,6 +28,11 @@ #include +#define LL_REF_COUNT_DEBUG 0 +#if LL_REF_COUNT_DEBUG +class LLMutex ; +#endif + //---------------------------------------------------------------------------- // RefCount objects should generally only be accessed by way of LLPointer<>'s // see llthread.h for LLThreadSafeRefCount @@ -43,12 +48,16 @@ protected: public: LLRefCount(); - void ref() const +#if LL_REF_COUNT_DEBUG + void ref() const ; + S32 unref() const ; +#else + inline void LLRefCount::ref() const { mRef++; } - S32 unref() const + inline S32 LLRefCount::unref() const { llassert(mRef >= 1); if (0 == --mRef) @@ -58,6 +67,7 @@ public: } return mRef; } +#endif //NOTE: when passing around a const LLRefCount object, this can return different results // at different types, since mRef is mutable @@ -68,6 +78,12 @@ public: private: mutable S32 mRef; + +#if LL_REF_COUNT_DEBUG + LLMutex* mMutexp ; + mutable U32 mLockedThreadID ; + mutable BOOL mCrashAtUnlock ; +#endif }; #endif -- cgit v1.2.3 From c876e78c10d749f3d4ec9ba00e6ef0ca1cfd4851 Mon Sep 17 00:00:00 2001 From: Xiaohong Bao Date: Tue, 4 Jan 2011 17:51:58 -0700 Subject: trival: fix compiling errors for Linux. --- indra/llcommon/llrefcount.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indra/llcommon/llrefcount.h') diff --git a/indra/llcommon/llrefcount.h b/indra/llcommon/llrefcount.h index 693c1c4b83..868789de4d 100644 --- a/indra/llcommon/llrefcount.h +++ b/indra/llcommon/llrefcount.h @@ -52,12 +52,12 @@ public: void ref() const ; S32 unref() const ; #else - inline void LLRefCount::ref() const + void LLRefCount::ref() const { mRef++; } - inline S32 LLRefCount::unref() const + S32 LLRefCount::unref() const { llassert(mRef >= 1); if (0 == --mRef) -- cgit v1.2.3