Ξεκινάτε τον πελάτη, το τερματικό εκτυπώνει Segmentation fault (core dumped) και η επόμενη ώρα πηγαίνει στο ξαναγράψιμο της κάρτας. Αυτό το μήνυμα περιγράφει πώς πέθανε μία διεργασία σε μία στιγμή. Δεν λέει ότι η πλακέτα είναι χαλασμένη και δεν αθωώνει ούτε το τροφοδοτικό ούτε τον δίσκο ούτε την εικόνα.

Ξεκινήστε από τη γραμμή που εκτύπωσε το κέλυφος και πηγαίνετε πίσω στη διεργασία που βρίσκεται πίσω της. Τα χρήσιμα στοιχεία είναι ποιο εκτελέσιμο απέτυχε, σε ποιο περιβάλλον και σε ποιο στάδιο της σύνδεσης.

Ξεκινήστε από τη γραμμή που εκτύπωσε το κέλυφος

Το όνομα στην εντολή σας είναι συχνά περιτύλιγμα ή εκκινητής που ξεκινά άλλο δυαδικό, οπότε επιβεβαιώστε ποιο εκτελέσιμο τερμάτισε πραγματικά ο πυρήνας. Καταγράψτε την πλήρη διαδρομή, την έκδοση πακέτου και εφαρμογής, την αρχιτεκτονική, την έκδοση λειτουργικού και πυρήνα, τον λογαριασμό που το ξεκίνησε και την ακριβή ώρα. Μια εντολή κελύφους που φέρει όνομα VPN ξεκινά εύκολα μια βοηθητική διεργασία, και η καταγραφή θα ονομάσει αυτή τη βοηθητική διεργασία. Η αντιγραφή της συμβολοσειράς έκδοσης από πακέτο που εγκαταστήσατε τον προηγούμενο μήνα δεν λέει τίποτα για το τι έτρεξε.

Σημειώστε τι προηγήθηκε αμέσως της κατάρρευσης: εκκίνηση, ανάλυση προφίλ, έλεγχος ταυτότητας ή συνεδρία που ήδη περνούσε κίνηση. Αυτά τα τέσσερα στάδια περιορίζουν την αναζήτηση πολύ περισσότερο από τη λέξη segfault. Κρατήστε το σύντομο παράθυρο καταγραφής γύρω από το συμβάν και αφήστε έξω εικασίες για το ποια πρόσφατη αλλαγή το προκάλεσε, μέχρι να το πει η καταγραφή.

Βρείτε αν υπάρχει απεικόνιση μνήμης

Η αναφορά για το αρχείο core περιγράφει το dump ως απεικόνιση της μνήμης της διεργασίας που γράφεται κατά τον τερματισμό και απαριθμεί επίσης τις συνθήκες που εμποδίζουν αυτή την εγγραφή. Σε αυτές περιλαμβάνονται όριο πόρων μηδέν και μοτίβο core που δρομολογεί το dump αλλού από τον κατάλογο εργασίας. Άρα ένα αρχείο με όνομα core που λείπει δεν αποδεικνύει τίποτα για το αν συνέβη κατάρρευση. Ελέγξτε το ρυθμισμένο μοτίβο και το όριο πριν συμπεράνετε ότι το σύστημα δεν παρήγαγε στοιχεία.

Σε σύστημα με τον συλλέκτη του systemd, η υποστηριζόμενη προβολή συσχετίζει μια αποθηκευμένη καταγραφή με ένα εκτελέσιμο και έναν χρόνο. Μια καταχώριση ημερολογίου και μια αναγνώσιμη απεικόνιση μνήμης είναι δύο διαφορετικά τεκμήρια: η πολιτική διατήρησης και τα δικαιώματα μπορούν να σας αφήσουν με το ένα χωρίς το άλλο. Ρωτήστε τη διανομή ή τον συντηρητή της εφαρμογής για τη διαγνωστική ροή εργασίας που υποστηρίζουν, γιατί ένα trace από άλλο build ή άλλο σύνολο βιβλιοθηκών συνήθως χαραμίζει τον χρόνο τους.

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

Επαναλάβετε αυτές τις αναγνώσεις στο μηχάνημα που κατέρρευσε πραγματικά. Το να τις κάνετε σε καθαρή εγκατάσταση απαντά σε ερώτηση που δεν έκανε κανείς.

Αντιμετωπίστε το dump ως υλικό που φέρει μυστικά

Η μνήμη της διεργασίας μπορεί να περιέχει διαπιστευτήρια, κλειδιά συνεδρίας και περιεχόμενο προφίλ, γεγονός που κάνει το dump πιο ευαίσθητο από το κείμενο καταγραφής δίπλα του. Η απόκρυψη στην καταγραφή δεν κάνει τίποτα για μια αδιαφανή απεικόνιση μνήμης, και τα συνηθισμένα issue tracker κρατούν τα συνημμένα πολύ περισσότερο από όσο διαρκεί ένα νήμα υποστήριξης. Μεταφέρετε το αρχείο μέσω του ιδιωτικού καναλιού που παρέχει ο προμηθευτής ή ο συντηρητής. Η δημοσίευση ακατέργαστου dump σε δημόσιο issue εκθέτει ό,τι βρισκόταν στη μνήμη όταν πέθανε η διεργασία, και δεν μπορείτε να ξέρετε τι ήταν μέχρι να το εξετάσει κάποιος.

Αν ένας συντηρητής ζητήσει trace, ρωτήστε από ποιο εκτελέσιμο και ποιες βιβλιοθήκες το θέλει. Ένα backtrace του οποίου τα πλαίσια δεν ταιριάζουν με το αναφερόμενο build είναι δύσκολο να το εμπιστευτείς και εύκολο να το διαβάσεις λάθος.

Ελέγξτε την προέλευση πριν αντικαταστήσετε οτιδήποτε

Επαληθεύστε την προέλευση του πακέτου και την ακεραιότητα των αρχείων μέσω όποιου κατέχει την εγκατάσταση, και διατηρήστε τη διαμόρφωση και το υλικό ταυτότητας πριν από κάθε ελεγχόμενη επισκευή. Μην αντικαταστήσετε το μοναδικό αντίγραφο των στοιχείων μόνο για να δείτε αν ξεκινά μια καθαρή εγκατάσταση. Μια νέα εικόνα που ξεκινά σας λέει ότι η νέα εικόνα ξεκινά. Δεν σας λέει αν η παλιά περιείχε κατεστραμμένο πακέτο, κάρτα που αποτυγχάνει ή δυαδικό που πάντα θα αποτύγχανε σε αυτή την αρχιτεκτονική.

Αν αποτυγχάνουν και άσχετα προγράμματα, ή το σύστημα καταγράφει σφάλματα αποθήκευσης, τροφοδοσίας ή πυρήνα, κρατήστε αυτές τις παρατηρήσεις για την έρευνα της πλατφόρμας. Διευρύνουν το πεδίο· δεν αποδεικνύουν ότι κάθε segfault προέρχεται από RAM που αποτυγχάνει ή κατεστραμμένη εικόνα.

Μετά από στοχευμένη διόρθωση, επαναλάβετε την ίδια εξουσιοδοτημένη εκκίνηση και την ίδια λειτουργία VPN στο ίδιο υλικό. Πείτε ποια αποτυχία σταμάτησε και σε ποια έκδοση. Η καθαρή εκκίνηση από μόνη της ούτε εντοπίζει ελαττωματικό εξάρτημα ούτε προβλέπει την επόμενη βλάβη υλικού.

Σχετικά άρθρα