Closed
Bug 612807
Opened 15 years ago
Closed 15 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•15 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•15 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•15 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•15 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•15 years ago
|
||
Status: ASSIGNED → RESOLVED
blocking2.0: beta8+ → ---
Closed: 15 years ago
Resolution: --- → FIXED
Component: DOM → DOM: IndexedDB
Version: Trunk → unspecified
Updated•13 years ago
|
Keywords: intermittent-failure
Updated•13 years ago
|
Whiteboard: [orange]
You need to log in
before you can comment on or make changes to this bug.
Description
•