Thread 0 Crashed ↩: 0 WebCore 0x00000001f163e398 WebCore::IDBServer::UniqueIDBDatabase::scheduleShutdownForClose() + 268 (UniqueIDBDatabase.cpp:276) 1 WebCore 0x00000001f1ea6290 WebCore::ThreadTimers::sharedTimerFiredInternal() + 352 (ThreadTimers.cpp:117) 2 WebCore 0x00000001f1ea6290 WebCore::ThreadTimers::sharedTimerFiredInternal() + 352 (ThreadTimers.cpp:117) 3 WebCore 0x00000001f1eeb254 WebCore::timerFired(__CFRunLoopTimer*, void*) + 28 (MainThreadSharedTimerCF.cpp:74)
<rdar://problem/33555052>
Created attachment 346881 [details] Patch
Comment on attachment 346881 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=346881&action=review > Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:1553 > + if (!m_owningPointerForClose) Could we simply call m_operationAndTransactionTimer.stop(); in scheduleShutdownForClose(), similarly to what we already do in immediateCloseForUserDelete()? The ASSERT(!m_owningPointerForClose); in invokeOperationAndTransactionTimer() should make sure no one restarts the timer after that.
Comment on attachment 346881 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=346881&action=review >> Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:1553 >> + if (!m_owningPointerForClose) > > Could we simply call m_operationAndTransactionTimer.stop(); in scheduleShutdownForClose(), similarly to what we already do in immediateCloseForUserDelete()? > > The ASSERT(!m_owningPointerForClose); in invokeOperationAndTransactionTimer() should make sure no one restarts the timer after that. Yes, I think this will work too.
Created attachment 346909 [details] Patch
Created attachment 346910 [details] Patch
Comment on attachment 346910 [details] Patch r=me
Comment on attachment 346910 [details] Patch Clearing flags on attachment: 346910 Committed r234766: <https://trac.webkit.org/changeset/234766>
All reviewed patches have been landed. Closing bug.