- Der Autor bearbeitete ein Debugging-Problem in einem Projekt mit
gdbserver, das auf der PowerPC32-Architektur lief und eine Multi-Thread-Anwendung umfasste.
- Das Problem bestand darin, dass die Verbindung zu
gdbserver abbrach und die Debug-Session dadurch nicht mehr steuerbar war.
- Nach Recherche und Untersuchung fand der Autor einen E-Mail-Thread, der auf den exakten Commit verwies, der dieses Problem verursacht hatte.
- Der Autor verbrachte 3–4 Tage damit, Commit-Beschreibungen zu Änderungen rund um die PowerPC-Architektur und
task_struct zu lesen, und versuchte herauszufinden, ob das Problem in späteren Kernel-Versionen behoben worden war.
- Der Autor nutzte verschiedene Werkzeuge und Techniken, darunter das Verschieben von
thread_struct-Threads, die Inspektion des Layouts von task_struct mit pahole sowie den Einsatz von ftrace, um festzustellen, wann Threads des debuggten Prozesses eingeplant wurden.
- Der Autor stellte fest, dass es sich um ein Problem mit Speicherbeschädigung handeln könnte, da der festhängende Thread im Gegensatz zu anderen Threads nur einmal eingeplant wurde.
- Der Autor verwendete Hardware-Breakpoints unter Linux und implementierte ein Linux-Kernel-Modul, das einen Hardware-Breakpoint auf das Feld
__state setzte, um herauszufinden, wer darauf schrieb.
- Der Autor entdeckte, dass das Problem durch einen Buffer Overflow in
ptrace_put_fpr verursacht wurde (verwendet von der POKEUSER-API), wodurch wichtige Felder von task_struct wie __state überschrieben wurden.
- Da dies zu einem Sicherheitsproblem führen konnte, schickte der Autor einen Patch an das Linux-Kernel-Sicherheitsteam (
security@kernel.org), um das Problem zu beheben.
- Der PowerPC-Maintainer Michael Ellerman implementierte jedoch statt der Übernahme des Patches des Autors seine eigene Version der Korrektur.
- Der Autor war verärgert und hatte das Gefühl, seine Arbeit werde nicht angemessen gewürdigt und er werde unterschätzt. Er erhielt lediglich ein
Reported-by-Tag.
- Der erste Kernel-Beitrag des Autors war eine frustrierende und entmutigende Erfahrung voller Gespräche mit Menschen, die es offenbar nicht für wichtig halten, dass andere für ihre Arbeit angemessen anerkannt werden.
1 Kommentare
Hacker-News-Kommentare
Suggested-by-Tags in der Kernel-Dokumentation als Möglichkeit, der Person Anerkennung zu geben, die die Patch-Idee vorgeschlagen hat