Title: [261857] trunk/Source/_javascript_Core
Revision
261857
Author
you...@apple.com
Date
2020-05-19 07:01:10 -0700 (Tue, 19 May 2020)

Log Message

[ Mac wk1 Debug ] imported/w3c/web-platform-tests/fetch/api/basic/stream-safe-creation.any.html  is flaky crashing with alerts - WTFCrashWithInfo - SC::JSObject::get(JSC::JSGlobalObject*, JSC::PropertyName)
https://bugs.webkit.org/show_bug.cgi?id=211923
<rdar://problem/63244249>

Reviewed by Mark Lam.

* runtime/JSObject.h:
(JSC::JSObject::get const):
When calling get, a terminate exception might happen if running in workers.
Return early in that case. Add an ASSERT that only terminated exceptions can actually happen.

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (261856 => 261857)


--- trunk/Source/_javascript_Core/ChangeLog	2020-05-19 13:57:49 UTC (rev 261856)
+++ trunk/Source/_javascript_Core/ChangeLog	2020-05-19 14:01:10 UTC (rev 261857)
@@ -1,3 +1,16 @@
+2020-05-19  Youenn Fablet  <you...@apple.com>
+
+        [ Mac wk1 Debug ] imported/w3c/web-platform-tests/fetch/api/basic/stream-safe-creation.any.html  is flaky crashing with alerts - WTFCrashWithInfo - SC::JSObject::get(JSC::JSGlobalObject*, JSC::PropertyName)
+        https://bugs.webkit.org/show_bug.cgi?id=211923
+        <rdar://problem/63244249>
+
+        Reviewed by Mark Lam.
+
+        * runtime/JSObject.h:
+        (JSC::JSObject::get const):
+        When calling get, a terminate exception might happen if running in workers.
+        Return early in that case. Add an ASSERT that only terminated exceptions can actually happen.
+
 2020-05-18  Andy Estes  <aes...@apple.com>
 
         http/tests/ssl/applepay/ApplePayInstallmentConfiguration.https.html fails in public SDK builds

Modified: trunk/Source/_javascript_Core/runtime/JSObject.h (261856 => 261857)


--- trunk/Source/_javascript_Core/runtime/JSObject.h	2020-05-19 13:57:49 UTC (rev 261856)
+++ trunk/Source/_javascript_Core/runtime/JSObject.h	2020-05-19 14:01:10 UTC (rev 261857)
@@ -73,6 +73,7 @@
 struct HashTable;
 struct HashTableValue;
 
+JS_EXPORT_PRIVATE bool isTerminatedExecutionException(VM&, Exception*);
 JS_EXPORT_PRIVATE Exception* throwTypeError(JSGlobalObject*, ThrowScope&, const String&);
 extern JS_EXPORT_PRIVATE const ASCIILiteral NonExtensibleObjectPropertyDefineError;
 extern JS_EXPORT_PRIVATE const ASCIILiteral ReadonlyPropertyWriteError;
@@ -1490,7 +1491,10 @@
     auto scope = DECLARE_THROW_SCOPE(vm);
     PropertySlot slot(this, PropertySlot::InternalMethodType::Get);
     bool hasProperty = const_cast<JSObject*>(this)->getPropertySlot(globalObject, propertyName, slot);
-    EXCEPTION_ASSERT(!scope.exception() || !hasProperty);
+
+    EXCEPTION_ASSERT(!scope.exception() || isTerminatedExecutionException(vm, scope.exception()) || !hasProperty);
+    RETURN_IF_EXCEPTION(scope, jsUndefined());
+
     if (hasProperty)
         RELEASE_AND_RETURN(scope, slot.getValue(globalObject, propertyName));
 
@@ -1503,7 +1507,10 @@
     auto scope = DECLARE_THROW_SCOPE(vm);
     PropertySlot slot(this, PropertySlot::InternalMethodType::Get);
     bool hasProperty = const_cast<JSObject*>(this)->getPropertySlot(globalObject, propertyName, slot);
-    EXCEPTION_ASSERT(!scope.exception() || !hasProperty);
+
+    EXCEPTION_ASSERT(!scope.exception() || isTerminatedExecutionException(vm, scope.exception()) || !hasProperty);
+    RETURN_IF_EXCEPTION(scope, jsUndefined());
+
     if (hasProperty)
         RELEASE_AND_RETURN(scope, slot.getValue(globalObject, propertyName));
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to