Title: [263857] trunk/Source/WebKit
Revision
263857
Author
cdu...@apple.com
Date
2020-07-02 13:26:56 -0700 (Thu, 02 Jul 2020)

Log Message

FloatingPointEnvironment::saveMainThreadEnvironment() is not called for macOS Catalyst apps on Apple Silicon
https://bugs.webkit.org/show_bug.cgi?id=213897
<rdar://problem/64607098>

Reviewed by Darin Adler.

FloatingPointEnvironment::saveMainThreadEnvironment() is not called for macOS Catalyst apps on Apple Silicon
This causes crashes because FloatingPointEnvironment::propagateMainThreadEnvironment() is called for worker
threads for such apps on this platform.

* Shared/ios/AuxiliaryProcessIOS.mm:
(WebKit::AuxiliaryProcess::initializeSandbox):
Drop some dead code for PLATFORM(MACCATALYST) since the whole file is protected with !PLATFORM(MACCATALYST).
Mac Catalyst uses AuxiliaryProcessMac.mm instead.

* Shared/mac/AuxiliaryProcessMac.mm:
(WebKit::AuxiliaryProcess::platformInitialize):
Call FloatingPointEnvironment::saveMainThreadEnvironment() on AuxiliaryProcessMac.mm since this
platformInitialize() is used for Mac Catalyst and Catalyst apps may now run on Apple Silicon / ARM.
Note that FloatingPointEnvironment::saveMainThreadEnvironment() is a no-op on platforms where it is
not needed.

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (263856 => 263857)


--- trunk/Source/WebKit/ChangeLog	2020-07-02 19:54:27 UTC (rev 263856)
+++ trunk/Source/WebKit/ChangeLog	2020-07-02 20:26:56 UTC (rev 263857)
@@ -1,3 +1,27 @@
+2020-07-02  Chris Dumez  <cdu...@apple.com>
+
+        FloatingPointEnvironment::saveMainThreadEnvironment() is not called for macOS Catalyst apps on Apple Silicon
+        https://bugs.webkit.org/show_bug.cgi?id=213897
+        <rdar://problem/64607098>
+
+        Reviewed by Darin Adler.
+
+        FloatingPointEnvironment::saveMainThreadEnvironment() is not called for macOS Catalyst apps on Apple Silicon
+        This causes crashes because FloatingPointEnvironment::propagateMainThreadEnvironment() is called for worker
+        threads for such apps on this platform.
+
+        * Shared/ios/AuxiliaryProcessIOS.mm:
+        (WebKit::AuxiliaryProcess::initializeSandbox):
+        Drop some dead code for PLATFORM(MACCATALYST) since the whole file is protected with !PLATFORM(MACCATALYST).
+        Mac Catalyst uses AuxiliaryProcessMac.mm instead.
+
+        * Shared/mac/AuxiliaryProcessMac.mm:
+        (WebKit::AuxiliaryProcess::platformInitialize):
+        Call FloatingPointEnvironment::saveMainThreadEnvironment() on AuxiliaryProcessMac.mm since this
+        platformInitialize() is used for Mac Catalyst and Catalyst apps may now run on Apple Silicon / ARM.
+        Note that FloatingPointEnvironment::saveMainThreadEnvironment() is a no-op on platforms where it is
+        not needed.
+
 2020-07-02  Ryan Haddad  <ryanhad...@apple.com>
 
         Unreviewed, reverting r263633, r263651, and r263671.

Modified: trunk/Source/WebKit/Shared/ios/AuxiliaryProcessIOS.mm (263856 => 263857)


--- trunk/Source/WebKit/Shared/ios/AuxiliaryProcessIOS.mm	2020-07-02 19:54:27 UTC (rev 263856)
+++ trunk/Source/WebKit/Shared/ios/AuxiliaryProcessIOS.mm	2020-07-02 20:26:56 UTC (rev 263857)
@@ -39,10 +39,6 @@
 #import <sysexits.h>
 #import <wtf/FileSystem.h>
 
-#if PLATFORM(MACCATALYST)
-#import <wtf/spi/darwin/SandboxSPI.h>
-#endif
-
 namespace WebKit {
 
 void AuxiliaryProcess::platformInitialize()
@@ -53,54 +49,9 @@
     [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[NSBundle mainBundle] bundlePath]];
 }
 
-void AuxiliaryProcess::initializeSandbox(const AuxiliaryProcessInitializationParameters& parameters, SandboxInitializationParameters& sandboxParameters)
+void AuxiliaryProcess::initializeSandbox(const AuxiliaryProcessInitializationParameters&, SandboxInitializationParameters&)
 {
-#if PLATFORM(MACCATALYST)
-    NSBundle *webkit2Bundle = [NSBundle bundleForClass:NSClassFromString(@"WKWebView")];
-    String defaultProfilePath = [webkit2Bundle pathForResource:[[NSBundle mainBundle] bundleIdentifier] ofType:@"sb"];
-    if (sandboxParameters.userDirectorySuffix().isNull()) {
-        String defaultUserDirectorySuffix = makeString(String([[NSBundle mainBundle] bundleIdentifier]), '+', parameters.clientIdentifier);
-        sandboxParameters.setUserDirectorySuffix(defaultUserDirectorySuffix);
-    }
-
-    switch (sandboxParameters.mode()) {
-    case SandboxInitializationParameters::UseDefaultSandboxProfilePath:
-    case SandboxInitializationParameters::UseOverrideSandboxProfilePath: {
-        String sandboxProfilePath = sandboxParameters.mode() == SandboxInitializationParameters::UseDefaultSandboxProfilePath ? defaultProfilePath : sandboxParameters.overrideSandboxProfilePath();
-        if (!sandboxProfilePath.isEmpty()) {
-            CString profilePath = FileSystem::fileSystemRepresentation(sandboxProfilePath);
-            char* errorBuf;
-            ALLOW_DEPRECATED_DECLARATIONS_BEGIN
-            if (sandbox_init_with_parameters(profilePath.data(), SANDBOX_NAMED_EXTERNAL, sandboxParameters.namedParameterArray(), &errorBuf)) {
-                ALLOW_DEPRECATED_DECLARATIONS_END
-                WTFLogAlways("%s: Couldn't initialize sandbox profile [%s], error '%s'\n", getprogname(), profilePath.data(), errorBuf);
-                for (size_t i = 0, count = sandboxParameters.count(); i != count; ++i)
-                    WTFLogAlways("%s=%s\n", sandboxParameters.name(i), sandboxParameters.value(i));
-                exit(EX_NOPERM);
-            }
-        }
-
-        break;
-    }
-    case SandboxInitializationParameters::UseSandboxProfile: {
-        char* errorBuf;
-        ALLOW_DEPRECATED_DECLARATIONS_BEGIN
-        if (sandbox_init_with_parameters(sandboxParameters.sandboxProfile().utf8().data(), 0, sandboxParameters.namedParameterArray(), &errorBuf)) {
-            ALLOW_DEPRECATED_DECLARATIONS_END
-            WTFLogAlways("%s: Couldn't initialize sandbox profile, error '%s'\n", getprogname(), errorBuf);
-            for (size_t i = 0, count = sandboxParameters.count(); i != count; ++i)
-                WTFLogAlways("%s=%s\n", sandboxParameters.name(i), sandboxParameters.value(i));
-            exit(EX_NOPERM);
-        }
-
-        break;
-    }
-    }
-#else
-    UNUSED_PARAM(parameters);
-    UNUSED_PARAM(sandboxParameters);
     RELEASE_ASSERT_NOT_REACHED();
-#endif
 }
 
 void AuxiliaryProcess::setQOS(int, int)

Modified: trunk/Source/WebKit/Shared/mac/AuxiliaryProcessMac.mm (263856 => 263857)


--- trunk/Source/WebKit/Shared/mac/AuxiliaryProcessMac.mm	2020-07-02 19:54:27 UTC (rev 263856)
+++ trunk/Source/WebKit/Shared/mac/AuxiliaryProcessMac.mm	2020-07-02 20:26:56 UTC (rev 263857)
@@ -36,6 +36,7 @@
 #import "WKFoundation.h"
 #import "XPCServiceEntryPoint.h"
 #import <WebCore/FileHandle.h>
+#import <WebCore/FloatingPointEnvironment.h>
 #import <WebCore/SystemVersion.h>
 #import <mach-o/dyld.h>
 #import <mach/mach.h>
@@ -161,6 +162,9 @@
 void AuxiliaryProcess::platformInitialize()
 {
     initializeTimerCoalescingPolicy();
+
+    FloatingPointEnvironment::singleton().saveMainThreadEnvironment();
+
     [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[NSBundle mainBundle] bundlePath]];
 }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to