Software::Desktop::Gnome
GNOME-Speicherleck geschlossen
Ein schwerwiegendes Speicherleck in der GNOME-Shell konnte jetzt geschlossen werden. Wenn sich der Patch bewährt, wird er auf GNOME 3.28 zurückportiert.
Gnome
In den Git-Zweig der Entwicklung zu GNOME 3.30 wurden jetzt mehrere Patches eingebracht, die einen Fehler beheben, der als GNOME-Shell-Speicherleck bereits seit über einem Jahr für Ärger sorgte. Erstmals wurde er in einem
Launchpad-Bug im März 2017 beschrieben. Der bei Endless beschäftigte GNOME-Entwickler Georges Stavracas beschreibt
in seinem Blog die Geschichte des Fehlers, der zunächst einige Rätsel aufgab.
Ein Kommentar eines Kollegen, der intensive Tests durchgeführt hatte, brachte ihn dann auf die richtige Spur. Das vermeintliche Speicherleck war gar keines, sondern eine Fehlfunktion der Garbage Collection (GC) der GNOME-Javascript-Bindings (GJS). Diese wurde teilweise bei bestimmten Objekten, den GObjects nicht ausgelöst, wenn es nötig gewesen wäre.
Der Fehler wurde beim normalen Arbeiten in der GNOME-Shell ausgelöst, beispielsweise durch zum Wechseln der Anwendung. So wuchs der belegte Speicher über einen Arbeitstag hin ständig an. Die Lösung sorgt jetzt dafür dass jedes Mal wenn ein GObject zum Entfernen markiert wird, gleichzeitig eine Garbage Collection in die Queue gestellt wird. Nach ausreichend Tests erwies sich diese etwas grobschlächtige Lösung trotzdem als minimalinvasiv, wenn es um die Performance ging.
Wenn weitere Tests keine Regressionen bringen soll der Patch auch auf GNOME 3.28 rückportiert werden. Ubuntu rief seine Anwender bereits vor einigen Tagen zum Testen eines der Patches auf, um sich die Chance offen zu halten, Ubuntu 18.04 LTS »Bionic Beaver« in wenigen Tagen ohne den Fehler ausliefern zu können. Ob dies in der kurzen Zeit bis zum Veröffentlichungstermin am 26. April noch gelingt, ist derzeit noch unklar.