| Index: base/synchronization/lock_impl.h
|
| ===================================================================
|
| --- base/synchronization/lock_impl.h (revision 107048)
|
| +++ base/synchronization/lock_impl.h (working copy)
|
| @@ -17,6 +17,18 @@
|
| #include "base/base_export.h"
|
| #include "base/basictypes.h"
|
|
|
| +#if defined(OS_MACOSX) && !defined(NDEBUG)
|
| +// For Mac debug builds, do some extra checks to make sure a LockImpl is not
|
| +// used after it has been freed. This instrumentation is to help track down
|
| +// spurious locking errors (EINVAL) which are happening on the bots.
|
| +// In particular, I want to make sure they aren't a consequence of having
|
| +// used a freed lock object (which can happen for instance when trying to
|
| +// post tasks to a destroyed MessageLoop).
|
| +// See http://crbug.com/102161 for more details. This instrumentation can be
|
| +// removed once that bug has been identified.
|
| +#define LOCK_IMPL_CHECK_LIVENESS
|
| +#endif
|
| +
|
| namespace base {
|
| namespace internal {
|
|
|
| @@ -53,6 +65,17 @@
|
| #endif
|
|
|
| private:
|
| +#ifdef LOCK_IMPL_CHECK_LIVENESS
|
| + enum LivenessToken {
|
| + LT_ALIVE = 0xCa11ab1e, // 3390155550
|
| + LT_DELETED = 0xDecea5ed, // 3738084845
|
| + };
|
| +
|
| + void CheckIsAlive();
|
| +
|
| + LivenessToken liveness_token_;
|
| +#endif // LOCK_IMPL_CHECK_LIVENESS
|
| +
|
| OSLockType os_lock_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(LockImpl);
|
|
|