Skip to content
  • jsbell@chromium.org's avatar
    IndexedDB: Indexing tests are flaky-crashing · 25b83bdf
    jsbell@chromium.org authored
    https://bugs.webkit.org/show_bug.cgi?id=102283
    
    Reviewed by Tony Chang.
    
    Source/WebCore:
    
    Processing the final task can cause IDBTransactionBackendImpl references to be released
    by all holders. Prior to looping over the tasks (or, in an even earlier implementation,
    swapping queues) control would fall off the end of the function. The loop termination
    check introduced in http://wkrev.com/134529 requires that |this| be kept alive until
    the method completes.
    
    Test: storage/indexeddb/transaction-crash-in-tasks.html
    
    * Modules/indexeddb/IDBTransactionBackendImpl.cpp:
    (WebCore::IDBTransactionBackendImpl::abort): Rename self => protect.
    (WebCore::IDBTransactionBackendImpl::commit): Rename self => protect.
    (WebCore::IDBTransactionBackendImpl::taskTimerFired): New self-ref.
    
    LayoutTests:
    
    Reduced repro case, although the behavior is still flaky.
    
    * storage/indexeddb/transaction-crash-in-tasks-expected.txt: Added.
    * storage/indexeddb/transaction-crash-in-tasks.html: Added.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@134838 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    25b83bdf