[Webkit-unassigned] [Bug 227964] New: Speculative fix for failed scope.releaseAssertNoException() after calls to JSMap::create().

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Jul 14 12:50:55 PDT 2021


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

            Bug ID: 227964
           Summary: Speculative fix for failed
                    scope.releaseAssertNoException() after calls to
                    JSMap::create().
           Product: WebKit
           Version: WebKit Nightly Build
          Hardware: Unspecified
                OS: Unspecified
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: JavaScriptCore
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: mark.lam at apple.com

There have been reports of flaky failures on the scope.releaseAssertNoException() after the call to JSMap::create() in JSModuleLoader::finishCreation().

The scope.releaseAssertNoException() says that we don't expect the JSMap::create() to ever throw an exception.  If the assertion is true, the only way that we can see an exception there is if we're throwing an asynchronous TerminationException.  Since JSModuleLoader::finishCreation() does have any long running loops, we can just DeferTerminationForAWhile and let the next exception check site throw the asynchronous TerminationException.  We don't want to just use DeferTermination because it will throw the TerminationException right at the end of JSModuleLoader::finishCreation(), and the caller of JSModuleLoader::finishCreation() may be similarly not expecting an exception to be thrown there.

Also apply the same treatment to AbstractModuleRecord::finishCreation(), and getBackingMap() in WebCore for the same reason.  Other than those, other sites that call JSMap::create() already check for exceptions.  So, those sites do not need to DeferTerminationForAWhile.

rdar://78013960

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20210714/ca797ecc/attachment-0001.htm>


More information about the webkit-unassigned mailing list