Title: [280160] trunk/Source/WebKit
Revision
280160
Author
[email protected]
Date
2021-07-21 13:59:27 -0700 (Wed, 21 Jul 2021)

Log Message

RunningBoard kills the network process if it is still holding the "holding locked file" assertion upon suspension
https://bugs.webkit.org/show_bug.cgi?id=228148

Reviewed by Sihui Liu.

RunningBoard kills the network process if it is still holding the "holding locked file" assertion upon suspension
because our assertion type is "uninterruptible" and we don't release it when it gets invalidated. To address the
issue, we now use an "interruptible" assertion instead when holding locked files.

* NetworkProcess/ios/NetworkProcessIOS.mm:
(WebKit::NetworkProcess::setIsHoldingLockedFiles):
* UIProcess/ProcessAssertion.h:
* UIProcess/ProcessThrottler.cpp:
(WebKit::ProcessThrottler::assertionName const):
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::didSetAssertionType):
* UIProcess/ios/ProcessAssertionIOS.mm:
(WebKit::runningBoardNameForAssertionType):
(WebKit::runningBoardDomainForAssertionType):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (280159 => 280160)


--- trunk/Source/WebKit/ChangeLog	2021-07-21 20:33:31 UTC (rev 280159)
+++ trunk/Source/WebKit/ChangeLog	2021-07-21 20:59:27 UTC (rev 280160)
@@ -1,3 +1,25 @@
+2021-07-21  Chris Dumez  <[email protected]>
+
+        RunningBoard kills the network process if it is still holding the "holding locked file" assertion upon suspension
+        https://bugs.webkit.org/show_bug.cgi?id=228148
+
+        Reviewed by Sihui Liu.
+
+        RunningBoard kills the network process if it is still holding the "holding locked file" assertion upon suspension
+        because our assertion type is "uninterruptible" and we don't release it when it gets invalidated. To address the
+        issue, we now use an "interruptible" assertion instead when holding locked files.
+
+        * NetworkProcess/ios/NetworkProcessIOS.mm:
+        (WebKit::NetworkProcess::setIsHoldingLockedFiles):
+        * UIProcess/ProcessAssertion.h:
+        * UIProcess/ProcessThrottler.cpp:
+        (WebKit::ProcessThrottler::assertionName const):
+        * UIProcess/WebProcessProxy.cpp:
+        (WebKit::WebProcessProxy::didSetAssertionType):
+        * UIProcess/ios/ProcessAssertionIOS.mm:
+        (WebKit::runningBoardNameForAssertionType):
+        (WebKit::runningBoardDomainForAssertionType):
+
 2021-07-21  Alex Christensen  <[email protected]>
 
         Add linkedOnOrAfter check for r269162

Modified: trunk/Source/WebKit/NetworkProcess/ios/NetworkProcessIOS.mm (280159 => 280160)


--- trunk/Source/WebKit/NetworkProcess/ios/NetworkProcessIOS.mm	2021-07-21 20:33:31 UTC (rev 280159)
+++ trunk/Source/WebKit/NetworkProcess/ios/NetworkProcessIOS.mm	2021-07-21 20:59:27 UTC (rev 280160)
@@ -112,7 +112,7 @@
 
     // We synchronously take a process assertion when beginning a SQLite transaction so that we don't get suspended
     // while holding a locked file. We would get killed if suspended while holding locked files.
-    m_holdingLockedFileAssertion = ProcessAssertion::create(getCurrentProcessID(), "Network Process is holding locked files"_s, ProcessAssertionType::FinishTaskUninterruptable, ProcessAssertion::Mode::Sync);
+    m_holdingLockedFileAssertion = ProcessAssertion::create(getCurrentProcessID(), "Network Process is holding locked files"_s, ProcessAssertionType::FinishTaskInterruptable, ProcessAssertion::Mode::Sync);
     m_holdingLockedFileAssertion->setPrepareForInvalidationHandler([this, weakThis = makeWeakPtr(*this)]() mutable {
         ASSERT(isMainRunLoop());
         if (!weakThis)

Modified: trunk/Source/WebKit/UIProcess/ProcessAssertion.h (280159 => 280160)


--- trunk/Source/WebKit/UIProcess/ProcessAssertion.h	2021-07-21 20:33:31 UTC (rev 280159)
+++ trunk/Source/WebKit/UIProcess/ProcessAssertion.h	2021-07-21 20:59:27 UTC (rev 280160)
@@ -51,7 +51,7 @@
     UnboundedNetworking,
     Foreground,
     MediaPlayback,
-    FinishTaskUninterruptable,
+    FinishTaskInterruptable,
 };
 
 class ProcessAssertion : public ThreadSafeRefCounted<ProcessAssertion>, public CanMakeWeakPtr<ProcessAssertion, WeakPtrFactoryInitialization::Eager> {

Modified: trunk/Source/WebKit/UIProcess/ProcessThrottler.cpp (280159 => 280160)


--- trunk/Source/WebKit/UIProcess/ProcessThrottler.cpp	2021-07-21 20:33:31 UTC (rev 280159)
+++ trunk/Source/WebKit/UIProcess/ProcessThrottler.cpp	2021-07-21 20:59:27 UTC (rev 280160)
@@ -112,7 +112,7 @@
             return "Suspended"_s;
         case ProcessAssertionType::UnboundedNetworking:
         case ProcessAssertionType::MediaPlayback:
-        case ProcessAssertionType::FinishTaskUninterruptable:
+        case ProcessAssertionType::FinishTaskInterruptable:
             ASSERT_NOT_REACHED(); // These other assertion types are not used by the ProcessThrottler.
             break;
         }

Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp (280159 => 280160)


--- trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp	2021-07-21 20:33:31 UTC (rev 280159)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp	2021-07-21 20:59:27 UTC (rev 280160)
@@ -1470,7 +1470,7 @@
     
     case ProcessAssertionType::MediaPlayback:
     case ProcessAssertionType::UnboundedNetworking:
-    case ProcessAssertionType::FinishTaskUninterruptable:
+    case ProcessAssertionType::FinishTaskInterruptable:
         ASSERT_NOT_REACHED();
     }
 

Modified: trunk/Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm (280159 => 280160)


--- trunk/Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm	2021-07-21 20:33:31 UTC (rev 280159)
+++ trunk/Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm	2021-07-21 20:59:27 UTC (rev 280160)
@@ -305,8 +305,8 @@
         return @"Foreground";
     case ProcessAssertionType::MediaPlayback:
         return @"MediaPlayback";
-    case ProcessAssertionType::FinishTaskUninterruptable:
-        return @"FinishTaskUninterruptable";
+    case ProcessAssertionType::FinishTaskInterruptable:
+        return @"FinishTaskInterruptable";
     }
 }
 
@@ -319,7 +319,7 @@
     case ProcessAssertionType::Foreground:
     case ProcessAssertionType::MediaPlayback:
         return @"com.apple.webkit";
-    case ProcessAssertionType::FinishTaskUninterruptable:
+    case ProcessAssertionType::FinishTaskInterruptable:
         return @"com.apple.common";
     }
 }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to