Kategorie
GNU/Linux
Veröffentlicht
Lesezeit
5 Minuten
Diskussion
Noch keine Kommentare

GNU/Linux

WebKitGTK 2.54: Kleines Sternchen, großes Speicherleck

Bei der Arbeit an PlanetFOSS ist mir ein massives Speicherleck in WebKitGTK 2.54 begegnet: Ein harmloser Milchglas-Effekt per backdrop-filter treibt GNOME Web auf bis zu 9,8 GB. Firefox und Chrome lässt die gleiche Seite völlig kalt.

Laptop-Bildschirm zeigt Linux-Nachrichtenkarten, darunter Meldungen zum Linux-Kernel 7.3, vor rotem Hintergrund.

Firefox und Chrome gehören beim Bauen einer Website zum Pflichtprogramm, ein Blick in GNOME Web aka Epiphany fällt dagegen gerne unter den Tisch. Bei mir nicht ganz, schließlich sitze ich auf einem GNOME-Desktop. Und so ist mir bei der Arbeit an PlanetFOSS, meinem kleinen Linux- und FOSS-Nachrichtensammler, ein ausgewachsenes Speicherleck in WebKitGTK vor die Füße gefallen.

Die Startseite ließ Epiphany kurzerhand komplett einfrieren. Im Journal fand sich anschließend ein Speicherabzug des Webprozesses, und systemd hatte eine Speicherspitze von 5,8 GB notiert. Für eine Nachrichtenseite mit ein paar Kärtchen ist das in meinen Augen dann doch etwas viel. Ein Neustart brachte nichts: Epiphany stellt brav den PlanetFOSS-Tab wieder her und verschluckt sich prompt erneut.

Auf Spurensuche

Ein Blick in die Paketchronik brachte den ersten Hinweis: Arch Linux hatte am 7. Oktober WebKitGTK, die Browser-Engine hinter Epiphany, auf Version 2.54 aktualisiert. Den Browser selbst konnte ich schnell entlasten. Der MiniBrowser, ein schlichter Testbrowser, der bei WebKitGTK mit dabei ist, lief mit der PlanetFOSS-Startseite innerhalb von Sekunden auf mehrere Gigabyte auf. Eine schlichte Beispielseite kommt dagegen mit 170 MB aus.

Die Spur führt zum Sternchen

Bei der Fehlersuche hat mir eine KI unter die Arme gegriffen, die Eingrenzung lief dann ganz klassisch per Ausschlussverfahren. Ohne JavaScript hing die Seite weiterhin, ohne Stylesheet lief sie dagegen brav. Danach flog eine Gestaltungsregel nach der anderen raus, bis der Übeltäter feststand: backdrop-filter. Der zeichnet den Hintergrund hinter einem Element unscharf und sorgt so für den beliebten Milchglas-Effekt.

Den Effekt nutzt PlanetFOSS an mehreren Stellen, vor allem aber an den kleinen Merken-Sternchen oben links auf jeder Artikelkarte. Davon gibt es auf der Startseite 55 Stück, dazu acht Nachrichtenkarten und zehn Play-Symbole auf den Videos. Jedes dieser Elemente bekommt seine eigene Milchglas-Ebene. In der Masse geht WebKitGTK 2.54 dabei offenbar in die Knie. Kleines Sternchen, große Auswirkungen eben.

Zur Gegenprobe habe ich mir eine Testseite mit lauter Kärtchen gebaut, jedes mit einem kleinen Milchglas-Element. Bei zehn bis 14 Karten blieb der Speicher im grünen Bereich, bei 18 Karten war schon rund ein Gigabyte belegt. Ab 22 Karten schoss der Verbrauch auf sieben bis acht Gigabyte. Irgendwo um die 20 Ebenen kippt die Sache also, ganz genau festnageln lässt sich die Grenze aber nicht.

Spannend dabei: Am Weichzeichnen selbst liegt es gar nicht. Auch ein Milchglas ohne jede Unschärfe oder ein simpler Graufilter bläht WebKitGTK genauso auf. Das Problem steckt also darin, wie die neue Version solche Ebenen verwaltet. Schaltet man die Grafikbeschleunigung der Engine ab, bleibt die Testseite zwar schlank. Als Lösung taugt das aber nicht, schließlich kann ich meinen Besuchern schlecht vorschreiben, wie sie ihren Browser starten.

Firefox und Chrome lässt das kalt

Bleibt die Frage, ob nur WebKitGTK betroffen ist. Dazu habe ich dieselbe Kopie der Startseite einmal mit der alten und einmal mit der neuen Gestaltung in verschiedenen Browsern geladen und jeweils den Speicherverbrauch gemessen. Das Ganze einmal auf meinem Arch-Notebook und einmal in einer virtuellen Maschine mit Ubuntu 26.04. Bilder und Texte waren in allen Durchgängen identisch.

Das Ergebnis ist eindeutig. Firefox und Chrome zeigen vorher und nachher praktisch den gleichen Verbrauch. Auch die ältere WebKitGTK-Version 2.52 von Ubuntu bleibt mit rund 680 MB völlig gelassen. Nur die Version 2.54 explodiert: Auf meinem Notebook kletterte der Speicherbedarf in 40 Sekunden auf 9,8 GB, nach dem Umbau der Seite waren es gerade einmal 300 MB.

In der VM lief Epiphany als Flatpak, das die neue Engine gleich mitbringt. Dort blähte sich der Browser in einer Minute auf 4,3 GB auf, bis von gut 5 GB Arbeitsspeicher gerade noch 300 MB frei blieben. In einem früheren Durchgang warf der Tab gleich ganz das Handtuch: Hoppla! Beim Anzeigen dieser Seite ging etwas schief. Mit der neuen Gestaltung blieb es bei 721 MB.

Deckender Hintergrund statt Milchglas

Die Lösung auf Seiten von PlanetFOSS ist unspektakulär. Sternchen, Nachrichtenkarten und Play-Symbole verzichten jetzt aufs Milchglas, dafür ist ihr Hintergrund einfach etwas weniger durchsichtig. Den Unterschied sieht man eigentlich nur, wenn man beide Versionen direkt nebeneinanderlegt und ganz genau hinschaut. Für ein paar Gigabyte weniger Speicherhunger ist das in meinen Augen ein mehr als fairer Tausch.

Seit ein paar Tagen ist die Änderung live, und der MiniBrowser kommt mit der echten Startseite wieder mit 213 MB aus. Den Milchglas-Effekt in der aufklappenden Rubrikenleiste und an den Quellen-Links im Aufmacher habe ich behalten. Das sind nur eine Handvoll Ebenen, und die bringen WebKit nicht aus dem Tritt. Auch linuxundich.de nutzt den Effekt nur an zwei Stellen und war deshalb nie betroffen.

Alles in allem steckt das Problem klar in WebKitGTK 2.54 und nicht in meinem Stylesheet. Betroffen sind wohl alle Seiten, die genügend Elemente mit backdrop-filter verwenden. Von daher mein Rat an alle, die Websites bauen: Milchglas lieber sparsam dosieren und die Seite auch mal in Epiphany laden. Einen Fehlerbericht samt Testfall habe ich im WebKit-Bugzilla eingereicht. Hoffentlich habe ich niemandem die Browsersitzung gekillt.

Diskussion Noch keine Kommentare – schreib den ersten.

Kommentar schreiben

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Markdown wird unterstützt: **fett**, _kursiv_, [Linktext](URL), `Code`, Zeilen mit - für Listen, 1. für nummerierte Listen, dreifache Backticks für Codeblöcke.

Sicherheitsprüfung: läuft automatisch, du musst nichts tun.

Mehr aus dem Blog

Gerade diskutiert

Kategorien

Schlagwörter

Linux und Ich — WebKitGTK 2.54: Kleines Sternchen, großes Speicherleck
https://linuxundich.de/webkitgtk-speicherleck-backdrop-filter/ — gedruckt am 23. Oktober 2026