Title: [262566] trunk/Source/WebKit
Revision
262566
Author
cdu...@apple.com
Date
2020-06-04 13:38:29 -0700 (Thu, 04 Jun 2020)

Log Message

[iOS] Drop DependentProcessLink ProcessAssertion as it creates power leaks
https://bugs.webkit.org/show_bug.cgi?id=212768
<rdar://problem/62408828>

Reviewed by Alex Christensen.

Drop DependentProcessLink ProcessAssertion since it creates a process assertion cycle between
the UIProcess and the WebContent process and leads to power leaks.

* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.h:
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeWebProcess):
* UIProcess/ProcessAssertion.h:
* UIProcess/ProcessThrottler.cpp:
(WebKit::ProcessThrottler::assertionName const):
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::didSetAssertionType):
* UIProcess/ios/ProcessAssertionIOS.mm:
(WebKit::runningBoardNameForAssertionType):
(WebKit::flagsForAssertionType):
(WebKit::toBKSProcessAssertionReason):
* WebProcess/WebProcess.h:
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (262565 => 262566)


--- trunk/Source/WebKit/ChangeLog	2020-06-04 20:16:05 UTC (rev 262565)
+++ trunk/Source/WebKit/ChangeLog	2020-06-04 20:38:29 UTC (rev 262566)
@@ -1,3 +1,34 @@
+2020-06-04  Chris Dumez  <cdu...@apple.com>
+
+        [iOS] Drop DependentProcessLink ProcessAssertion as it creates power leaks
+        https://bugs.webkit.org/show_bug.cgi?id=212768
+        <rdar://problem/62408828>
+
+        Reviewed by Alex Christensen.
+
+        Drop DependentProcessLink ProcessAssertion since it creates a process assertion cycle between
+        the UIProcess and the WebContent process and leads to power leaks.
+
+        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
+        * Shared/WebProcessCreationParameters.cpp:
+        (WebKit::WebProcessCreationParameters::encode const):
+        (WebKit::WebProcessCreationParameters::decode):
+        * Shared/WebProcessCreationParameters.h:
+        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
+        (WebKit::WebProcessPool::platformInitializeWebProcess):
+        * UIProcess/ProcessAssertion.h:
+        * UIProcess/ProcessThrottler.cpp:
+        (WebKit::ProcessThrottler::assertionName const):
+        * UIProcess/WebProcessProxy.cpp:
+        (WebKit::WebProcessProxy::didSetAssertionType):
+        * UIProcess/ios/ProcessAssertionIOS.mm:
+        (WebKit::runningBoardNameForAssertionType):
+        (WebKit::flagsForAssertionType):
+        (WebKit::toBKSProcessAssertionReason):
+        * WebProcess/WebProcess.h:
+        * WebProcess/cocoa/WebProcessCocoa.mm:
+        (WebKit::WebProcess::platformInitializeWebProcess):
+
 2020-06-04  Brent Fulgham  <bfulg...@apple.com>
 
         Revise sandbox to support network stack telemetry without sandbox violation reports

Modified: trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb (262565 => 262566)


--- trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb	2020-06-04 20:16:05 UTC (rev 262565)
+++ trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb	2020-06-04 20:38:29 UTC (rev 262566)
@@ -951,7 +951,6 @@
             "com.apple.nehelper"
             "com.apple.nesessionmanager.content-filter"
             "com.apple.osanalytics.osanalyticshelper"
-            "com.apple.runningboard"
             "com.apple.tccd"
             "com.apple.uikit.viewservice.com.apple.WebContentFilter.remoteUI"
             "com.apple.webinspector"

Modified: trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp (262565 => 262566)


--- trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp	2020-06-04 20:16:05 UTC (rev 262565)
+++ trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp	2020-06-04 20:38:29 UTC (rev 262566)
@@ -163,7 +163,6 @@
 
 #if PLATFORM(IOS_FAMILY)
     encoder << diagnosticsExtensionHandles;
-    encoder << runningboardExtensionHandle;
     encoder << dynamicMachExtensionHandles;
     encoder << dynamicIOKitExtensionHandles;
 #endif
@@ -443,12 +442,6 @@
         return false;
     parameters.diagnosticsExtensionHandles = WTFMove(*diagnosticsExtensionHandles);
 
-    Optional<Optional<SandboxExtension::Handle>> runningboardExtensionHandle;
-    decoder >> runningboardExtensionHandle;
-    if (!runningboardExtensionHandle)
-        return false;
-    parameters.runningboardExtensionHandle = WTFMove(*runningboardExtensionHandle);
-
     Optional<SandboxExtension::HandleArray> dynamicMachExtensionHandles;
     decoder >> dynamicMachExtensionHandles;
     if (!dynamicMachExtensionHandles)

Modified: trunk/Source/WebKit/Shared/WebProcessCreationParameters.h (262565 => 262566)


--- trunk/Source/WebKit/Shared/WebProcessCreationParameters.h	2020-06-04 20:16:05 UTC (rev 262565)
+++ trunk/Source/WebKit/Shared/WebProcessCreationParameters.h	2020-06-04 20:38:29 UTC (rev 262566)
@@ -203,7 +203,6 @@
 
 #if PLATFORM(IOS_FAMILY)
     SandboxExtension::HandleArray diagnosticsExtensionHandles;
-    Optional<SandboxExtension::Handle> runningboardExtensionHandle;
     SandboxExtension::HandleArray dynamicMachExtensionHandles;
     SandboxExtension::HandleArray dynamicIOKitExtensionHandles;
 #endif

Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm (262565 => 262566)


--- trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm	2020-06-04 20:16:05 UTC (rev 262565)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm	2020-06-04 20:38:29 UTC (rev 262566)
@@ -403,10 +403,6 @@
     if (isInternalInstall())
         parameters.diagnosticsExtensionHandles = SandboxExtension::createHandlesForMachLookup(diagnosticServices(), WTF::nullopt, SandboxExtension::Flags::NoReport);
 
-    SandboxExtension::Handle runningboardExtensionHandle;
-    if (SandboxExtension::createHandleForMachLookup("com.apple.runningboard", WTF::nullopt, runningboardExtensionHandle, SandboxExtension::Flags::NoReport))
-        parameters.runningboardExtensionHandle = WTFMove(runningboardExtensionHandle);
-
     if (WebCore::deviceHasAGXCompilerService())
         parameters.dynamicIOKitExtensionHandles = SandboxExtension::createHandlesForIOKitClassExtensions(agxCompilerClasses(), WTF::nullopt);
 #endif

Modified: trunk/Source/WebKit/UIProcess/ProcessAssertion.h (262565 => 262566)


--- trunk/Source/WebKit/UIProcess/ProcessAssertion.h	2020-06-04 20:16:05 UTC (rev 262565)
+++ trunk/Source/WebKit/UIProcess/ProcessAssertion.h	2020-06-04 20:38:29 UTC (rev 262566)
@@ -53,7 +53,6 @@
     UnboundedNetworking,
     Foreground,
     MediaPlayback,
-    DependentProcessLink,
 };
 
 class ProcessAssertion : public CanMakeWeakPtr<ProcessAssertion> {

Modified: trunk/Source/WebKit/UIProcess/ProcessThrottler.cpp (262565 => 262566)


--- trunk/Source/WebKit/UIProcess/ProcessThrottler.cpp	2020-06-04 20:16:05 UTC (rev 262565)
+++ trunk/Source/WebKit/UIProcess/ProcessThrottler.cpp	2020-06-04 20:38:29 UTC (rev 262566)
@@ -112,7 +112,6 @@
             return "Suspended"_s;
         case ProcessAssertionType::UnboundedNetworking:
         case ProcessAssertionType::MediaPlayback:
-        case ProcessAssertionType::DependentProcessLink:
             ASSERT_NOT_REACHED(); // These other assertion types are not used by the ProcessThrottler.
             break;
         }

Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp (262565 => 262566)


--- trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp	2020-06-04 20:16:05 UTC (rev 262565)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp	2020-06-04 20:38:29 UTC (rev 262566)
@@ -1376,7 +1376,6 @@
     
     case ProcessAssertionType::MediaPlayback:
     case ProcessAssertionType::UnboundedNetworking:
-    case ProcessAssertionType::DependentProcessLink:
         ASSERT_NOT_REACHED();
     }
 

Modified: trunk/Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm (262565 => 262566)


--- trunk/Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm	2020-06-04 20:16:05 UTC (rev 262565)
+++ trunk/Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm	2020-06-04 20:38:29 UTC (rev 262566)
@@ -322,14 +322,10 @@
         return @"UnboundedNetworking";
     case ProcessAssertionType::Foreground:
         return @"Foreground";
-    case ProcessAssertionType::DependentProcessLink:
-        return @"DependentProcessLink";
     case ProcessAssertionType::MediaPlayback:
         return @"MediaPlayback";
     }
 #else
-    if (assertionType == ProcessAssertionType::DependentProcessLink)
-        return @"DependentProcessLink";
     return nil;
 #endif
 }
@@ -351,9 +347,6 @@
     case ProcessAssertionType::Foreground:
     case ProcessAssertionType::MediaPlayback:
         return foregroundTabFlags;
-    case ProcessAssertionType::DependentProcessLink:
-        ASSERT_NOT_REACHED();
-        return backgroundTabFlags;
     }
 }
 
@@ -368,9 +361,6 @@
         return BKSProcessAssertionReasonFinishTaskUnbounded;
     case ProcessAssertionType::MediaPlayback:
         return BKSProcessAssertionReasonMediaPlayback;
-    case ProcessAssertionType::DependentProcessLink:
-        ASSERT_NOT_REACHED();
-        return BKSProcessAssertionReasonExtension;
     }
 }
 

Modified: trunk/Source/WebKit/WebProcess/WebProcess.h (262565 => 262566)


--- trunk/Source/WebKit/WebProcess/WebProcess.h	2020-06-04 20:16:05 UTC (rev 262565)
+++ trunk/Source/WebKit/WebProcess/WebProcess.h	2020-06-04 20:38:29 UTC (rev 262566)
@@ -577,10 +577,6 @@
 
     RefPtr<WebCore::ApplicationCacheStorage> m_applicationCacheStorage;
 
-#if PLATFORM(IOS_FAMILY)
-    std::unique_ptr<ProcessAssertion> m_uiProcessDependencyProcessAssertion;
-#endif
-
     bool m_suppressMemoryPressureHandler { false };
 #if PLATFORM(MAC)
     std::unique_ptr<WebCore::CPUMonitor> m_cpuMonitor;

Modified: trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm (262565 => 262566)


--- trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm	2020-06-04 20:16:05 UTC (rev 262565)
+++ trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm	2020-06-04 20:38:29 UTC (rev 262566)
@@ -185,23 +185,6 @@
         ASSERT(String(uti.get()) == String(adoptCF(UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType, CFSTR("text/html"), 0)).get()));
     }
 
-#if PLATFORM(IOS_FAMILY)
-    if (parameters.runningboardExtensionHandle) {
-        auto extension = SandboxExtension::create(WTFMove(*parameters.runningboardExtensionHandle));
-        bool consumed = extension->consume();
-        ASSERT_UNUSED(consumed, consumed);
-
-        ASSERT(!m_uiProcessDependencyProcessAssertion);
-        if (auto remoteProcessID = parentProcessConnection()->remoteProcessID())
-            m_uiProcessDependencyProcessAssertion = makeUnique<ProcessAssertion>(remoteProcessID, "WebContent process dependency on UIProcess"_s, ProcessAssertionType::DependentProcessLink);
-        else
-            RELEASE_LOG_ERROR_IF_ALLOWED(ProcessSuspension, "Unable to create a process dependency assertion on UIProcess because remoteProcessID is 0");
-
-        bool revoked = extension->revoke();
-        ASSERT_UNUSED(revoked, revoked);
-    }
-#endif
-
 #if !LOG_DISABLED || !RELEASE_LOG_DISABLED
     WebCore::initializeLogChannelsIfNecessary(parameters.webCoreLoggingChannels);
     WebKit::initializeLogChannelsIfNecessary(parameters.webKitLoggingChannels);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to