Kisah bug Hubris: siapa yang melumpuhkan switch jaringan?
-
Apa itu Hubris?
- Hubris adalah sistem operasi untuk sistem yang sangat tertanam, dirancang untuk komputer yang tidak dikenali sebagai komputer, seperti bagian dalam keyboard.
- Dikembangkan untuk menangani semua pekerjaan yang diperlukan guna menyalakan prosesor besar di Oxide Rack.
- Hubris cukup unik, dan bagian yang relevan dengan cerita ini dijelaskan di bawah.
-
TKP
- Rekan di Oxide, Arjen Roodselaar, yang menangani firmware switch jaringan, sedang menguji perubahan pada urutan daya dan konfigurasi clock.
- Setelah perubahan kecil, switch tiba-tiba tidak bisa menyala.
- Sebagian firmware masih merespons, tetapi bagian penting yang menangani urutan catu daya berhenti.
-
Memeras lebih banyak dari RAM yang terbatas
- Mikrokontroler murah yang menggunakan Hubris memiliki RAM dan flash yang sangat terbatas.
- Hubris terdiri dari banyak program yang dikompilasi terpisah yang disebut task, sehingga kebutuhan sumber dayanya sedikit lebih tinggi dibanding sistem operasi lain.
- Rekan Matt Keeter baru-baru ini membuat sistem lebih cerdas dengan mencoba mengemas task seefisien mungkin menggunakan beberapa region berpangkat dua.
-
Barang bukti yang tak terbantahkan
- Arjen menyelidiki switch jaringan yang gagal menggunakan debugger Hubris bernama Humility.
- Ia menggunakan perintah
humility tasksuntuk menampilkan daftar task yang berjalan di prosesor beserta informasi statusnya. - Ia menemukan bahwa task yang menangani urutan daya telah restart 115 kali akibat gangguan memori.
-
Memperluas borrow Rust antar-task dalam IPC Hubris
- Task Hubris dapat saling mengirim pesan melalui IPC.
- Pesan tersebut terlihat dan bekerja sangat mirip dengan pemanggilan fungsi.
- Ketika sebuah task meminjamkan memori ke task lain, task itu tidak boleh mencoba meminjamkan memori yang sebenarnya tidak dimilikinya.
-
Saat fitur berbalik menyerang
- Dua fitur dapat bergabung dan menjadi bug.
- Pengemasan task bekerja secara oportunistis di sistem build.
- Jika ukuran task A berubah sedikit, posisi batas region MPU milik task B yang tidak terkait bisa ikut bergeser.
-
Telepon dari dalam rumah!
- Algoritma perlindungan memori perlu diubah.
- Memori yang dipinjamkan harus diizinkan melintasi region MPU.
-
Gagal dengan Hubris
- Ada banyak hal yang tidak terjadi ketika sistem gagal.
- Switch jaringan yang rusak bisa diperbaiki dalam 3 jam.
- Isolasi kerusakan, gagal menuju kondisi aman, memori bersama yang aman, ko-desain kernel-debugger, kesederhanaan desain dan implementasi, serta integrasi tim yang erat dan non-hierarkis semuanya membantu.
Opini GN⁺
- Artikel ini menunjukkan pentingnya desain perangkat lunak yang tangguh bahkan dalam sistem yang kompleks, melalui proses menemukan dan menyelesaikan bug yang terjadi pada sistem operasi bernama Hubris.
- Proses penemuan dan penyelesaian bug menekankan pentingnya kerja tim dan alat debugging yang efisien dalam memecahkan masalah rumit di rekayasa perangkat lunak.
- Artikel ini menunjukkan betapa pentingnya fitur isolasi sistem dan penanganan kegagalan saat menggunakan sistem seperti Hubris. Hal ini dapat sangat meningkatkan stabilitas dan kemudahan pemeliharaan sistem.
- Artikel ini juga menunjukkan bagaimana bahasa pemrograman aman seperti Rust digunakan untuk menjamin keamanan memori dan meminimalkan bug. Pada sistem yang menggunakan Rust, bug jenis ini jarang terjadi, yang membuktikan betapa efektifnya jaminan keamanan memori Rust dalam praktik.
- Proyek atau produk lain dengan fitur serupa antara lain seL4, FreeRTOS, dan Zephyr, yang masing-masing merupakan sistem operasi embedded dengan tujuan dan karakteristik berbeda.
- Saat mengadopsi sistem seperti Hubris, perlu mempertimbangkan faktor seperti keterbatasan memori, manajemen task, dan desain mekanisme IPC. Keuntungan memilih sistem semacam ini terletak pada desain sistem yang tangguh dan pengelolaan memori yang aman, sedangkan kekurangannya bisa berupa kompleksitas sistem dan kurva belajar yang curam.
1 komentar
Komentar Hacker News
Ulasan kode kernel Hubris
Pujian untuk iklan lowongan kerja
Ulasan kode dan saran
TaskDesc::regions.Penilaian terhadap proses debugging
Ketertarikan pada budaya tim Oxide
Tautan informasi terkait
Empati terhadap masalah yang muncul saat debugging
Saran tentang penanganan hardware
Pujian untuk pekerjaan Oxide
Reaksi terhadap nama sistem operasi