- Penulis sedang menangani masalah debugging pada sebuah proyek yang mencakup
gdbserver dan aplikasi multithread yang berjalan di arsitektur PowerPC32.
- Masalahnya adalah koneksi ke
gdbserver terputus sehingga sesi debug tidak lagi bisa dikendalikan.
- Setelah melakukan riset dan investigasi, penulis menemukan sebuah thread email yang menunjuk ke commit tepat yang menyebabkan masalah ini.
- Penulis menghabiskan 3-4 hari membaca penjelasan commit yang berkaitan dengan arsitektur PowerPC dan perubahan di sekitar
task_struct, sambil berusaha memastikan apakah masalah ini telah diperbaiki pada versi kernel berikutnya.
- Penulis menggunakan berbagai alat dan teknik, seperti memindahkan thread
thread_struct, memeriksa layout task_struct dengan pahole, dan menggunakan ftrace untuk mengetahui kapan thread dari proses yang sedang di-debug dijadwalkan.
- Penulis menemukan bahwa masalah ini mungkin merupakan persoalan korupsi memori, karena thread yang macet hanya dijadwalkan sekali, tidak seperti thread lainnya.
- Penulis menggunakan hardware breakpoint di Linux, dan mengimplementasikan modul kernel Linux untuk menempatkan hardware breakpoint pada field
__state guna mengetahui siapa yang menulis ke sana.
- Penulis menemukan bahwa masalah ini disebabkan oleh buffer overflow di
ptrace_put_fpr (yang digunakan oleh API POKEUSER) sehingga field-field penting dalam task_struct, seperti __state, tertimpa.
- Karena masalah ini dapat menimbulkan isu keamanan, penulis mengirim patch ke tim keamanan kernel Linux (
security@kernel.org) untuk memperbaikinya.
- Alih-alih menerima patch dari penulis, maintainer PowerPC Michael Ellerman menerapkan versinya sendiri untuk perbaikan tersebut.
- Penulis merasa diremehkan dan marah karena pekerjaannya tidak diakui dengan layak. Ia hanya mendapatkan tag "Reported-by".
- Kontribusi kernel pertama penulis menjadi pengalaman yang penuh frustrasi dan rasa kecewa karena harus berurusan dengan orang-orang yang tampaknya tidak menganggap penting pemberian pengakuan yang semestinya atas pekerjaan seseorang.
1 komentar
Opini Hacker News