Segfault klien VPN di Pi? Tangkap prosesnya dulu
Shell mencetak segmentation fault dan kartu diflash ulang. Catat executable, versi, dan rekaman crash sebelum mengganti perangkat keras apa pun.
Anda menjalankan klien, terminal mencetak Segmentation fault (core dumped), dan satu jam berikutnya habis untuk mem-flash ulang kartu. Pesan itu menjelaskan bagaimana satu proses mati pada satu momen. Pesan itu tidak mengatakan papan rusak, dan tidak membebaskan catu daya, penyimpanan, atau image dari kecurigaan.
Mulailah dari baris yang dicetak shell dan telusuri kembali ke proses di belakangnya. Fakta yang berguna adalah executable mana yang gagal, di lingkungan apa, dan pada tahap koneksi yang mana.
Mulai dari baris yang dicetak shell
Nama dalam perintah Anda sering kali berupa pembungkus atau peluncur yang menjalankan biner lain, jadi pastikan executable mana yang benar-benar dihentikan kernel. Catat jalur lengkap, versi paket dan aplikasi, arsitektur, rilis OS dan kernel, akun yang menjalankannya, dan waktu persisnya. Perintah shell bernama VPN mudah menjalankan proses pembantu, dan catatan akan menyebut pembantu itu. Menyalin string versi dari paket yang Anda pasang bulan lalu tidak menjelaskan apa yang benar-benar berjalan.
Catat apa yang langsung mendahului crash: startup, penguraian profil, autentikasi, atau sesi yang sudah melewatkan lalu lintas. Empat tahap itu mempersempit pencarian jauh lebih banyak daripada kata segfault. Simpan jendela log singkat di sekitar peristiwa itu, dan tinggalkan dugaan tentang perubahan terbaru mana yang menyebabkannya sampai catatan mengatakannya.
Cari tahu apakah ada image memori
Referensi berkas core menjelaskan dump sebagai image memori proses yang ditulis saat penghentian, dan juga mencantumkan kondisi yang mencegah penulisan itu. Kondisi itu mencakup batas sumber daya nol dan pola core yang mengarahkan dump ke tempat lain selain direktori kerja. Karena itu, tidak adanya berkas bernama core tidak membuktikan apa pun tentang apakah crash terjadi. Periksa pola dan batas yang dikonfigurasi sebelum menyimpulkan sistem tidak menghasilkan bukti.
Pada sistem yang memakai kolektor systemd, tampilan yang didukung mengorelasikan catatan tersimpan dengan executable dan waktu. Entri journal dan image memori yang bisa dibaca adalah dua artefak berbeda: kebijakan retensi dan izin bisa meninggalkan Anda dengan salah satunya saja. Tanyakan kepada distribusi atau pemelihara aplikasi tentang alur kerja diagnostik yang mereka dukung, karena trace dari build atau kumpulan pustaka lain biasanya membuang waktu mereka.
sysctl kernel.core_pattern
ulimit -c
coredumpctl list --since "1 hour ago" --no-pager
coredumpctl info /usr/sbin/openvpn
Ulangi pembacaan itu di mesin yang benar-benar crash. Melakukannya pada instalasi baru menjawab pertanyaan yang tidak diajukan siapa pun.
Perlakukan dump sebagai materi yang membawa rahasia
Memori proses bisa berisi kredensial, kunci sesi, dan isi profil, yang membuat dump lebih sensitif daripada log teks di sampingnya. Menyunting log tidak berpengaruh pada image memori yang buram, dan pelacak issue biasa menyimpan lampiran jauh lebih lama daripada umur satu utas dukungan. Pindahkan berkas melalui kanal privat yang disediakan vendor atau pemelihara. Memposting dump mentah di issue publik mengekspos apa pun yang berada di memori saat proses mati, dan Anda tidak bisa tahu apa itu sampai seseorang memeriksanya.
Jika pemelihara meminta trace, tanyakan dari executable dan pustaka mana mereka menginginkannya. Backtrace yang framenya tidak cocok dengan build yang dilaporkan sulit dipercaya dan mudah salah dibaca.
Periksa asal-usul sebelum mengganti apa pun
Verifikasi asal paket dan integritas berkas melalui pihak yang memiliki instalasi, dan simpan konfigurasi serta materi identitas sebelum perbaikan terkendali apa pun. Jangan menimpa satu-satunya salinan bukti hanya untuk melihat apakah instalasi bersih bisa boot. Image baru yang boot memberi tahu bahwa image baru boot. Itu tidak memberi tahu apakah yang lama berisi paket rusak, kartu yang gagal, atau biner yang memang selalu fault pada arsitektur ini.
Jika program tak terkait juga gagal, atau sistem mencatat kesalahan penyimpanan, daya, atau kernel, simpan pengamatan itu untuk penyelidikan platform. Semua itu memperluas cakupan; tidak membuktikan bahwa setiap segfault berasal dari RAM yang gagal atau image yang rusak.
Setelah perbaikan bertarget, ulangi peluncuran resmi yang sama dan operasi VPN yang sama pada perangkat keras yang sama. Sebutkan kegagalan mana yang berhenti dan pada versi apa. Boot bersih saja tidak mengidentifikasi komponen cacat dan tidak memprediksi kerusakan perangkat keras berikutnya.