Current, v8 cancels pending indexed db transactions as soon as it exits a context, even if we're in a recursive v8 call. We should wait until we've got v8 entirely off the stack before cancelling the pending transactions.
Created attachment 100851 [details] patch I haven't figured out a good way to isolate the test case as of yet, so no layout test included. Assistance welcome :)
Attachment 100851 [details] did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/WebCore/ChangeLog', u'Source/WebCor..." exit_code: 1 Source/WebCore/bindings/v8/V8Proxy.cpp:617: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] Total errors found: 1 in 2 files If any of these errors are false positives, please file a bug against check-webkit-style.
You should be able to trigger this case by using dispatchEvent to call an event handler synchronously. That will enter/leave a nested V8 context, which you can observe to cancel your IDB transaction.
(The patch looks correct, BTW, but it might be worth trying a test along those lines.)
Comment on attachment 100851 [details] patch Clearing the review flag while you investigate a test.
Created attachment 101036 [details] fix style issue + test Thanks for the test suggestion....I was having a brain cramp on how to guarantee we had a recursive JS call.
Comment on attachment 101036 [details] fix style issue + test View in context: https://bugs.webkit.org/attachment.cgi?id=101036&action=review Thanks a lot for picking this up. > LayoutTests/storage/indexeddb/transaction-abort-with-js-recursion.html:26 > + request = evalAndLog("webkitIndexedDB.open('test')"); Could you change 'test' to 'transaction-abort-with-js-recursion'? Running the layout tests in parallel can fail if multiple tests are mucking with the same db, so we've been using the name of the test.
Comment on attachment 101036 [details] fix style issue + test Yay. Thanks!
Created attachment 101373 [details] Patch for landing
Comment on attachment 101373 [details] Patch for landing Rejecting attachment 101373 [details] from commit-queue. Failed to run "['./Tools/Scripts/webkit-patch', '--status-host=queues.webkit.org', '--bot-id=ec2-cq-02', '--port..." exit_code: 2 Last 500 characters of output: operties.html = TEXT fast/table/align-right-within-left-aligned-div.html = TEXT storage/indexeddb/transaction-abort-with-js-recursion.html = TEXT Regressions: Unexpected image mismatch : (5) fast/text/atsui-multiple-renderers.html = IMAGE fast/text/international/danda-space.html = IMAGE fast/text/international/thai-baht-space.html = IMAGE fast/text/international/thai-line-breaks.html = IMAGE platform/chromium-linux/fast/text/international/complex-joining-using-gpos.html = IMAGE Full output: http://queues.webkit.org/results/9191008
Created attachment 101394 [details] Patch for landing
Comment on attachment 101394 [details] Patch for landing Clearing flags on attachment: 101394 Committed r91309: <http://trac.webkit.org/changeset/91309>
All reviewed patches have been landed. Closing bug.