⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 263857 in webkit


Ignore:
Timestamp:
Jul 2, 2020, 1:26:56 PM (6 years ago)
Author:
Chris Dumez
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.

Location:
trunk/Source/WebKit
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r263854 r263857  
     12020-07-02  Chris Dumez  <cdumez@apple.com>
     2
     3        FloatingPointEnvironment::saveMainThreadEnvironment() is not called for macOS Catalyst apps on Apple Silicon
     4        https://bugs.webkit.org/show_bug.cgi?id=213897
     5        <rdar://problem/64607098>
     6
     7        Reviewed by Darin Adler.
     8
     9        FloatingPointEnvironment::saveMainThreadEnvironment() is not called for macOS Catalyst apps on Apple Silicon
     10        This causes crashes because FloatingPointEnvironment::propagateMainThreadEnvironment() is called for worker
     11        threads for such apps on this platform.
     12
     13        * Shared/ios/AuxiliaryProcessIOS.mm:
     14        (WebKit::AuxiliaryProcess::initializeSandbox):
     15        Drop some dead code for PLATFORM(MACCATALYST) since the whole file is protected with !PLATFORM(MACCATALYST).
     16        Mac Catalyst uses AuxiliaryProcessMac.mm instead.
     17
     18        * Shared/mac/AuxiliaryProcessMac.mm:
     19        (WebKit::AuxiliaryProcess::platformInitialize):
     20        Call FloatingPointEnvironment::saveMainThreadEnvironment() on AuxiliaryProcessMac.mm since this
     21        platformInitialize() is used for Mac Catalyst and Catalyst apps may now run on Apple Silicon / ARM.
     22        Note that FloatingPointEnvironment::saveMainThreadEnvironment() is a no-op on platforms where it is
     23        not needed.
     24
    1252020-07-02  Ryan Haddad  <ryanhaddad@apple.com>
    226
  • trunk/Source/WebKit/Shared/ios/AuxiliaryProcessIOS.mm

    r250723 r263857  
    4040#import <wtf/FileSystem.h>
    4141
    42 #if PLATFORM(MACCATALYST)
    43 #import <wtf/spi/darwin/SandboxSPI.h>
    44 #endif
    45 
    4642namespace WebKit {
    4743
    … …  
    5450}
    5551
    56 void AuxiliaryProcess::initializeSandbox(const AuxiliaryProcessInitializationParameters& parameters, SandboxInitializationParameters& sandboxParameters)
     52void AuxiliaryProcess::initializeSandbox(const AuxiliaryProcessInitializationParameters&, SandboxInitializationParameters&)
    5753{
    58 #if PLATFORM(MACCATALYST)
    59     NSBundle *webkit2Bundle = [NSBundle bundleForClass:NSClassFromString(@"WKWebView")];
    60     String defaultProfilePath = [webkit2Bundle pathForResource:[[NSBundle mainBundle] bundleIdentifier] ofType:@"sb"];
    61     if (sandboxParameters.userDirectorySuffix().isNull()) {
    62         String defaultUserDirectorySuffix = makeString(String([[NSBundle mainBundle] bundleIdentifier]), '+', parameters.clientIdentifier);
    63         sandboxParameters.setUserDirectorySuffix(defaultUserDirectorySuffix);
    64     }
    65 
    66     switch (sandboxParameters.mode()) {
    67     case SandboxInitializationParameters::UseDefaultSandboxProfilePath:
    68     case SandboxInitializationParameters::UseOverrideSandboxProfilePath: {
    69         String sandboxProfilePath = sandboxParameters.mode() == SandboxInitializationParameters::UseDefaultSandboxProfilePath ? defaultProfilePath : sandboxParameters.overrideSandboxProfilePath();
    70         if (!sandboxProfilePath.isEmpty()) {
    71             CString profilePath = FileSystem::fileSystemRepresentation(sandboxProfilePath);
    72             char* errorBuf;
    73             ALLOW_DEPRECATED_DECLARATIONS_BEGIN
    74             if (sandbox_init_with_parameters(profilePath.data(), SANDBOX_NAMED_EXTERNAL, sandboxParameters.namedParameterArray(), &errorBuf)) {
    75                 ALLOW_DEPRECATED_DECLARATIONS_END
    76                 WTFLogAlways("%s: Couldn't initialize sandbox profile [%s], error '%s'\n", getprogname(), profilePath.data(), errorBuf);
    77                 for (size_t i = 0, count = sandboxParameters.count(); i != count; ++i)
    78                     WTFLogAlways("%s=%s\n", sandboxParameters.name(i), sandboxParameters.value(i));
    79                 exit(EX_NOPERM);
    80             }
    81         }
    82 
    83         break;
    84     }
    85     case SandboxInitializationParameters::UseSandboxProfile: {
    86         char* errorBuf;
    87         ALLOW_DEPRECATED_DECLARATIONS_BEGIN
    88         if (sandbox_init_with_parameters(sandboxParameters.sandboxProfile().utf8().data(), 0, sandboxParameters.namedParameterArray(), &errorBuf)) {
    89             ALLOW_DEPRECATED_DECLARATIONS_END
    90             WTFLogAlways("%s: Couldn't initialize sandbox profile, error '%s'\n", getprogname(), errorBuf);
    91             for (size_t i = 0, count = sandboxParameters.count(); i != count; ++i)
    92                 WTFLogAlways("%s=%s\n", sandboxParameters.name(i), sandboxParameters.value(i));
    93             exit(EX_NOPERM);
    94         }
    95 
    96         break;
    97     }
    98     }
    99 #else
    100     UNUSED_PARAM(parameters);
    101     UNUSED_PARAM(sandboxParameters);
    10254    RELEASE_ASSERT_NOT_REACHED();
    103 #endif
    10455}
    10556
  • trunk/Source/WebKit/Shared/mac/AuxiliaryProcessMac.mm

    r263773 r263857  
    3737#import "XPCServiceEntryPoint.h"
    3838#import <WebCore/FileHandle.h>
     39#import <WebCore/FloatingPointEnvironment.h>
    3940#import <WebCore/SystemVersion.h>
    4041#import <mach-o/dyld.h>
    … …  
    162163{
    163164    initializeTimerCoalescingPolicy();
     165
     166    FloatingPointEnvironment::singleton().saveMainThreadEnvironment();
     167
    164168    [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[NSBundle mainBundle] bundlePath]];
    165169}
Note: See TracChangeset for help on using the changeset viewer.