From 1c596aab51dbf0082193fd067f133a57897916dc Mon Sep 17 00:00:00 2001 From: Alberto Garcia Date: Thu, 23 Dec 2021 13:10:23 +0000 Subject: [PATCH] Force the single-process mode in Evolution and Geary Bug: https://bugs.webkit.org/show_bug.cgi?id=201033 Origin: https://mail.gnome.org/archives/distributor-list/2019-October/msg00000.html Since WebKitGTK 2.26 the single-process mode is considered a security risk and the process limiting APIs have been completely disabled. This change is transparent for most applications, but Geary and particularly Evolution (see upstream bug #587) are known to have problems in multi-process mode. This has already been fixed in Geary 3.33.91 and in Evolution 3.34.1. Although the API to set the single-process model is no longer available, it is still possible to do it internally. This patch does that for Evolution and Geary. This is a temporary workaround and it is especially meant for stable distributions and security updates, where patching or updating the affected apps is not an option. =================================================================== Gbp-Pq: Name force-single-process.patch --- .../WebKit/UIProcess/API/glib/WebKitWebContext.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp b/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp index bd2d4d2020..e53d6ef01d 100644 --- a/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp +++ b/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp @@ -405,6 +405,20 @@ static void webkitWebContextConstructed(GObject* object) configuration.setUsesWebProcessCache(true); #if PLATFORM(GTK) configuration.setProcessSwapsOnNavigation(priv->psonEnabled); + if (!priv->psonEnabled) { + const char* useSingleWebProcess = getenv("WEBKIT_USE_SINGLE_WEB_PROCESS"); + if (useSingleWebProcess) { + if (strcmp(useSingleWebProcess, "0")) { + configuration.setUsesSingleWebProcess(true); + } + } else { + const char* prgname = g_get_prgname(); + if (!g_strcmp0(prgname, "evolution") || !g_strcmp0(prgname, "geary")) { + configuration.setUsesSingleWebProcess(true); + } + } + } + #if !USE(GTK4) configuration.setUseSystemAppearanceForScrollbars(priv->useSystemAppearanceForScrollbars); #endif -- 2.30.2