-C Version\s3.14.2
-D 2016-09-12T18:50:49.277
+C Enhancments\sto\sWin32\smutex\sdebugging.
+D 2016-10-17T18:59:52.378
F Makefile.in cfd8fb987cd7a6af046daa87daa146d5aad0e088
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
F Makefile.msc 6fef1e10792656c94fe1393092de6c8ba6ea1c88
F src/memjournal.c 95752936c11dc6995672d1dd783cd633eea0cc95
F src/msvc.h 4942752b6a253116baaa8de75256c51a459a5e81
F src/mutex.c 8e45800ee78e0cd1f1f3fe8e398853307f4a085c
-F src/mutex.h 779d588e3b7756ec3ecf7d78cde1d84aba414f85
+F src/mutex.h ab41f241d91ca195c2fb226b245c96da051a93dc
F src/mutex_noop.c 9d4309c075ba9cc7249e19412d3d62f7f94839c4
F src/mutex_unix.c 27bb6cc49485ee46711a6580ab7b3f1402211d23
-F src/mutex_w32.c 5e6fe1c298fb5a8a15aaed4161d5759311431c17
+F src/mutex_w32.c 02e4d0d55ac9bafdbb1df1a6c9d1fee180abc57e
F src/notify.c 9711a7575036f0d3040ba61bc6e217f13a9888e7
F src/os.c add02933b1dce7a39a005b00a2f5364b763e9a24
F src/os.h 8e976e59eb4ca1c0fca6d35ee803e38951cb0343
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P a04a21ad5aa1a56d50388d6cdb88bae754218a0a
-R 073817cadc2d2cf4f1a705c7b7ab3a16
-T +bgcolor * #d0c0ff
-T +sym-release *
-T +sym-version-3.14.2 *
-U drh
-Z 3b9eb30be1058877308d90519a39b4b7
+P 29dbef4b8585f753861a36d6dd102ca634197bd6
+R 8e951a50bfdf4d021638237d1f4f6237
+T *branch * mutexDbg
+T *sym-mutexDbg *
+T -sym-branch-3.14 *
+U mistachkin
+Z 74809fa8d266455b16cda282d92b2f04
#ifdef SQLITE_DEBUG
volatile int nRef; /* Number of enterances */
volatile DWORD owner; /* Thread holding this mutex */
- volatile int trace; /* True to trace changes */
+ volatile u32 magic; /* True to trace changes */
#endif
};
p->id = iType;
#ifdef SQLITE_DEBUG
#ifdef SQLITE_WIN32_MUTEX_TRACE_DYNAMIC
- p->trace = 1;
+ p->magic = SQLITE_MUTEXMAGIC_TRACE;
+#else
+ p->magic = SQLITE_MUTEXMAGIC_NORMAL;
#endif
#endif
#if SQLITE_OS_WINRT
p->id = iType;
#ifdef SQLITE_DEBUG
#ifdef SQLITE_WIN32_MUTEX_TRACE_STATIC
- p->trace = 1;
+ p->magic = SQLITE_MUTEXMAGIC_TRACE;
+#else
+ p->magic = SQLITE_MUTEXMAGIC_NORMAL;
#endif
#endif
break;
*/
static void winMutexFree(sqlite3_mutex *p){
assert( p );
+ assert( (p->magic&~1)==SQLITE_MUTEXMAGIC_NORMAL );
assert( p->nRef==0 && p->owner==0 );
if( p->id==SQLITE_MUTEX_FAST || p->id==SQLITE_MUTEX_RECURSIVE ){
DeleteCriticalSection(&p->mutex);
#if defined(SQLITE_DEBUG) || defined(SQLITE_TEST)
DWORD tid = GetCurrentThreadId();
#endif
-#ifdef SQLITE_DEBUG
assert( p );
+ assert( (p->magic&~1)==SQLITE_MUTEXMAGIC_NORMAL );
+#ifdef SQLITE_DEBUG
assert( p->id==SQLITE_MUTEX_RECURSIVE || winMutexNotheld2(p, tid) );
-#else
- assert( p );
#endif
assert( winMutex_isInit==1 );
EnterCriticalSection(&p->mutex);
assert( p->nRef>0 || p->owner==0 );
p->owner = tid;
p->nRef++;
- if( p->trace ){
- OSTRACE(("ENTER-MUTEX tid=%lu, mutex=%p (%d), nRef=%d\n",
- tid, p, p->trace, p->nRef));
+ if( p->magic&1 ){
+ OSTRACE(("ENTER-MUTEX tid=%lu, mutex=%p (%lu), nRef=%d\n",
+ tid, p, p->magic, p->nRef));
}
#endif
}
#endif
int rc = SQLITE_BUSY;
assert( p );
+ assert( (p->magic&~1)==SQLITE_MUTEXMAGIC_NORMAL );
+#ifdef SQLITE_DEBUG
assert( p->id==SQLITE_MUTEX_RECURSIVE || winMutexNotheld2(p, tid) );
+#endif
/*
** The sqlite3_mutex_try() routine is very rarely used, and when it
** is used it is merely an optimization. So it is OK for it to always
UNUSED_PARAMETER(p);
#endif
#ifdef SQLITE_DEBUG
- if( p->trace ){
- OSTRACE(("TRY-MUTEX tid=%lu, mutex=%p (%d), owner=%lu, nRef=%d, rc=%s\n",
- tid, p, p->trace, p->owner, p->nRef, sqlite3ErrName(rc)));
+ if( p->magic&1 ){
+ OSTRACE(("TRY-MUTEX tid=%lu, mutex=%p (%lu), owner=%lu, nRef=%d, rc=%s\n",
+ tid, p, p->magic, p->owner, p->nRef, sqlite3ErrName(rc)));
}
#endif
return rc;
DWORD tid = GetCurrentThreadId();
#endif
assert( p );
+ assert( (p->magic&~1)==SQLITE_MUTEXMAGIC_NORMAL );
#ifdef SQLITE_DEBUG
assert( p->nRef>0 );
assert( p->owner==tid );
assert( winMutex_isInit==1 );
LeaveCriticalSection(&p->mutex);
#ifdef SQLITE_DEBUG
- if( p->trace ){
- OSTRACE(("LEAVE-MUTEX tid=%lu, mutex=%p (%d), nRef=%d\n",
- tid, p, p->trace, p->nRef));
+ if( p->magic&1 ){
+ OSTRACE(("LEAVE-MUTEX tid=%lu, mutex=%p (%lu), nRef=%d\n",
+ tid, p, p->magic, p->nRef));
}
#endif
}