Freitag, 18. November 2011

Berichte von Michael Lotz' Auftragsarbeit

Wie berichtet, arbeitet Michael Lotz zur Zeit im Auftrag von Haiku Inc. mehr oder weniger Vollzeit an Haiku. Ab und an schreibt er darüber auf seinem Blog auf der Haiku Webseite. Bisher sind zwei sehr detaillierte Berichte dort erschienen, die ich hier nur kurz zusammenfassen werde. Natürlich wünschen sich alle Haiku Fans noch öfter Statusberichte lesen zu können, allerdings sagt Michael selber, dass seine Arbeit oft langwierig ist und für Außenstehende meist wenig spektakuläre Erfolge zeitigt.

Der erste Monat der Vertragsarbeit
vom 27. Oktober 2011

Das erste große Ziel waren WPA-verschlüsselte Funknetzwerke. Nachdem unverschlüsselte und WEP-kodierte bereits seit einiger Zeit funktionierten, war dies ein ziemlich schwerwiegender Schwachpunkt, da nur WPA2-verschlüsselte Netzwerke adäquate Sicherheit bieten. Der Weg führt über den in der UNIX-Welt verbreiteten wpa_supplicant, der in der Vergangenheit schon von mehreren Leuten versucht wurde zu portieren, aber nie wirklich problemlos lief.
Nachdem Michael den entscheidenden Bug schon im Sommer beseitigt hatte, fehlte noch eine echte Integration in Haiku. Das Problem war, dass der wpa_supplicant aus der Ein-Thread-UNIX-Welt stammt und sich nicht ohne weiteres in die Multi-Thread-Welt von Haiku einfügt. Anstatt sich abzuspalten und den wpa_supplicant nun komplett auseinanderzunehmen - und sich dadurch von zukünftigen Entwicklungen abzukoppeln - entschied sich Michael die ganze Sache zu serialisieren. Das heißt Anfragen werden nacheinander abgearbeitet, wie aus der UNIX-Welt gewohnt.
Das war nicht ganz trivial, aber am Ende wurde es zu einer ziemlich stabilen Komponente, die man als OptionalPackage installieren kann. Mit einem aktuellen Nightly Image geht das im Terminal mittels installoptionalpackage wpa_supplicant.
Zur Auswahl des Funknetzwerks und Eingabe des Passworts erscheint momentan noch jedes mal ein kleines Fenster. Später soll das Passwort in einer Art Schlüsselbund sicher aufbewahrt werden. Das soll dann aber eine allgemein nutzbare Lösung werden, es muss also erst eine gute API entwickelt werden.

Die zweite große Herausforderung war die Unterstützung für Michaels neuen Thinkpad X1, den er sich nicht zuletzt zulegte, um effektiver arbeiten zu können als mit seinem in die Jahre gekommenen HP Laptop. Mit einem 2.5GHz schnellen Core i5, Sandybridge Chipset und integrierter Intel Grafik, Wifi und HDA-Audio, sollte Haiku ohne große Probleme darauf zum Laufen zu bekommen sein. Gerade auch weil Intel gut mit Opensource Treiber zusammenarbeitet und Spezifikationen verfügbar macht.
Neben den momentan noch nicht nutzbaren USB 3.0 Ports und dem noch stummen HDA Audio, fiel sofort die nicht unterstützte Sandybridge-integrierte Grafik auf. Da der VESA Modus nicht die native Auflösung brachte, war alles verzerrt und verschwommen. Um richtig arbeiten zu können, musste also der intel_extreme Treiber aufgebohrt werden. Das gelang Michael auch nach relativ kurzer Zeit, jedoch hängt alles noch von der korrekten Initialisierung durchs BIOS ab und die Ausgabe über HDMI funktioniert noch nicht.

Nachdem er wegen Krankheit etwas ausgebremst wurde, ging Michael zur Abwechslung auf Bugjagd indem er sich ein paar interessante Einträge im Bugtracker vornahm. Die Ursache eines interessanten Effekts, bei dem ein Fenster beim Wechsel der Arbeitsfläche auf der verkehrten Arbeitsfläche gezeichnet wird, konnte er leider noch nicht aufspüren.

Dies zeigt einen der Hauptvorteile so eines Zeitvertrags: Man hat die Zeit schwierigen Problemen nachzugehen, auch wenn in diesem Fall die Lösung noch aussteht. Gleichzeitig zeigt es aber auch wie frustrierend es sein kann Stunde um Stunde im System zu wühlen, und am Ende das ursprüngliche Problem doch nicht gelöst zu haben. Stress, dem man als Freizeit-Programmierer aus dem Weg gehen kann, nicht aber wenn man so gewissenhaft wie Michael einen Vertrag erfüllt.


Grüße aus dem Kernel Debugging Land
vom 17. November 2011

Seit dem letzten BeGeistert ist Michael in Kernel und Speichermanagement vertieft. Während des BeGeistert Code Sprint hat er zusammen mit Ingo Weinhold Abstürze durch zufällig überschriebene Speicherbereiche und nicht freigegebenen Speicher untersucht. Dazu haben sie diverse Mechanismen zum Debuggen entwickelt, die helfen die Ursachen von speicherabhängigen Abstürzen zu ermitteln.
Ein weiteres Debugging Tool wurde geschaffen, um nachvollziehen zu können welcher Prozess Speicher anfordert ohne ihn wieder freizugeben. So konnte Michael feststellen warum selbst bei einem ruhenden System die Speicherauslastung stetig stieg. Dabei stellte sich heraus, dass der freie Speicher gar nicht wirklich immer weniger wurde, sondern dass er nur falsch berechnet wurde. Jetzt wird die Speicherauslastung richtig angezeigt, was nicht nur eine kosmetische Korrektur ist, da dieser Wert natürlich auch beeinflusst wie das System reagiert (wenn es z.B. denkt der Speicher würde knapp).

All diese Debug Tools wendet Michael an, wenn er Tickets in dieser Richtung aus dem Bugtracker bearbeitet. Oft müssen dazu vom Bugmelder noch einige Infos erfragt werden, was durch das hin und her der Emails und evtl. Zeitzonenunterschiede eine oft mal recht langwierige Geschichte sein kann.
Zudem konnte er den Bug meistens nicht auf seiner Hardware nachvollziehen, wodurch er viel blind in der Logik des Codes herumstochern muss. Jetzt lässt Michael auf einigen seiner anderen Rechner Stresstests laufen und hofft so die Fehler reproduzieren zu können.

Auch wenn dieses Kerneldebugging nicht dafür taugt aufsehenerregende Berichte zu schreiben, die Enduser - immerhin die Mehrheit der Spender für diese Aktion - gerne sehen, so ist es doch dringend nötig. Nur so kann Haiku zu einem stabilen System werden und Alpha/Beta-Phasen irgendwann hinter sich lassen.
Auftragsarbeit ist dazu wie geschaffen, da man sonst kaum Zeit findet so tief in das System einzusteigen und dran zu bleiben. Außerdem gibt es nur wenige, die sich dazu gut genug auskennen, und noch weniger, die sich dazu offenbar so gut wie Michael Lotz dazu motivieren können.

Keine Kommentare:

Kommentar veröffentlichen