<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Epiphany – Linux und Ich</title>
	<atom:link href="https://linuxundich.de/en/tag/epiphany/feed/" rel="self" type="application/rss+xml" />
	<link>https://linuxundich.de/en</link>
	<description>A German Linux blog, in English</description>
	<lastBuildDate>Fri, 23 Oct 2026 14:34:05 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>
	<item>
		<title>WebKitGTK 2.54: Tiny Star, Massive Memory Leak</title>
		<link>https://linuxundich.de/en/webkitgtk-memory-leak-backdrop-filter/</link>
					<comments>https://linuxundich.de/en/webkitgtk-memory-leak-backdrop-filter/#respond</comments>
		
		<dc:creator><![CDATA[Christoph Langner]]></dc:creator>
		<pubDate>Fri, 23 Oct 2026 14:34:05 +0000</pubDate>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Arch Linux]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Epiphany]]></category>
		<category><![CDATA[GNOME]]></category>
		<category><![CDATA[GNOME Web]]></category>
		<category><![CDATA[PlanetFOSS]]></category>
		<guid isPermaLink="false">https://linuxundich.de/en/?p=280</guid>

					<description><![CDATA[While working on PlanetFOSS, I ran into a massive memory leak in WebKitGTK 2.54: a harmless frosted-glass effect via backdrop-filter pushes GNOME Web to as much as 9.8 GB. Firefox and Chrome don't even flinch at the same page.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Firefox and Chrome are mandatory when you build a website, while a quick look at <a href="https://apps.gnome.org/Epiphany/">GNOME Web aka Epiphany</a> tends to fall by the wayside. Not entirely for me, since I sit in front of a GNOME desktop. And so, while working on <a href="https://planetfoss.net/">PlanetFOSS</a>, <a href="https://linuxundich.de/en/planetfoss-launch-linux-news-bundles-supernovas/">my little Linux and FOSS news aggregator</a>, a full-blown memory leak in <a href="https://webkitgtk.org/">WebKitGTK</a> landed right at my feet.</p>



<p class="wp-block-paragraph">The start page simply froze Epiphany solid. Afterwards, the journal held a core dump of the web process, and systemd had logged a memory peak of 5.8 GB. For a news site with a handful of cards, that&#8217;s a bit much in my opinion. Restarting didn&#8217;t help either: Epiphany dutifully restores the PlanetFOSS tab and promptly chokes on it again.</p>



<h2 class="wp-block-heading">Following the trail</h2>



<p class="wp-block-paragraph">A look at the package history gave the first clue: on October 7, Arch Linux had updated WebKitGTK, the browser engine behind Epiphany, to version 2.54. The browser itself was quickly off the hook. MiniBrowser, a bare-bones test browser that ships with WebKitGTK, ballooned to several gigabytes within seconds on the PlanetFOSS start page. A plain example page, on the other hand, gets by with 170 MB.</p>



<h2 class="wp-block-heading">The trail leads to the star</h2>



<p class="wp-block-paragraph">An AI gave me a hand with the debugging, but narrowing things down was good old process of elimination. Without JavaScript, the page still hung. Without the stylesheet, it ran just fine. After that, one style rule after another got the boot until the culprit was clear: <code>backdrop-filter</code>. It <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/backdrop-filter">blurs the background behind an element</a> and creates the popular frosted-glass look.</p>



<p class="wp-block-paragraph">PlanetFOSS uses the effect in several places, but mostly on the small bookmark stars in the top left corner of every article card. The start page has 55 of them, plus eight news cards and ten play icons on the videos. Each of these elements gets its own frosted-glass layer. In those numbers, WebKitGTK 2.54 apparently buckles. Tiny star, massive impact.</p>



<p class="wp-block-paragraph">To double-check, I built a test page full of cards, each with one small frosted-glass element. With ten to 14 cards, memory stayed in the green. With 18 cards, around one gigabyte was already taken, and from 22 cards on, usage shot up to seven or eight gigabytes. So things tip over somewhere around 20 layers, although the exact limit is hard to pin down.</p>



<p class="wp-block-paragraph">The interesting part: the blur itself isn&#8217;t to blame at all. Frosted glass without any blur, or a simple grayscale filter, bloats WebKitGTK just the same. So the problem lies in how the new version manages these layers. Turning off the engine&#8217;s hardware acceleration does keep the test page lean. That&#8217;s no fix, though, since I can hardly tell my visitors how to launch their browser.</p>



<h2 class="wp-block-heading">Firefox and Chrome couldn&#8217;t care less</h2>



<p class="wp-block-paragraph">That leaves the question of whether only WebKitGTK is affected. So I loaded the same copy of the start page in different browsers, once with the old and once with the new design, and measured memory usage each time. I did this on my Arch notebook and in a virtual machine running Ubuntu 26.04. Images and text were identical in every run.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6adb722a753a9&quot;}" data-wp-interactive="core/image" data-wp-key="6adb722a753a9" class="wp-block-image wp-lightbox-container"><img fetchpriority="high" decoding="async" height="745" sizes="(max-width: 781px) 100vw, 680px" srcset="https://linuxundich.de/wp-content/uploads/2026/10/02-speicherverbrauch-640x372.webp 640w, https://linuxundich.de/wp-content/uploads/2026/10/02-speicherverbrauch-768x447.webp 768w, https://linuxundich.de/wp-content/uploads/2026/10/02-speicherverbrauch-1280x745.webp 1280w, https://linuxundich.de/wp-content/uploads/2026/10/02-speicherverbrauch-1536x894.webp 1536w, https://linuxundich.de/wp-content/uploads/2026/10/02-speicherverbrauch.webp 1650w" width="1280" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://linuxundich.de/wp-content/uploads/2026/10/02-speicherverbrauch-1280x745.webp" alt="Bar chart: memory usage of WebKitGTK, Epiphany, Firefox, and Chrome before and after the CSS fix on Arch Linux and in an Ubuntu VM"/><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption">Only WebKitGTK 2.54 balloons with the old stylesheet, while Firefox, Chrome, and WebKitGTK 2.52 stay calm.</figcaption></figure>



<p class="wp-block-paragraph">The result is clear. Firefox and Chrome show practically the same usage before and after. Even Ubuntu&#8217;s older WebKitGTK 2.52 stays perfectly calm at around 680 MB. Only version 2.54 explodes: on my notebook, memory usage climbed to 9.8 GB in 40 seconds. After reworking the page, it was a mere 300 MB.</p>



<p class="wp-block-paragraph">In the VM, Epiphany ran as a Flatpak, which brings the new engine along. There, the browser ballooned to 4.3 GB within a minute, until only 300 MB of the roughly 5 GB of RAM were left. In an earlier run, the tab threw in the towel entirely: <em>Oops! Something went wrong while displaying this page</em>. With the new design, it stayed at 721 MB.</p>



<h2 class="wp-block-heading">Opaque background instead of frosted glass</h2>



<p class="wp-block-paragraph">The fix on the PlanetFOSS side is unspectacular. Stars, news cards, and play icons now do without frosted glass, and their background is simply a little less transparent instead. You&#8217;ll really only notice the difference if you put both versions side by side and look very closely. For a few gigabytes less memory hunger, that&#8217;s more than a fair trade in my opinion.</p>



<figure data-wp-context="{&quot;galleryId&quot;:&quot;6adb722a78865&quot;}" data-wp-interactive="core/gallery" class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">

<figure data-wp-context="{&quot;imageId&quot;:&quot;6adb722a78966&quot;}" data-wp-interactive="core/image" data-wp-key="6adb722a78966" class="wp-block-image size-large wp-lightbox-container"><img decoding="async" height="738" sizes="(max-width: 781px) 100vw, 680px" srcset="https://linuxundich.de/wp-content/uploads/2026/10/01-lupe-vorher-640x369.webp 640w, https://linuxundich.de/wp-content/uploads/2026/10/01-lupe-vorher-768x443.webp 768w, https://linuxundich.de/wp-content/uploads/2026/10/01-lupe-vorher-1280x738.webp 1280w, https://linuxundich.de/wp-content/uploads/2026/10/01-lupe-vorher-1536x886.webp 1536w, https://linuxundich.de/wp-content/uploads/2026/10/01-lupe-vorher.webp 1560w" width="1280" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://linuxundich.de/wp-content/uploads/2026/10/01-lupe-vorher-1280x738.webp" alt="Detail of the PlanetFOSS start page with a magnifier on the bookmark star of an article card, old version with blur"/><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption">Before: A blur via backdrop-filter sits behind the star, which makes WebKitGTK 2.54 balloon to as much as 9.8 GB.</figcaption></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6adb722a78ccd&quot;}" data-wp-interactive="core/image" data-wp-key="6adb722a78ccd" class="wp-block-image size-large wp-lightbox-container"><img decoding="async" height="738" sizes="(max-width: 781px) 100vw, 680px" srcset="https://linuxundich.de/wp-content/uploads/2026/10/01-lupe-nachher-640x369.webp 640w, https://linuxundich.de/wp-content/uploads/2026/10/01-lupe-nachher-768x443.webp 768w, https://linuxundich.de/wp-content/uploads/2026/10/01-lupe-nachher-1280x738.webp 1280w, https://linuxundich.de/wp-content/uploads/2026/10/01-lupe-nachher-1536x886.webp 1536w, https://linuxundich.de/wp-content/uploads/2026/10/01-lupe-nachher.webp 1560w" width="1280" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://linuxundich.de/wp-content/uploads/2026/10/01-lupe-nachher-1280x738.webp" alt="Detail of the PlanetFOSS start page with a magnifier on the bookmark star of an article card, new version without blur"/><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption">After: A more opaque background replaces the blur, the star just gets a little darker, and WebKitGTK needs 300 MB.</figcaption></figure>

</figure>



<p class="wp-block-paragraph">The change has been live for a few days, and MiniBrowser once again gets by with 213 MB on the real start page. I kept the frosted-glass effect in the pop-out section bar and on the source links in the lead story. That&#8217;s only a handful of layers, and they don&#8217;t throw WebKit off balance. linuxundich.de also uses the effect in just two places and was never affected.</p>



<p class="wp-block-paragraph">All in all, the problem clearly lies in WebKitGTK 2.54 and not in my stylesheet. Presumably every page that uses enough elements with <code>backdrop-filter</code> is affected. So my advice to everyone who builds websites: go easy on the frosted glass and load your site in Epiphany every now and then. I&#8217;ve <a href="https://bugs.webkit.org/show_bug.cgi?id=328065">filed a bug report</a> with a test case in the WebKit Bugzilla. Hopefully I didn&#8217;t kill anyone&#8217;s browser session.</p>
<hr><p>☕ <strong>Support Linux und Ich</strong><br>Thanks for reading <a href="https://linuxundich.de/en/">Linux und Ich</a>. If you enjoy the blog and would like to support my work, you will find more information on the <a href="https://linuxundich.de/en/support/">donation page</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://linuxundich.de/en/webkitgtk-memory-leak-backdrop-filter/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
