Anda memulakan klien, terminal mencetak Segmentation fault (core dumped), dan jam berikutnya habis untuk memflash semula kad. Mesej itu menerangkan bagaimana satu proses mati pada satu saat. Ia tidak berkata papan rosak, dan ia tidak melepaskan bekalan kuasa, storan atau imej daripada syak.

Bermula daripada baris yang dicetak shell dan kembali kepada proses di belakangnya. Fakta berguna ialah fail boleh laku mana yang gagal, dalam persekitaran apa dan pada peringkat sambungan yang mana.

Mulakan daripada baris yang dicetak shell

Nama dalam arahan anda selalunya pembalut atau pelancar yang memulakan binari lain, jadi sahkan fail boleh laku mana yang sebenarnya ditamatkan kernel. Catat laluan penuh, versi pakej dan aplikasi, seni bina, keluaran OS dan kernel, akaun yang melancarkannya dan masa yang tepat. Arahan shell bernama VPN mudah memulakan proses pembantu, dan rekod akan menamakan pembantu itu. Menyalin rentetan versi daripada pakej yang anda pasang bulan lepas tidak memberitahu apa-apa tentang apa yang berjalan.

Catat apa yang berlaku serta-merta sebelum ranap: permulaan, penghuraian profil, pengesahan atau sesi yang sudah menghantar trafik. Empat peringkat itu menyempitkan carian jauh lebih banyak daripada perkataan segfault. Simpan tetingkap log pendek sekitar peristiwa itu, dan tinggalkan tekaan tentang perubahan terkini yang menyebabkannya sehingga rekod berkata demikian.

Cari tahu sama ada imej memori wujud

Rujukan fail core menerangkan dump sebagai imej memori proses yang ditulis semasa penamatan, dan ia juga menyenaraikan syarat yang menghalang penulisan itu. Syarat itu termasuk had sumber sifar dan corak core yang menghalakan dump ke tempat lain daripada direktori kerja. Oleh itu, ketiadaan fail bernama core tidak membuktikan apa-apa tentang sama ada ranap berlaku. Semak corak dan had yang dikonfigurasikan sebelum membuat kesimpulan bahawa sistem tidak menghasilkan bukti.

Pada sistem yang menggunakan pengumpul systemd, paparan yang disokong mengaitkan rekod tersimpan dengan fail boleh laku dan masa. Entri jurnal dan imej memori yang boleh dibaca ialah dua artifak berbeza: dasar penyimpanan dan kebenaran boleh meninggalkan anda dengan satu tanpa yang lain. Tanya pengedaran atau penyelenggara aplikasi tentang aliran kerja diagnostik yang mereka sokong, kerana trace daripada binaan atau set pustaka lain biasanya membuang masa mereka.

sysctl kernel.core_pattern
ulimit -c
coredumpctl list --since "1 hour ago" --no-pager
coredumpctl info /usr/sbin/openvpn

Ulang pembacaan itu pada mesin yang benar-benar ranap. Melakukannya pada pemasangan baharu menjawab soalan yang tiada siapa tanya.

Layan dump sebagai bahan yang membawa rahsia

Memori proses boleh menyimpan kelayakan, kunci sesi dan kandungan profil, yang menjadikan dump lebih sensitif daripada log teks di sebelahnya. Menyunting log tidak membantu imej memori legap, dan penjejak isu biasa menyimpan lampiran jauh lebih lama daripada hayat satu urutan sokongan. Pindahkan fail melalui saluran peribadi yang disediakan vendor atau penyelenggara. Menyiarkan dump mentah dalam isu awam mendedahkan apa sahaja yang berada dalam memori ketika proses mati, dan anda tidak boleh tahu apa itu sehingga seseorang memeriksanya.

Jika penyelenggara meminta trace, tanya daripada fail boleh laku dan pustaka mana yang mereka mahu. Backtrace yang bingkainya tidak sepadan dengan binaan yang dilaporkan sukar dipercayai dan mudah disalah baca.

Semak asal usul sebelum menggantikan apa-apa

Sahkan asal usul pakej dan integriti fail melalui pihak yang memiliki pemasangan, dan simpan konfigurasi serta bahan identiti sebelum sebarang pembaikan terkawal. Jangan tulis ganti satu-satunya salinan bukti semata-mata untuk melihat sama ada pemasangan bersih boleh boot. Imej baharu yang boot memberitahu imej baharu boot. Ia tidak memberitahu sama ada yang lama mengandungi pakej rosak, kad yang gagal atau binari yang memang sentiasa fault pada seni bina ini.

Jika program tidak berkaitan juga gagal, atau sistem merekod ralat storan, kuasa atau kernel, simpan pemerhatian itu untuk penyiasatan platform. Ia meluaskan skop; ia tidak membuktikan setiap segfault datang daripada RAM yang gagal atau imej rosak.

Selepas pembetulan bersasar, ulang pelancaran dibenarkan yang sama dan operasi VPN yang sama pada perkakasan yang sama. Nyatakan kegagalan mana yang berhenti dan pada versi apa. Boot bersih sahaja tidak mengenal pasti komponen cacat dan tidak meramalkan kerosakan perkakasan seterusnya.

Artikel berkaitan