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

Πιάστε το πρώτο σφάλμα, όχι την τελευταία γραμμή

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

Αν το μηχάνημα έχει ήδη επανεκκινήσει, ο buffer πυρήνα της προηγούμενης εκκίνησης βρίσκεται συχνά ακόμη στο ημερολόγιο, με την προϋπόθεση ότι ήταν ενεργή η μόνιμη αποθήκευση εκείνη τη στιγμή. Διαβάστε τον από το αποθηκευμένο αρχείο αντί να αναδημιουργήσετε το φορτίο, γιατί μια δεύτερη αναπαραγωγή μπορεί να αντικαταστήσει αυτό που χρειάζεστε. Όπου το μηχάνημα δεν μπορεί να κρατήσει ημερολόγιο ανάμεσα σε επανεκκινήσεις, μια σειριακή κονσόλα ή το netconsole είναι ο μόνος τρόπος να γίνει ποτέ ορατό το σφάλμα.

Καθορίστε την έκδοση πριν διαβάσετε οποιοδήποτε σύμβολο

Τα ονόματα συναρτήσεων και οι μετατοπίσεις έχουν νόημα μόνο ως προς το δυαδικό αρχείο που τα παρήγαγε, οπότε καταγράψτε μαζί τη συμβολοσειρά έκδοσης πυρήνα και το αναγνωριστικό έκδοσης της διανομής. Ένα αρχείο συμβόλων από άλλη έκδοση δείχνει στη λάθος γραμμή με απόλυτη βεβαιότητα, κάτι που είναι χειρότερο από το να μην έχετε καθόλου σύμβολο. Κρατήστε την έκδοση του πακέτου πυρήνα, όχι μόνο τον αριθμό upstream, γιατί οι διανομές κάνουν πολλά backport.

Τα modules εκτός δέντρου αξίζουν τη δική τους γραμμή στην καταγραφή, αφού ένας πυρήνας με taint περιορίζει το τι επιτρέπεται να συμπεράνει ένας συντηρητής. Διαβάστε την τιμή taint αντί να τη συμπεράνετε από μια λίστα modules.

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

Ξεχωρίστε ένα έναυσμα από ένα ελάττωμα

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

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

Ελέγξτε τι μπορεί πραγματικά να χρησιμοποιήσει ο συντηρητής

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

uname -r
cat /proc/sys/kernel/tainted
journalctl -k -b -1 --no-pager | sed -n '/BUG:/,/Call Trace/p'
dmesg -T | grep -A 40 'RIP:'

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

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

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