Debugging crash yang tampaknya mustahil sering kali membutuhkan cara berpikir di luar kotak. Tim engineer OpenAI baru-baru ini menghadapi masalah semacam itu di infrastruktur data ChatGPT, dan solusinya menarik: mereka menggunakan pendekatan epidemiologis untuk menemukan bug yang telah bersembunyi selama 18 tahun di GNU libunwind.
Dalam laporan teknis resmi, tim OpenAI menjelaskan bahwa mereka mengamati crash yang aneh dari layanan Rockset, bagian dari infrastruktur data ChatGPT yang menangani banyak data plugin dan pencarian percakapan. Crash ini bukan tipe biasa: fungsi C++ normal tampak selesai, lalu return ke alamat yang tidak valid. Kadang saved return address bernilai NULL. Kadang stack pointer register malah off by 8 bytes. Setiap hipotesis yang dibuat, termasuk oleh ChatGPT sendiri, punya bukti kuat yang menyangkalnya.
Setelah investigasi mendalam, tim menyadari bahwa yang mereka hadapi bukan satu bug, melainkan dua bug tidak terkait yang secara kebetulan ditemukan bersamaan. Pertama, korupsi hardware silent pada satu host Azure, di mana CPU tidak melakukan perhitungan matematika dengan benar. Kedua, sebuah race condition berusia 18 tahun di GNU libunwind, library open source yang digunakan secara luas untuk stack unwinding.
Bug di libunwind adalah race condition yang tidak pernah terdeteksi sebelumnya. Library ini digunakan oleh banyak aplikasi C++ untuk melakukan stack unwinding saat exception handling atau signal handling. Race condition berarti dalam kondisi konkurensi tertentu, state internal library bisa menjadi tidak konsisten, menyebabkan stack corruption yang akhirnya memicu crash pada return dari fungsi.
Yang membuat kasus ini menarik adalah metodologi yang digunakan. Alih-alih menginspeksi beberapa core dump secara manual dan membuat hipotesis berdasarkan intuisi, tim OpenAI membangun dataset berkualitas tinggi tentang seluruh populasi crash. Mereka mengumpulkan semua core dump, mengkategorikannya secara sistematis, dan mencari pola epidemiologis.
Pendekatan ini mirip dengan cara epidemiolog mempelajari penyakit: tidak dengan memeriksa satu pasien secara mendalam, tetapi dengan memahami distribusi dan pola kemunculan kasus di populasi. Dengan dataset yang representatif, tim bisa mengidentifikasi bahwa crash tidak terdistribusi secara acak, melainkan terkonsentrasi pada kondisi runtime tertentu yang akhirnya mengarah ke libunwind.
Tim juga menggunakan ASAN di environment staging, namun bug ini tidak tertangkap karena race condition terjadi di level unwinding yang tidak di-cover oleh ASAN. Kombinasi antara dataset epidemiologis dan trace analysis yang mendetail akhirnya membuka tabir mystery.
GNU libunwind adalah library fundamental yang digunakan oleh banyak proyek besar. Bug yang bertahan 18 tahun ini mengingatkan kita bahwa code yang tampaknya matang dan teruji bisa menyimpan vulnerabilitas yang sangat halus, terutama yang berkaitan dengan konkurensi dan race condition.
Bagi developer di Indonesia yang bekerja dengan C++ atau sistem low-level, kasus ini menunjukkan pentingnya observabilitas dan pengumpulan data yang sistematis. Debugging tidak harus selalu berupa intuisi heroik di depan satu core dump. Terkadang, science dan metodologi data-driven bisa menjadi kunci untuk memecahkan mystery yang tampaknya impossible.
OpenAI telah mengirimkan patch perbaikan ke upstream GNU libunwind sehingga seluruh komunitas open source mendapatkan manfaatnya. Sebuah kemenangan untuk kerja sama antara industri dan komunitas open source dalam menjaga fondasi software yang kita semua gunakan.
Sumber: OpenAI Engineering Blog
Dapatkan feedback, users, dan eksposur dari komunitas kreator, developer, dan entrepreneur digital Indonesia.
Submit Produk → Pelajari Dulu