Closed Bug 585674 Opened 10 years ago Closed 10 years ago

Assertion failed: p->id==SQLITE_MUTEX_RECURSIVE || winMutexNotheld2(p, tid), file db/sqlite3/src/sqlite3.c, line 16005

Categories

(Toolkit :: Storage, defect)

x86
Windows 7
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: mats, Unassigned)

References

()

Details

Assertion failed: p->id==SQLITE_MUTEX_RECURSIVE || winMutexNotheld2(p, tid), file db/sqlite3/src/sqlite3.c, line 16005

I got the above assertion while trying to reproduce bug 585287 in a local
Firefox debug build on Windows 7 (32-bit build on 64-bit Windows).

STEPS TO REPRODUCE
1. Open "Organize Bookmarks" 
2. select a few bookmarks
3. start dragging them around, drop them on the Firefox window after a while,
   drag-n-drop them again while the page is loading, drag and hover the
   page while its loading etc...

ACTUAL RESULTS
 	msvcr100d.dll!_NMSG_WRITE(int rterrnum)  Line 217	C
 	msvcr100d.dll!abort()  Line 61 + 0x7 bytes	C
 	msvcr100d.dll!_wassert(const wchar_t * expr, const wchar_t * filename, unsigned int lineno)  Line 153	C
>	mozsqlite3.dll!winMutexEnter(sqlite3_mutex * p)  Line 16005 + 0x2c bytes	C
 	mozsqlite3.dll!pcache1Fetch(sqlite3_pcache * p, unsigned int iKey, int createFlag)  Line 31514 + 0x10 bytes	C
 	mozsqlite3.dll!sqlite3PcacheFetch(PCache * pCache, unsigned int pgno, int createFlag, PgHdr * * ppPage)  Line 30639 + 0x11 bytes	C
 	mozsqlite3.dll!sqlite3PagerAcquire(Pager * pPager, unsigned int pgno, PgHdr * * ppPage, int noContent)  Line 36014 + 0x13 bytes	C
 	mozsqlite3.dll!btreeGetPage(BtShared * pBt, unsigned int pgno, MemPage * * ppPage, int noContent)  Line 40095 + 0x12 bytes	C
 	mozsqlite3.dll!getAndInitPage(BtShared * pBt, unsigned int pgno, MemPage * * ppPage)  Line 40146 + 0xb bytes	C
 	mozsqlite3.dll!moveToChild(BtCursor * pCur, unsigned int newPgno)  Line 42544	C
 	mozsqlite3.dll!sqlite3BtreeMovetoUnpacked(BtCursor * pCur, UnpackedRecord * pIdxKey, __int64 intKey, int biasRight, int * pRes)  Line 43005	C
 	mozsqlite3.dll!sqlite3VdbeExec(Vdbe * p)  Line 57641 + 0x23 bytes	C
 	msvcr100d.dll!_unlock(int locknum)  Line 375	C
 	msvcr100d.dll!_free_dbg(void * pUserData, int nBlockUse)  Line 1270 + 0x7 bytes	C++
 	mozsqlite3.dll!winMutexEnter(sqlite3_mutex * p)  Line 16008	C
 	xul.dll!mozilla::storage::stepStmt(sqlite3_stmt * aStatement)  Line 283 + 0x6 bytes	C++
 	xul.dll!mozilla::storage::Statement::ExecuteStep(int * _moreResults)  Line 617 + 0x8 bytes	C++
 	xul.dll!mozilla::storage::Statement::Execute()  Line 582 + 0xe bytes	C++
 	xul.dll!nsUrlClassifierSubStore::ExpireAddChunk(unsigned int tableId, unsigned int addChunkId)  Line 1010 + 0x10 bytes	C++
 	xul.dll!nsUrlClassifierDBServiceWorker::AddChunk(unsigned int tableId, unsigned int chunkNum, nsTArray<nsUrlClassifierEntry> & entries)  Line 2582 + 0xe bytes	C++
 	xul.dll!nsUrlClassifierDBServiceWorker::ProcessChunk(int * done)  Line 2708	C++
 	xul.dll!nsUrlClassifierDBServiceWorker::UpdateStream(const nsACString_internal & chunk)  Line 3097	C++
 	xul.dll!NS_InvokeByIndex_P(nsISupports * that, unsigned int methodIndex, unsigned int paramCount, nsXPTCVariant * params)  Line 103	C++
 	xul.dll!nsProxyObjectCallInfo::Run()  Line 181 + 0x1a bytes	C++
 	xul.dll!nsThread::ProcessNextEvent(int mayWait, int * result)  Line 547 + 0xe bytes	C++
 	xul.dll!NS_ProcessNextEvent_P(nsIThread * thread, int mayWait)  Line 250 + 0xd bytes	C++
 	xul.dll!nsThread::ThreadFunc(void * arg)  Line 263 + 0x8 bytes	C++
 	nspr4.dll!_PR_NativeRunThread(void * arg)  Line 426 + 0x9 bytes	C
 	nspr4.dll!pr_root(void * arg)  Line 122 + 0xd bytes	C
 	msvcr100d.dll!_callthreadstartex()  Line 314 + 0xf bytes	C
 	msvcr100d.dll!_threadstartex(void * ptd)  Line 297	C
 	kernel32.dll!76bf3677() 	
 	[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]	
 	ntdll.dll!77419d72() 	
 	ntdll.dll!77419d45() 	



-	p	0x6ba03068 {mutex={...} id=6 nRef=0 ...}	sqlite3_mutex *
-		mutex	{DebugInfo=0x002b3188 LockCount=-1 RecursionCount=0 ...}	_RTL_CRITICAL_SECTION
-		DebugInfo	0x002b3188 {Type=0 CreatorBackTraceIndex=0 CriticalSection=0x6ba03068 ...}	_RTL_CRITICAL_SECTION_DEBUG *
		Type	0	unsigned short
		CreatorBackTraceIndex	0	unsigned short
-		CriticalSection	0x6ba03068 {DebugInfo=0x002b3188 LockCount=-1 RecursionCount=0 ...}	_RTL_CRITICAL_SECTION *
-		DebugInfo	0x002b3188 {Type=0 CreatorBackTraceIndex=0 CriticalSection=0x6ba03068 ...}	_RTL_CRITICAL_SECTION_DEBUG *
		Type	0	unsigned short
		CreatorBackTraceIndex	0	unsigned short
+		CriticalSection	0x6ba03068 {DebugInfo=0x002b3188 LockCount=-1 RecursionCount=0 ...}	_RTL_CRITICAL_SECTION *
+		ProcessLocksList	{Flink=0x002b31b8 Blink=0x002b3168 }	_LIST_ENTRY
		EntryCount	0	unsigned long
		ContentionCount	69	unsigned long
		Flags	0	unsigned long
		CreatorBackTraceIndexHigh	0	unsigned short
		SpareWORD	24948	unsigned short
		LockCount	-1	long
		RecursionCount	0	long
		OwningThread	0x00000000	void *
		LockSemaphore	0x000005a8	void *
		SpinCount	0	unsigned long
+		ProcessLocksList	{Flink=0x002b31b8 Blink=0x002b3168 }	_LIST_ENTRY
		EntryCount	0	unsigned long
		ContentionCount	69	unsigned long
		Flags	0	unsigned long
		CreatorBackTraceIndexHigh	0	unsigned short
		SpareWORD	24948	unsigned short
		LockCount	-1	long
		RecursionCount	0	long
		OwningThread	0x00000000	void *
		LockSemaphore	0x000005a8	void *
		SpinCount	0	unsigned long
		id	6	int
		nRef	0	int
		owner	1500	unsigned long
		trace	0	int
	p->id	6	int
	tid	3476	unsigned long
I've notified the SQLite team about this.  Doesn't look like we are doing anything to cause it to be entered.
Looks like the debug assertion was not threadsafe.  This will be fixed in the next SQLite.
Fixed by bug 583611.
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.