2 poin oleh GN⁺ 2023-09-28 | 1 komentar | Bagikan ke WhatsApp
  • 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

 
GN⁺ 2023-09-28
Opini Hacker News
  • Artikel tentang situasi ketika patch kontributor tidak diterima sepenuhnya, tetapi maintainer menggunakan ide tersebut untuk menyelesaikan masalah keamanan
  • Beberapa komentar menyebutkan bahwa meskipun patch lengkapnya tidak diterima, maintainer tetap seharusnya memberi kredit kepada kontributor
  • Ada pendapat bahwa patch maintainer lebih baik dan lebih efisien, namun juga perlu mengakui bahwa kontributor telah mengidentifikasi masalah dan mengusulkan solusinya
  • Beberapa komentar menekankan pentingnya memberi kredit kepada kontributor, sambil menyatakan bahwa Linux kernel bukan soal imbalan dan maintainer berhak memilih solusi terbaik
  • Disebutkan tag "Suggested-by" dalam dokumentasi kernel sebagai cara memberi kredit kepada orang yang mengusulkan ide patch
  • Beberapa komentar mengatakan bahwa ini adalah bagian umum dari kontribusi ke kernel, dan tujuan utamanya adalah memperbaiki bug, bukan mendapatkan kredit
  • Ada komentar yang membagikan pengalaman ketika kontribusi mereka di proyek open source diabaikan atau tidak diterima sepenuhnya, yang dapat menghambat kontribusi lanjutan
  • Komentar lain membandingkan patch kontributor dan patch maintainer, menunjukkan perbedaannya dan menyarankan bahwa pembuat asli seharusnya diberi kredit
  • Diskusi juga menyinggung pentingnya menangani kontribusi anggota tim yang lebih junior dengan cara yang mendorong pembelajaran dan perbaikan
  • Ada komentar yang mengungkapkan kebingungan atas reaksi negatif, dengan argumen bahwa pengakuan itu penting dan menambahkan co-author adalah gestur kecil namun bermakna
  • Diskusi ditutup dengan komentar tentang pentingnya diplomasi dan menjaga hubungan jangka panjang dalam proyek open source