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]];
}