Diff
Modified: trunk/Source/WebKit/ChangeLog (292969 => 292970)
--- trunk/Source/WebKit/ChangeLog 2022-04-18 20:55:51 UTC (rev 292969)
+++ trunk/Source/WebKit/ChangeLog 2022-04-18 21:20:22 UTC (rev 292970)
@@ -1,3 +1,33 @@
+2022-04-18 Simon Fraser <[email protected]>
+
+ Allow C API clients to get the WKProcessTerminationReason in processDidCrash functions, and use in WebKitTestRunner
+ https://bugs.webkit.org/show_bug.cgi?id=239400
+
+ Reviewed by Sam Weinig.
+
+ Introduce WKContextClientV4 with "did crash" functions that take a ProcessID and WKProcessTerminationReason.
+ WebContextClient will call the new functions if registered, otherwise the old ones.
+
+ Have WebProcessPool::networkProcessDidTerminate() and WebProcessPool::gpuProcessExited() call
+ the client for more types of reasons; ExceededMemoryLimit and ExceededCPULimit only apply
+ to the web process, so the behavior change here is to call m_client.networkProcessDidCrash()
+ for ProcessTerminationReason::Unresponsive.
+
+ * UIProcess/API/C/WKContext.h:
+ * UIProcess/WebContextClient.cpp:
+ (WebKit::WebContextClient::networkProcessDidCrash):
+ (WebKit::WebContextClient::serviceWorkerProcessDidCrash):
+ (WebKit::WebContextClient::gpuProcessDidCrash):
+ * UIProcess/WebContextClient.h:
+ * UIProcess/WebProcessPool.cpp:
+ (WebKit::shouldReportAuxiliaryProcessCrash):
+ (WebKit::WebProcessPool::networkProcessDidTerminate):
+ (WebKit::WebProcessPool::serviceWorkerProcessCrashed):
+ (WebKit::WebProcessPool::gpuProcessExited):
+ * UIProcess/WebProcessPool.h:
+ * UIProcess/WebProcessProxy.cpp:
+ (WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
+
2022-04-18 Said Abou-Hallawa <[email protected]>
REGRESSION(r288847): GPU Process crash under GPUProcess::canExitUnderMemoryPressure()
Modified: trunk/Source/WebKit/UIProcess/API/C/WKContext.h (292969 => 292970)
--- trunk/Source/WebKit/UIProcess/API/C/WKContext.h 2022-04-18 20:55:51 UTC (rev 292969)
+++ trunk/Source/WebKit/UIProcess/API/C/WKContext.h 2022-04-18 21:20:22 UTC (rev 292970)
@@ -32,6 +32,7 @@
#include <WebKit/WKContextHistoryClient.h>
#include <WebKit/WKContextInjectedBundleClient.h>
#include <WebKit/WKDeprecated.h>
+#include <WebKit/WKProcessTerminationReason.h>
#if defined(WIN32) || defined(_WIN32)
typedef int WKProcessID;
@@ -60,6 +61,7 @@
typedef WKContextChildProcessDidCrashCallback WKContextNetworkProcessDidCrashCallback;
typedef void (*WKContextChildProcessWithPIDDidCrashCallback)(WKContextRef context, WKProcessID processID, const void *clientInfo);
+typedef void (*WKContextChildProcessDidCrashWithDetailsCallback)(WKContextRef context, WKProcessID processID, WKProcessTerminationReason reason, const void *clientInfo);
typedef struct WKContextClientBase {
int version;
@@ -87,6 +89,7 @@
void (*copyWebCryptoMasterKey_unavailable)(void);
} WKContextClientV1;
+// WKContextClientV1 and WKContextClientV2 are identical.
typedef struct WKContextClientV2 {
WKContextClientBase base;
@@ -97,7 +100,6 @@
// Version 1.
void (*copyWebCryptoMasterKey_unavailable)(void);
-
} WKContextClientV2;
typedef struct WKContextClientV3 {
@@ -111,11 +113,33 @@
// Version 1.
void (*copyWebCryptoMasterKey_unavailable)(void);
- // Version2.
+ // Version 3.
WKContextChildProcessWithPIDDidCrashCallback serviceWorkerProcessDidCrash;
WKContextChildProcessWithPIDDidCrashCallback gpuProcessDidCrash;
} WKContextClientV3;
+typedef struct WKContextClientV4 {
+ WKContextClientBase base;
+
+ // Version 0.
+ WKContextPlugInAutoStartOriginHashesChangedCallback plugInAutoStartOriginHashesChanged;
+ WKContextNetworkProcessDidCrashCallback networkProcessDidCrash;
+ WKContextPlugInInformationBecameAvailableCallback plugInInformationBecameAvailable;
+
+ // Version 1.
+ void (*copyWebCryptoMasterKey_unavailable)(void);
+
+ // Version 3.
+ WKContextChildProcessWithPIDDidCrashCallback serviceWorkerProcessDidCrash;
+ WKContextChildProcessWithPIDDidCrashCallback gpuProcessDidCrash;
+
+ // Version 4.
+ WKContextChildProcessDidCrashWithDetailsCallback networkProcessDidCrashWithDetails;
+ WKContextChildProcessDidCrashWithDetailsCallback serviceWorkerProcessDidCrashWithDetails;
+ WKContextChildProcessDidCrashWithDetailsCallback gpuProcessDidCrashWithDetails;
+} WKContextClientV4;
+
+
// FIXME: Remove these once support for Mavericks has been dropped.
enum {
kWKProcessModelSharedSecondaryProcess = 0,
Modified: trunk/Source/WebKit/UIProcess/WebContextClient.cpp (292969 => 292970)
--- trunk/Source/WebKit/UIProcess/WebContextClient.cpp 2022-04-18 20:55:51 UTC (rev 292969)
+++ trunk/Source/WebKit/UIProcess/WebContextClient.cpp 2022-04-18 21:20:22 UTC (rev 292970)
@@ -38,28 +38,37 @@
m_client.plugInAutoStartOriginHashesChanged(toAPI(processPool), m_client.base.clientInfo);
}
-void WebContextClient::networkProcessDidCrash(WebProcessPool* processPool)
+void WebContextClient::networkProcessDidCrash(WebProcessPool* processPool, ProcessID processID, ProcessTerminationReason reason)
{
- if (!m_client.networkProcessDidCrash)
+ if (m_client.networkProcessDidCrashWithDetails) {
+ m_client.networkProcessDidCrashWithDetails(toAPI(processPool), processID, toAPI(reason), m_client.base.clientInfo);
return;
+ }
- m_client.networkProcessDidCrash(toAPI(processPool), m_client.base.clientInfo);
+ if (m_client.networkProcessDidCrash)
+ m_client.networkProcessDidCrash(toAPI(processPool), m_client.base.clientInfo);
}
-void WebContextClient::serviceWorkerProcessDidCrash(WebProcessPool* processPool, ProcessID processID)
+void WebContextClient::serviceWorkerProcessDidCrash(WebProcessPool* processPool, ProcessID processID, ProcessTerminationReason reason)
{
- if (!m_client.serviceWorkerProcessDidCrash)
+ if (m_client.serviceWorkerProcessDidCrashWithDetails) {
+ m_client.serviceWorkerProcessDidCrashWithDetails(toAPI(processPool), processID, toAPI(reason), m_client.base.clientInfo);
return;
+ }
- m_client.serviceWorkerProcessDidCrash(toAPI(processPool), processID, m_client.base.clientInfo);
+ if (m_client.serviceWorkerProcessDidCrash)
+ m_client.serviceWorkerProcessDidCrash(toAPI(processPool), processID, m_client.base.clientInfo);
}
-void WebContextClient::gpuProcessDidCrash(WebProcessPool* processPool, ProcessID processID)
+void WebContextClient::gpuProcessDidCrash(WebProcessPool* processPool, ProcessID processID, ProcessTerminationReason reason)
{
- if (!m_client.gpuProcessDidCrash)
+ if (m_client.gpuProcessDidCrashWithDetails) {
+ m_client.gpuProcessDidCrashWithDetails(toAPI(processPool), processID, toAPI(reason), m_client.base.clientInfo);
return;
+ }
- m_client.gpuProcessDidCrash(toAPI(processPool), processID, m_client.base.clientInfo);
+ if (m_client.gpuProcessDidCrash)
+ m_client.gpuProcessDidCrash(toAPI(processPool), processID, m_client.base.clientInfo);
}
} // namespace WebKit
Modified: trunk/Source/WebKit/UIProcess/WebContextClient.h (292969 => 292970)
--- trunk/Source/WebKit/UIProcess/WebContextClient.h 2022-04-18 20:55:51 UTC (rev 292969)
+++ trunk/Source/WebKit/UIProcess/WebContextClient.h 2022-04-18 21:20:22 UTC (rev 292970)
@@ -23,8 +23,7 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef WebContextClient_h
-#define WebContextClient_h
+#pragma once
#include "APIClient.h"
#include "APIData.h"
@@ -33,7 +32,7 @@
namespace API {
template<> struct ClientTraits<WKContextClientBase> {
- typedef std::tuple<WKContextClientV0, WKContextClientV1, WKContextClientV2, WKContextClientV3> Versions;
+ typedef std::tuple<WKContextClientV0, WKContextClientV1, WKContextClientV2, WKContextClientV3, WKContextClientV4> Versions;
};
}
@@ -41,15 +40,14 @@
namespace WebKit {
class WebProcessPool;
+enum class ProcessTerminationReason;
class WebContextClient : public API::Client<WKContextClientBase> {
public:
void plugInAutoStartOriginHashesChanged(WebProcessPool*);
- void networkProcessDidCrash(WebProcessPool*);
- void serviceWorkerProcessDidCrash(WebProcessPool*, ProcessID);
- void gpuProcessDidCrash(WebProcessPool*, ProcessID);
+ void networkProcessDidCrash(WebProcessPool*, ProcessID, ProcessTerminationReason);
+ void serviceWorkerProcessDidCrash(WebProcessPool*, ProcessID, ProcessTerminationReason);
+ void gpuProcessDidCrash(WebProcessPool*, ProcessID, ProcessTerminationReason);
};
} // namespace WebKit
-
-#endif // WebContextClient_h
Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.cpp (292969 => 292970)
--- trunk/Source/WebKit/UIProcess/WebProcessPool.cpp 2022-04-18 20:55:51 UTC (rev 292969)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.cpp 2022-04-18 21:20:22 UTC (rev 292970)
@@ -428,10 +428,30 @@
#endif
}
+static bool shouldReportAuxiliaryProcessCrash(ProcessTerminationReason reason)
+{
+ switch (reason) {
+ case ProcessTerminationReason::ExceededMemoryLimit:
+ case ProcessTerminationReason::ExceededCPULimit:
+ case ProcessTerminationReason::Unresponsive:
+ case ProcessTerminationReason::Crash:
+ return true;
+ case ProcessTerminationReason::RequestedByClient:
+ case ProcessTerminationReason::IdleExit:
+ case ProcessTerminationReason::ExceededProcessCountLimit:
+ case ProcessTerminationReason::NavigationSwap:
+ case ProcessTerminationReason::RequestedByNetworkProcess:
+ case ProcessTerminationReason::RequestedByGPUProcess:
+ return false;
+ }
+
+ return false;
+}
+
void WebProcessPool::networkProcessDidTerminate(NetworkProcessProxy& networkProcessProxy, ProcessTerminationReason reason)
{
- if (reason == ProcessTerminationReason::Crash)
- m_client.networkProcessDidCrash(this);
+ if (shouldReportAuxiliaryProcessCrash(reason))
+ m_client.networkProcessDidCrash(this, networkProcessProxy.processIdentifier(), reason);
if (m_automationSession)
m_automationSession->terminate();
@@ -439,10 +459,10 @@
terminateServiceWorkers();
}
-void WebProcessPool::serviceWorkerProcessCrashed(WebProcessProxy& proxy)
+void WebProcessPool::serviceWorkerProcessCrashed(WebProcessProxy& proxy, ProcessTerminationReason reason)
{
#if ENABLE(SERVICE_WORKER)
- m_client.serviceWorkerProcessDidCrash(this, proxy.processIdentifier());
+ m_client.serviceWorkerProcessDidCrash(this, proxy.processIdentifier(), reason);
#endif
}
@@ -471,8 +491,8 @@
WEBPROCESSPOOL_RELEASE_LOG(Process, "gpuProcessDidExit: PID=%d, reason=reason=%{public}s", identifier, processTerminationReasonToString(reason));
m_gpuProcess = nullptr;
- if (reason == ProcessTerminationReason::Crash || reason == ProcessTerminationReason::Unresponsive)
- m_client.gpuProcessDidCrash(this, identifier);
+ if (shouldReportAuxiliaryProcessCrash(reason))
+ m_client.gpuProcessDidCrash(this, identifier, reason);
Vector<Ref<WebProcessProxy>> processes = m_processes;
for (auto& process : processes)
Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.h (292969 => 292970)
--- trunk/Source/WebKit/UIProcess/WebProcessPool.h 2022-04-18 20:55:51 UTC (rev 292969)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.h 2022-04-18 21:20:22 UTC (rev 292970)
@@ -379,7 +379,7 @@
bool hasServiceWorkerForegroundActivityForTesting() const;
bool hasServiceWorkerBackgroundActivityForTesting() const;
#endif
- void serviceWorkerProcessCrashed(WebProcessProxy&);
+ void serviceWorkerProcessCrashed(WebProcessProxy&, ProcessTerminationReason);
void updateRemoteWorkerUserAgent(const String& userAgent);
UserContentControllerIdentifier userContentControllerIdentifierForRemoteWorkers();
Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp (292969 => 292970)
--- trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp 2022-04-18 20:55:51 UTC (rev 292969)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp 2022-04-18 21:20:22 UTC (rev 292970)
@@ -916,11 +916,12 @@
callback(false);
if (isStandaloneServiceWorkerProcess())
- processPool().serviceWorkerProcessCrashed(*this);
+ processPool().serviceWorkerProcessCrashed(*this, reason);
shutDown();
#if ENABLE(PUBLIC_SUFFIX_LIST)
+ // FIXME: Perhaps this should consider ProcessTerminationReasons ExceededMemoryLimit, ExceededCPULimit, Unresponsive as well.
if (pages.size() == 1 && reason == ProcessTerminationReason::Crash) {
auto& page = *pages[0];
String domain = topPrivatelyControlledDomain(URL({ }, page.currentURL()).host().toString());
Modified: trunk/Tools/ChangeLog (292969 => 292970)
--- trunk/Tools/ChangeLog 2022-04-18 20:55:51 UTC (rev 292969)
+++ trunk/Tools/ChangeLog 2022-04-18 21:20:22 UTC (rev 292970)
@@ -1,3 +1,25 @@
+2022-04-18 Simon Fraser <[email protected]>
+
+ Allow C API clients to get the WKProcessTerminationReason in processDidCrash functions, and use in WebKitTestRunner
+ https://bugs.webkit.org/show_bug.cgi?id=239400
+
+ Reviewed by Sam Weinig.
+
+ Standardize the "didCrash" callbacks to use the WKContextClientV4 "with details" versions,
+ and use them to print out crash reasons.
+
+ * WebKitTestRunner/TestController.cpp:
+ (WTR::TestController::generatePageConfiguration):
+ (WTR::TestController::networkProcessDidCrashWithDetails):
+ (WTR::TestController::serviceWorkerProcessDidCrashWithDetails):
+ (WTR::TestController::gpuProcessDidCrashWithDetails):
+ (WTR::terminationReasonToString):
+ (WTR::TestController::networkProcessDidCrash):
+ (WTR::TestController::serviceWorkerProcessDidCrash):
+ (WTR::TestController::gpuProcessDidCrash):
+ (WTR::TestController::webProcessDidTerminate):
+ * WebKitTestRunner/TestController.h:
+
2022-04-15 Jonathan Bedard <[email protected]>
[ews.webkit.org] Reduce status updates
Modified: trunk/Tools/WebKitTestRunner/TestController.cpp (292969 => 292970)
--- trunk/Tools/WebKitTestRunner/TestController.cpp 2022-04-18 20:55:51 UTC (rev 292969)
+++ trunk/Tools/WebKitTestRunner/TestController.cpp 2022-04-18 21:20:22 UTC (rev 292970)
@@ -685,14 +685,17 @@
};
WKContextSetInjectedBundleClient(m_context.get(), &injectedBundleClient.base);
- WKContextClientV3 contextClient = {
- { 3, this },
+ WKContextClientV4 contextClient = {
+ { 4, this },
0, // plugInAutoStartOriginHashesChanged
- networkProcessDidCrash,
+ 0, // networkProcessDidCrash,
0, // plugInInformationBecameAvailable
0, // copyWebCryptoMasterKey
- serviceWorkerProcessDidCrash,
- gpuProcessDidCrash
+ 0, // serviceWorkerProcessDidCrash,
+ 0, // gpuProcessDidCrash
+ networkProcessDidCrashWithDetails,
+ serviceWorkerProcessDidCrashWithDetails,
+ gpuProcessDidCrashWithDetails,
};
WKContextSetClient(m_context.get(), &contextClient.base);
@@ -1670,19 +1673,19 @@
static_cast<TestController*>(const_cast<void*>(clientInfo))->didReceiveSynchronousMessageFromInjectedBundle(messageName, messageBody, listener);
}
-void TestController::networkProcessDidCrash(WKContextRef context, const void *clientInfo)
+void TestController::networkProcessDidCrashWithDetails(WKContextRef context, WKProcessID processID, WKProcessTerminationReason reason, const void *clientInfo)
{
- static_cast<TestController*>(const_cast<void*>(clientInfo))->networkProcessDidCrash();
+ static_cast<TestController*>(const_cast<void*>(clientInfo))->networkProcessDidCrash(processID, reason);
}
-void TestController::serviceWorkerProcessDidCrash(WKContextRef context, WKProcessID processID, const void *clientInfo)
+void TestController::serviceWorkerProcessDidCrashWithDetails(WKContextRef context, WKProcessID processID, WKProcessTerminationReason reason, const void *clientInfo)
{
- static_cast<TestController*>(const_cast<void*>(clientInfo))->serviceWorkerProcessDidCrash(processID);
+ static_cast<TestController*>(const_cast<void*>(clientInfo))->serviceWorkerProcessDidCrash(processID, reason);
}
-void TestController::gpuProcessDidCrash(WKContextRef context, WKProcessID processID, const void *clientInfo)
+void TestController::gpuProcessDidCrashWithDetails(WKContextRef context, WKProcessID processID, WKProcessTerminationReason reason, const void *clientInfo)
{
- static_cast<TestController*>(const_cast<void*>(clientInfo))->gpuProcessDidCrash(processID);
+ static_cast<TestController*>(const_cast<void*>(clientInfo))->gpuProcessDidCrash(processID, reason);
}
void TestController::didReceiveKeyDownMessageFromInjectedBundle(WKDictionaryRef dictionary, bool synchronous)
@@ -2001,24 +2004,46 @@
// WKContextClient
-void TestController::networkProcessDidCrash()
+static const char* terminationReasonToString(WKProcessTerminationReason reason)
{
- pid_t pid = WKWebsiteDataStoreGetNetworkProcessIdentifier(websiteDataStore());
- fprintf(stderr, "#CRASHED - %s (pid %ld)\n", networkProcessName(), static_cast<long>(pid));
- exit(1);
+ switch (reason) {
+ case kWKProcessTerminationReasonExceededMemoryLimit:
+ return "exceeded memory limit";
+ case kWKProcessTerminationReasonExceededCPULimit:
+ return "exceeded cpu limit";
+ break;
+ case kWKProcessTerminationReasonRequestedByClient:
+ return "requested by client";
+ case kWKProcessTerminationReasonCrash:
+ return "crash";
+ default:
+ break;
+ }
+ ASSERT_NOT_REACHED();
+ return "unknown reason";
}
-void TestController::serviceWorkerProcessDidCrash(WKProcessID processID)
+void TestController::networkProcessDidCrash(WKProcessID processID, WKProcessTerminationReason reason)
{
+ fprintf(stderr, "%s terminated (pid %ld) for reason: %s\n", networkProcessName(), static_cast<long>(processID), terminationReasonToString(reason));
+ fprintf(stderr, "#CRASHED - %s (pid %ld)\n", networkProcessName(), static_cast<long>(processID));
+ if (m_shouldExitWhenAuxiliaryProcessCrashes)
+ exit(1);
+}
+
+void TestController::serviceWorkerProcessDidCrash(WKProcessID processID, WKProcessTerminationReason reason)
+{
+ fprintf(stderr, "%s terminated (pid %ld) for reason: %s\n", "ServiceWorkerProcess", static_cast<long>(processID), terminationReasonToString(reason));
fprintf(stderr, "#CRASHED - ServiceWorkerProcess (pid %ld)\n", static_cast<long>(processID));
- if (m_shouldExitWhenWebProcessCrashes)
+ if (m_shouldExitWhenAuxiliaryProcessCrashes)
exit(1);
}
-void TestController::gpuProcessDidCrash(WKProcessID processID)
+void TestController::gpuProcessDidCrash(WKProcessID processID, WKProcessTerminationReason reason)
{
- fprintf(stderr, "#CRASHED - GPUProcess (pid %ld)\n", static_cast<long>(processID));
- if (m_shouldExitWhenWebProcessCrashes)
+ fprintf(stderr, "%s terminated (pid %ld) for reason: %s\n", gpuProcessName(), static_cast<long>(processID), terminationReasonToString(reason));
+ fprintf(stderr, "#CRASHED - %s (pid %ld)\n", gpuProcessName(), static_cast<long>(processID));
+ if (m_shouldExitWhenAuxiliaryProcessCrashes)
exit(1);
}
@@ -2362,24 +2387,7 @@
// ensure we only print the crashed message once.
if (!m_didPrintWebProcessCrashedMessage) {
pid_t pid = WKPageGetProcessIdentifier(m_mainWebView->page());
- fprintf(stderr, "%s terminated (pid %ld) ", webProcessName(), static_cast<long>(pid));
- switch (reason) {
- case kWKProcessTerminationReasonExceededMemoryLimit:
- fprintf(stderr, "because the memory limit was exceeded\n");
- break;
- case kWKProcessTerminationReasonExceededCPULimit:
- fprintf(stderr, "because the cpu limit was exceeded\n");
- break;
- case kWKProcessTerminationReasonRequestedByClient:
- fprintf(stderr, "because the client requested\n");
- break;
- case kWKProcessTerminationReasonCrash:
- fprintf(stderr, "because the process crashed\n");
- break;
- default:
- fprintf(stderr, "for an unknown reason\n");
- }
-
+ fprintf(stderr, "%s terminated (pid %ld) for reason: %s\n", webProcessName(), static_cast<long>(pid), terminationReasonToString(reason));
if (reason == kWKProcessTerminationReasonRequestedByClient) {
fflush(stderr);
return;
@@ -2390,7 +2398,7 @@
m_didPrintWebProcessCrashedMessage = true;
}
- if (m_shouldExitWhenWebProcessCrashes)
+ if (m_shouldExitWhenAuxiliaryProcessCrashes)
exit(1);
}
Modified: trunk/Tools/WebKitTestRunner/TestController.h (292969 => 292970)
--- trunk/Tools/WebKitTestRunner/TestController.h 2022-04-18 20:55:51 UTC (rev 292969)
+++ trunk/Tools/WebKitTestRunner/TestController.h 2022-04-18 21:20:22 UTC (rev 292970)
@@ -460,12 +460,12 @@
void didReceiveRawKeyUpMessageFromInjectedBundle(WKDictionaryRef messageBodyDictionary, bool synchronous);
// WKContextClient
- static void networkProcessDidCrash(WKContextRef, const void*);
- void networkProcessDidCrash();
- static void serviceWorkerProcessDidCrash(WKContextRef, WKProcessID, const void*);
- void serviceWorkerProcessDidCrash(WKProcessID);
- static void gpuProcessDidCrash(WKContextRef, WKProcessID, const void*);
- void gpuProcessDidCrash(WKProcessID);
+ static void networkProcessDidCrashWithDetails(WKContextRef, WKProcessID, WKProcessTerminationReason, const void*);
+ void networkProcessDidCrash(WKProcessID, WKProcessTerminationReason);
+ static void serviceWorkerProcessDidCrashWithDetails(WKContextRef, WKProcessID, WKProcessTerminationReason, const void*);
+ void serviceWorkerProcessDidCrash(WKProcessID, WKProcessTerminationReason);
+ static void gpuProcessDidCrashWithDetails(WKContextRef, WKProcessID, WKProcessTerminationReason, const void*);
+ void gpuProcessDidCrash(WKProcessID, WKProcessTerminationReason);
// WKPageNavigationClient
static void didCommitNavigation(WKPageRef, WKNavigationRef, WKTypeRef userData, const void*);
@@ -605,7 +605,7 @@
bool m_forceNoTimeout { false };
bool m_didPrintWebProcessCrashedMessage { false };
- bool m_shouldExitWhenWebProcessCrashes { true };
+ bool m_shouldExitWhenAuxiliaryProcessCrashes { true };
bool m_beforeUnloadReturnValue { true };
Modified: trunk/Tools/WebKitTestRunner/win/TestControllerWin.cpp (292969 => 292970)
--- trunk/Tools/WebKitTestRunner/win/TestControllerWin.cpp 2022-04-18 20:55:51 UTC (rev 292969)
+++ trunk/Tools/WebKitTestRunner/win/TestControllerWin.cpp 2022-04-18 21:20:22 UTC (rev 292970)
@@ -154,9 +154,9 @@
// First, let the test harness know this happened so it won't think we've hung. But
// make sure we don't exit just yet!
- m_shouldExitWhenWebProcessCrashes = false;
+ m_shouldExitWhenAuxiliaryProcessCrashes = false;
webProcessDidTerminate(kWKProcessTerminationReasonCrash);
- m_shouldExitWhenWebProcessCrashes = true;
+ m_shouldExitWhenAuxiliaryProcessCrashes = true;
// Then spin a run loop until it finishes crashing to give time for a crash log to be saved. If
// it takes too long for a crash log to be saved, we'll just give up.