Problem betrifft nicht nur einige wenige Nutzer
Hilfe bekamen die Quobyte-Leute vom Kernel-Team bei Canonical. Es ließ Quobyte an der eigenen Expertise beim Debuggen von Kernel-Problemen teilhaben und erkannte selbst auf Basis der Quobyte-Arbeit erst im Lauf des Vorgangs die Tragweite des Bugs. War man anfangs noch der Überzeugung, man müsse das Problem gar nicht für Ubuntu 16.04 lösen, weil es die meisten Nutzer nicht betreffe, geht man mittlerweile davon aus, dass der Fix für 16.04 notwendig ist. Denn ein Kernel, der sich möglicherweise auch durch Anwender gezielt zum Absturz bringen lässt, ist eben auch ein Sicherheitsrisiko - und zumindest bei Systemen mit aktiviertem Fuse ist genau das der Fall.
Mittlerweile arbeiten die Ubuntu-Entwickler sogar an einem Backport des Patches für den Kernel der aktuellen Ubuntu-Version 15.10. Das ist ein klares Zeichen, dass die Tragweite des Problems deutlich größer ist als anfangs angenommen. Über diesen Umweg wird letztlich auch das eingangs erwähnte Setup einen korrigierten Kernel 4.2 erhalten.
Das Resultat: zehn Zeilen Patch
Die Identifikation des defekten Codes durch Quobyte war de facto der entscheidende Schritt auf dem Weg zu einem Patch. Quobyte-Entwickler Robert Döbbelin stellte diesen auf der Fuse-Mailingliste zur Diskussion, nachdem Seth Forshee vom Kernel-Team bei Canonical sein Sanctus gegeben hatte. In Form eines Test-Pakets war zu diesem Zeitpunkt bereits ein Kernel in Version 4.2 verfügbar, der das beschriebene Fehlverhalten nicht mehr zeigte. Bis der Patch in Ubuntu als Teil eines neuen Kernel-Pakets ankommt, dürfte noch eine Weile vergehen. Zwar steht es den Linux-Anbietern frei, auch abseits des Hauptzweigs des Linux-Kernels Patches in ihre Kernel-Pakete einzubauen. Doch für solche Fälle gibt es diverse interne Prozesse, die zu befolgen sind. Immerhin: Auch auf die Kernel-Mailingliste hat es der Patch mittlerweile geschafft, so dass zur Aufnahme in den offiziellen Linux-Kernel nur noch Linux-Chef Linus Torvalds seine Zustimmung geben muss.
Dass der gesamte Patch letztlich nur zehn Zeilen lang ist und effektiv nur einen Funktionsaufruf von einer Stelle an eine andere verschiebt, trägt zu seiner Akzeptanz allerdings bei.
Lessons learned
Die große Lehre aus dieser Erfahrung ist, dass Kernel-Debugging nur funktioniert, wenn die Entwickler ein Problem selbst sehen und genau untersuchen können. Der erste Schritt auf dem Weg zum Debugging von Linux ist insofern das Bauen einer möglichst reduzierten Testumgebung: Nur wenn die Bedingungen klar sind, in denen ein Problem auftritt, lassen sich gute Rückschlüsse auf mögliche Lösungen ziehen.
Über den Autor
Martin Gerhard Loschwitz arbeitet bei SysEleven in Berlin. Er beschäftigt sich dort bevorzugt mit den Themen Openstack, Software Defined Networking und Software-defined Storage.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
Hilfe von Fuse? |
Ich halte die Aussage, 4 Monate seien "zu lang", in dieser Pauschalität für irrig...
Weil ich kein Freund von Benchmark bin, weil die wenig den Echtzeit Betrieb wieder...
Das System war nicht lange gestört... Die Problematische Software ist zeitnah...
der Fehler wurde also binnen 1h repariert, und dazu schreibt man dann einen 4 Seiten...