Closed
Bug 612807
Opened 14 years ago
Closed 14 years ago
IndexedDB: Transaction thread observer isn't quite safe
Categories
(Core :: Storage: IndexedDB, defect)
Tracking
()
RESOLVED
FIXED
People
(Reporter: philor, Assigned: bent.mozilla)
References
Details
(Keywords: intermittent-failure)
Attachments
(1 file)
21.06 KB,
patch
|
jst
:
review+
|
Details | Diff | Splinter Review |
http://tinderbox.mozilla.org/showlog.cgi?log=Firefox/1289966685.1289968654.11894.gz&fulltext=1 WINNT 5.2 mozilla-central debug test mochitests-2/5 on 2010/11/16 20:04:45 s: w32-ix-slave33 2482 INFO TEST-PASS | /tests/dom/indexedDB/test/test_writer_starvation.html | Correct mode - 1 should equal 1 ###!!! ASSERTION: Wrong thread!: 'NS_IsMainThread()', file e:/builds/moz2_slave/mozilla-central-win32-debug/build/dom/indexedDB/IDBTransaction.cpp, line 834 xul!mozilla::layers::LayerManagerOGL::operator=+0x00000000004920CF xul!mozilla::layers::LayerManagerOGL::operator=+0x000000000049209D xul!gfxMatrix::GetTranslation+0x0000000000350217 xul!XRE_AddJarManifestLocation+0x000000000001066F xul!XRE_AddJarManifestLocation+0x0000000000010852 xul!gfxMatrix::GetTranslation+0x000000000053C7C0 xul!mozilla::layers::LayerManagerOGL::operator=+0x00000000004B14E1 xul!XRE_AddJarManifestLocation+0x000000000000E81F xul!XRE_AddJarManifestLocation+0x0000000000010D9A xul!gfxMatrix::GetTranslation+0x000000000053C9CF xul!XRE_AddJarManifestLocation+0x000000000000FDFE nspr4!PR_LockOrderedLock+0x000000000002ABF1 nspr4!PR_LockOrderedLock+0x000000000002F27F MSVCR80D!beginthreadex+0x0000000000000221 MSVCR80D!beginthreadex+0x00000000000001C7 kernel32!GetModuleHandleA+0x00000000000000DF ###!!! ASSERTION: Unprocessed transactions!: 'mTransactions[i].transactions.IsEmpty()', file e:/builds/moz2_slave/mozilla-central-win32-debug/build/dom/indexedDB/IDBTransaction.cpp, line 840 xul!mozilla::layers::LayerManagerOGL::operator=+0x00000000004920CF xul!mozilla::layers::LayerManagerOGL::operator=+0x000000000049209D xul!gfxMatrix::GetTranslation+0x0000000000350217 xul!XRE_AddJarManifestLocation+0x000000000001066F xul!XRE_AddJarManifestLocation+0x0000000000010852 xul!gfxMatrix::GetTranslation+0x000000000053C7C0 xul!mozilla::layers::LayerManagerOGL::operator=+0x00000000004B14E1 xul!XRE_AddJarManifestLocation+0x000000000000E81F xul!XRE_AddJarManifestLocation+0x0000000000010D9A xul!gfxMatrix::GetTranslation+0x000000000053C9CF xul!XRE_AddJarManifestLocation+0x000000000000FDFE nspr4!PR_LockOrderedLock+0x000000000002ABF1 nspr4!PR_LockOrderedLock+0x000000000002F27F MSVCR80D!beginthreadex+0x0000000000000221 MSVCR80D!beginthreadex+0x00000000000001C7 kernel32!GetModuleHandleA+0x00000000000000DF ###!!! ASSERTION: nsDOMEventTargetHelper not thread-safe: '_mOwningThread.GetThread() == PR_GetCurrentThread()', file e:/builds/moz2_slave/mozilla-central-win32-debug/build/content/events/src/nsDOMEventTargetHelper.cpp, line 92 xul!mozilla::layers::LayerManagerOGL::operator=+0x0000000000490FDD xul!mozilla::layers::LayerManagerOGL::operator=+0x000000000047A961 xul!mozilla::layers::LayerManagerOGL::operator=+0x00000000004941EF xul!mozilla::layers::LayerManagerOGL::operator=+0x00000000004941BD xul!mozilla::layers::LayerManagerOGL::operator=+0x0000000000493D82 xul!mozilla::layers::LayerManagerOGL::operator=+0x00000000004936B1 xul!mozilla::layers::LayerManagerOGL::operator=+0x0000000000492C9A xul!mozilla::layers::LayerManagerOGL::operator=+0x000000000049433F xul!mozilla::layers::LayerManagerOGL::operator=+0x0000000000494322 xul!mozilla::layers::LayerManagerOGL::operator=+0x00000000004942BF xul!mozilla::layers::LayerManagerOGL::operator=+0x000000000049429D xul!mozilla::layers::LayerManagerOGL::operator=+0x0000000000494132 xul!mozilla::layers::LayerManagerOGL::operator=+0x0000000000493E51 xul!mozilla::layers::LayerManagerOGL::operator=+0x000000000049387A xul!mozilla::layers::LayerManagerOGL::operator=+0x0000000000492CCF xul!mozilla::layers::LayerManagerOGL::operator=+0x000000000049199F xul!mozilla::layers::LayerManagerOGL::operator=+0x000000000049197F xul!mozilla::layers::LayerManagerOGL::operator=+0x000000000049196A xul!mozilla::layers::LayerManagerOGL::operator=+0x00000000004920CF xul!mozilla::layers::LayerManagerOGL::operator=+0x000000000049209D xul!gfxMatrix::GetTranslation+0x0000000000350217 xul!XRE_AddJarManifestLocation+0x000000000001066F xul!XRE_AddJarManifestLocation+0x0000000000010852 xul!gfxMatrix::GetTranslation+0x000000000053C7C0 xul!mozilla::layers::LayerManagerOGL::operator=+0x00000000004B14E1 xul!XRE_AddJarManifestLocation+0x000000000000E81F xul!XRE_AddJarManifestLocation+0x0000000000010D9A xul!gfxMatrix::GetTranslation+0x000000000053C9CF xul!XRE_AddJarManifestLocation+0x000000000000FDFE nspr4!PR_LockOrderedLock+0x000000000002ABF1 nspr4!PR_LockOrderedLock+0x000000000002F27F MSVCR80D!beginthreadex+0x0000000000000221 MSVCR80D!beginthreadex+0x00000000000001C7 kernel32!GetModuleHandleA+0x00000000000000DF ###!!! ABORT: Main-thread-only object used off the main thread: file e:/builds/moz2_slave/mozilla-central-win32-debug/build/xpcom/base/nsCycleCollector.cpp, line 1159 2483 INFO TEST-PASS | /tests/dom/indexedDB/test/test_writer_starvation.html | Correct mode - 1 should equal 1 2484 INFO TEST-PASS | /tests/dom/indexedDB/test/test_writer_starvation.html | Correct mode - 1 should equal 1 2485 INFO TEST-PASS | /tests/dom/indexedDB/test/test_writer_starvation.html | Correct mode - 1 should equal 1 2486 INFO TEST-PASS | /tests/dom/indexedDB/test/test_writer_starvation.html | Correct mode - 1 should equal 1 2487 INFO TEST-PASS | /tests/dom/indexedDB/test/test_writer_starvation.html | Correct mode - 1 should equal 1 2488 INFO TEST-PASS | /tests/dom/indexedDB/test/test_writer_starvation.html | Correct mode - 1 should equal 1 nsStringStats => mAllocCount: 557903 => mReallocCount: 30760 => mFreeCount: 511621 -- LEAKED 46282 !!! => mShareCount: 729380 => mAdoptCount: 51519 => mAdoptFreeCount: 51517 -- LEAKED 2 !!! ###!!! ASSERTION: nsScriptCacheCleaner not thread-safe: '_mOwningThread.GetThread() == PR_GetCurrentThread()', file e:/builds/moz2_slave/mozilla-central-win32-debug/build/content/base/src/nsFrameMessageManager.cpp, line 723 TEST-UNEXPECTED-FAIL | /tests/dom/indexedDB/test/test_writer_starvation.html | application timed out after 330 seconds with no output command timed out: 1200 seconds without output
Comment hidden (Legacy TBPL/Treeherder Robot) |
Comment hidden (Legacy TBPL/Treeherder Robot) |
Reporter | ||
Updated•14 years ago
|
Summary: Intermittent test_writer_starvation.html | application timed out after 330 seconds with no output following multiple assertion failures → Intermittent test_writer_starvation.html | application timed out after 330 seconds with no output, or, Exited with code -2147483645 after ###!!! ABORT: Main-thread-only object used off the main thread
Comment hidden (Legacy TBPL/Treeherder Robot) |
Assignee | ||
Updated•14 years ago
|
Assignee: nobody → bent.mozilla
Status: NEW → ASSIGNED
Summary: Intermittent test_writer_starvation.html | application timed out after 330 seconds with no output, or, Exited with code -2147483645 after ###!!! ABORT: Main-thread-only object used off the main thread → IndexedDB: Transaction thread observer isn't quite safe
Assignee | ||
Comment 4•14 years ago
|
||
The basic issue is that IDBTransaction::ThreadObserver isn't quite safe due to the way thread observers work in general. The attached patch adds a simpler observer interface to nsThread and uses that instead.
Attachment #491643 -
Flags: review?(jst)
Comment 5•14 years ago
|
||
Comment on attachment 491643 [details] [diff] [review] Patch, v1 Looks good, r=jst with the following minor thing fixed: +nsThread::AddObserver(nsIThreadObserver *observer) +{ + NS_ENSURE_ARG_POINTER(observer); + NS_ENSURE_STATE(PR_GetCurrentThread() == mThread); + + if (mEventObservers.Contains(observer)) { + NS_WARNING("Adding an observer twice!"); + } This should use NS_WARN_IF_FALSE to avoid calling Contains() in opt builds.
Attachment #491643 -
Flags: review?(jst) → review+
Assignee | ||
Comment 7•14 years ago
|
||
http://hg.mozilla.org/mozilla-central/rev/30484d51bb7b
Status: ASSIGNED → RESOLVED
blocking2.0: beta8+ → ---
Closed: 14 years ago
Resolution: --- → FIXED
Component: DOM → DOM: IndexedDB
Version: Trunk → unspecified
Updated•12 years ago
|
Keywords: intermittent-failure
Updated•12 years ago
|
Whiteboard: [orange]
You need to log in
before you can comment on or make changes to this bug.
Description
•