[Webkit-unassigned] [Bug 96947] IndexedDB: Assertion failure with open() within upgradeneeded

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Tue Oct 23 13:57:34 PDT 2012


https://bugs.webkit.org/show_bug.cgi?id=96947





--- Comment #4 from Joshua Bell <jsbell at chromium.org>  2012-10-23 13:58:39 PST ---
Event/call sequence:

IDBDatabaseBackendImpl::openConnectionWithVersion(2)
IDBDatabaseBackendImpl::runIntVersionChangeTransaction
IDBDatabaseBackendImpl::setIntVersionInternal(2)
IDBDatabaseBackendImpl::openConnectionWithVersion(3)
IDBDatabaseBackendImpl::close
IDBDatabaseBackendImpl::processPendingCalls
 > pendingOpenWithVersionCall
IDBDatabaseBackendImpl::openConnectionWithVersion(3)
IDBDatabaseBackendImpl::runIntVersionChangeTransaction
IDBDatabaseBackendImpl::processPendingCalls
 > m_pendingSecondHalfOpenWithVersion

Assertion is:

m_pendingSecondHalfOpenWithVersion->version() == m_metadata.intVersion

Values are 3 and 2

Relevant stack is:

WebCore::IDBDatabaseBackendImpl::processPendingCalls() [0x25b76aa]
WebCore::IDBDatabaseBackendImpl::transactionFinishedAndCompleteFired() [0x25b7e49]
WebCore::IDBTransactionBackendImpl::commit() [0x25e558e]
WebCore::IDBTransactionBackendImpl::taskEventTimerFired() [0x25e4458]

So... what's going wrong:

* first connection starts its upgrade needed transaction
* close is called
* second connection's runIntVersionChangeTransaction runs - there's only one connection so it and schedules a setIntVersionInternal call and adds a PendingOpenWithVersionCall
* first connections's transaction completes
* transactionFinishedAndCompleteFired runs and calling processPendingCalls assuming that it will "unblock" the pendingSecondHalf... but the setIntVersionInternal hasn't even run yet.

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list