Κοτσιφάκης Θρασύβουλος Μαρ 1999
Λίγα λόγια για αυτούς που πόνεσαν και έκλαψαν προσπαθώντας (ή που προσπαθούν ακόμα) να κάνουν compile έναν kernel αλλά χωρίς ποτέ να το πετυχαίνουν τρώγοντας στην μάπα ένα περίεργο internal compiler error ........fatal signal11. Πολύ light άρθρο μια και με έχει πιάσει μια βαρεμάρα άλλο πράγμα.
1. Τι είναι το signal11;
2. Οι "Βασικοί Ύποπτοι".
.....Και αφού κάνατε όλο αυτό το configuration που χρειάζεται στον κατακαίνουργιο kernel που κατεβάσατε από το internet (αμ πουλάκια μου δεν σας κάνει το ήδη υπάρχον kernel της distribution σας !) γράφετε τις απίστευτα ερωτικές λέξεις make zImage και περιμένετε να γίνει compile o kernel. Εκεί απάνω που εσείς κοντεύετε να φτάσετε σε οργασμό να 'σου και τρώτε στη μάπα ένα μήνυμα :
"gcc: Internal compiler error: program cc1 got fatal signal 11"
Καλά τώρα τι έγινε; Μας την πέσαν οι τούρκοι; (ναι και το πρώτο πράγμα που έκαναν είναι να υπονομεύσουν τον υπολογιστή σας, ε τι να σας πω τώρα).Ε λοιπόν δεν έγινε τίποτα σπουδαίο. Ετοιμαστείτε να αλλάξετε HARDWARE.Γιατί ρε άνθρωπε μου καλέ; -θα αναρωτιέστε- να αλλάξω HARWARE; Μόλις τώρα τα ακούμπησα για να το αναβαθμίσω το παλιόκουτο.
Λοιπόν όταν ο υπολογιστής σας βγάζει sig11 errors κατά την διάρκεια του kernel compiling τότε 99% έχετε πρόβλημα στο hardware και πιο συγκεκριμένα ή στη μνήμη ή στον επεξεργαστή ή στον σκληρό σας δίσκο
Α ! Μια και μιλάμε για το sig11 να ξεκαθαρίσουμε κάτι. Το signal11 όπως ξεκαθαρίζεται και στα επίσημα "τεφτέρια" (faqs) δεν είναι "linux specific" -δανείζομαι την έκφραση από το επίσημο faq- δηλαδή δεν είναι κάτι που αφορά το αγαπημένο μας λειτουργικό (σαν πυρήνα) αλλά είναι κάτι που μπορεί να σας παρουσιαστεί και σε WINDOWS (NT ή 9Χ) και σε όποια πλατφόρμα χρησιμοποιείτε όταν αυτή κληθεί να χρησιμοποιήσει στα μέγιστα τον εξοπλισμό σας, απλά αντί να σας πει ...fatal error signal11 θα σας ειδοποιήσει με κάποιο άλλο μήνυμα (λέγε με General Protection Fault ).
Δύο άλλα πραγματάκια που θα πρέπει να γνωρίζουμε είναι ότι το signal11 εμφανίζεται και σε compilation άλλων εφαρμογών οι οποίες είναι μεγάλες σε όγκο (δοκιμάστε να κάνετε compile τον KDE με κάποιο ελαττωματικό περιφερειακό από τα παρακάτω που αναφέρονται και θα καταλάβετε τι εννοώ) και επίσης ότι προβλήματα τύπου signall11 είναι και τα παρακάτω
free_one_pmd: bad directory entry 00000008 EXT2-fs warning (device 08:14) ext_2_free_blocks bit already cleared for block ...... Segmentation fault crc error (εφόσον βέβαια ο kernel σας είναι μικρούλης και μέχρι την στιγμή εκείνη κατά το boot -με τον συγκεκριμένο kernel- γινόταν μια χαρά) αλλά και άλλα πολλά που σας εύχομαι να μην δείτε ποτέ μπροστά σας.
Το signal11 οφείλεται κυρίως στην λεγόμενη "αστοχία υλικού" δηλαδή στην ύπαρξη ελαττωματικού υλικού που το ελάττωμά του δεν εμφανίζεται με την πρώτη "ματιά". Τι σημαίνει αυτό τώρα . Ότι πολύ απλά κάτι που έχετε στον υπολογιστή σας δεν λειτουργεί σωστά και αυτό φαίνεται στις ευαίσθητες και "βαριές" εργασίες που απαιτούν όλη την υπολογιστική του ισχύ και που το κάθε του εξάρτημα πρέπει να δουλεύει άψογα. Ας αναλύσουμε όμως σιγά - σιγά τις πιο σοβαρές πιθανότητες
Η μνήμη του υπολογιστή σας είναι ο νούμερο ένα ύποπτος για πιθανά sig11.Αν δείτε signal11 στο μηχάνημα σας τότε:
a: Πηγαίνετε στο bios και αυξήστε τα Memory Wait States b: Κοιτάξτε το documentation της μητρικής σας. Μήπως σας έχουν βάλει μνήμες πιο αργές από αυτές που χρειάζεται για να εργαστεί με τον επεξεργαστή που έχετε; (στο δικό μου board -SOYO 5TF5- με τον επεξεργαστή που έχω -CYRIX 166+ - βάζοντας μνήμες 70ns παίρνω ατελείωτα μηνύματα λάθους, απαιτεί από την μνήμη να είναι 60ns)
Αν ανιχνευθούν τα σφάλματα εκεί τότε έχει καλώς, αν όμως με τα παραπάνω δεν γίνει τίποτα τότε :
Το πρόβλημα ίσως να είναι κάποιο χαλασμένο τσιπ μνήμης (καθόλου απίθανο) το οποίο σε ένα ζευγάρι μνημών μπορεί να μην ανιχνεύετε υπό κανονικές συνθήκες αλλά μόνο κάτω από έντονη πίεση.
Βρείτε ένα φίλο σας λινουξά που έχει κάνει compile με τις μνήμες του και δανειστείτε ένα ζευγάρι μνήμες. Βάλτε τις στο μηχάνημα σας και δείτε την συμπεριφορά του. Αν κάνει κανονικά compile τον kernel σας τότε το πρόβλημα σας είναι τα ολοκληρωμένα της μνήμης. Φυσικά και θα επιστρέψετε τις μνήμες πίσω στο παλικάρι που σας εξυπηρέτησε και θα πάτε να αγοράσετε ένα σετάκι δικές σας (τι δεν έχετε λεφτά γιατί αγοράσατε χρυσό δακτυλίδι στη κοπέλα σας ; Να το πάρετε πίσω και να το πουλήσετε για να πάρετε μνήμες)
Δεν υπάρχει φίλος λινουξάς κοντά σας αφού εσείς μένετε μόνος σε μία βραχονησίδα κοντά στα Ίμια. Για να βλέπετε αυτή τη σελίδα θα πρέπει να έχετε τηλέφωνο και internet. Πηγαίνετε και κατεβάστε το memtest[1] Ένα προγραμματάκι που έφτιαξε το παλικάρι που συντηρεί το faq για το sig11 ελέγξτε τις μνήμες σας με αυτό. Τις περισσότερες φορές βρίσκει τα σφάλματα (αν και απ' ότι είδα με μια ματιά στο νέο faq δεν το αναφέρει καθόλου μάλλον γιατί τελικά αποτυγχάνει πιο συχνά από όσο νόμιζε στην αρχή).
1: http://www.bitwizard.nl/sig11/memtest.tar.gz
Αν πάντως το πρόβλημα συνεχίσει μην απελπίζεστε συνεχίστε τον έλεγχο πιάνοντας τώρα την cache memory.Εδώ τα πράγματα είναι λίγο πιο εύκολα στον έλεγχο αφού πηγαίνοντας στο bios απενεργοποιείτε την cache και προσπαθείτε να κάνετε compile. Αν φάτε πάλι πόρτα τότε δεν είναι ούτε η cache. Προχωρήστε στην επόμενη ενότητα.
CYRIX
Τι; Έχετε κι εσείς έναν απ' αυτούς τους παμπάλαιους CYRIX P+ ; Ατυχήσατε. Γιατί ; Μα φυσικά γιατί αφ' ενός δεν θα μπορείτε να δείτε τη Lara σε υψηλή ανάλυση και αφ' ετέρου γιατί ο curixούλης ζεσταίνεται και ζεσταίνεται πολύ πάρα πολύ. Τι θα κάνετε λοιπόν.
Πρώτη κίνηση να ξηλώσετε το φαν που έχει βάλει ο συναρμολογητής του μηχανήματος (οι περισσότεροι συναρμολογητές βάζουν κάτι ελεεινά ανεμιστηράκια).Ψάξτε να βρείτε ένα ανεμιστηράκι για CYRIX P+ (ναι υπάρχουν, δεν ξέρω όμως αν κυκλοφορούν ακόμα). Δεύτερη κίνηση (αν δεν δουλέψει με την πρώτη -όπως συνέβη και με 'μένα-) να ρίξετε λίγο τη συχνότητα του επεξεργαστή σας, αν π.χ. βάλετε έναν CYRIX 166+ που χρονίζει σε 2Χ66=132 δηλ.133Mhz στα 2Χ50=100Μhz τότε το πιο πιθανό είναι να κάνετε τη δουλειά σας.
Μία ακόμα λύση είναι να βρείτε τα πακέτα της gcc και g++ για Cyrix τα οποία έδινε η Red Hat με τα powertools, μία ματιά που έριξα πριν λίγο πάντως στο ftp της[2]αλλά και στο mirror του στην Ελλάδα[3] η RedHat δεν τα προσφέρει πια αφού μάλλον κακό κάνανε παρά καλό (δεν νομίζω να υπάρχουν πολλοί που να κατάφεραν να κάνουν compile μ' αυτούς τους compilers) κι εγώ πάντως φέτος το φθινόπωρο που τους δοκίμασα δεν κατάφερα να κάνω compile ούτε τον kernel ούτε και τον kde.
3: ftp://ftp.linux.gr/pub/redhat
Λύση τελευταίας στιγμής. Βρείτε κάποιον άσχετο πιτσιρικά και μοσχοπουλήστε του τον υπερσύγχρονο CYRIX επεξεργαστή σας λέγοντας του ότι αγοράζει κελεπούρι αφού σας τον έφερε ο θειός σας κατευθείαν από το εργοστάσιο -πριν ακόμα βγει στην αγορά. Με τα λεφτά που θα βγάλετε από τον πιτσιρικά τρέξτε και αγοράστε καινούργιο επεξεργαστή και εισιτήριο για Βραζιλία για σας και τον υπολογιστή σας μια που άμα σας πιάσει στα χέρια του ο μπαμπάς του πιτσιρικά, μετά την ανακάλυψη της απάτης, θα σας κάνει με τα κρεμμυδάκια (μπετατζής γαρ ο μπαμπάς και δεν τα σηκώνει αυτά).
INTEL
Ρε 'σεις ποιός σας είπε ότι ο P200 μουμουεξ μπορεί να δουλέψει στα 500Mhz; Σας παρακαλώ γυρίστε τον σε κάποια λογική συχνότητα (άντε το πολύ 233) και θα δείτε ότι εργάζεται μια χαρά, βάλτε του και ένα καλό fan και είσαστε έτοιμοι.
AMD
Μάλλον ισχύουν όσα έγραψα πιο πάνω για τους INTEL αφού οι K6 έχουν βγει αρκετά καλοί (είμαι ερωτευμένος με ένα Κ6 300 3D) αλλά και οι Κ5 αν και λίγο κουλοί σε επιδόσεις δουλεύουν μια χαρά (έχω δει Κ5 120 να δουλεύει μέσα σε δωμάτιο που βρισκόταν δίπλα στα καζάνια ατμού πλοίου χωρίς να κρασάρει -σε αντίθεση με 'μας- ούτε μία φορά και πιστέψτε με δούλευε συνεχώς αφού φιλοξενούσε όλη την γραφειοκρατική κίνηση του πλοίου συν ένα RH 4.2 για να περνάω την ώρα μου μαθαίνοντας).
Εδώ συνήθως έχουμε να κάνουμε με προβλήματα μεταφοράς των δεδομένων από τον δίσκο προς τη μνήμη. Κάντε το εξής απλό:
Γράψτε σε ένα τερματικό την παρακάτω εντολή dd if=/dev/hda(ή sda) of=/dev/null bs=1024 count=XX Όπου count= θα βάλετε το μέγεθος της μνήμης σας σε MB (16, 32 κλπ).
Αν μετά απ' αυτό κάνετε πάλι make και ο compiler σταματήσει στο ίδιο σημείο που σταμάτησε και προηγουμένως τότε μάλλον το πρόβλημα είναι το software (η version του compiler που χρησιμοποιείτε) Αν όμως και με την προϋπόθεση ότι έχουν αποκλειστεί όλα τα παραπάνω περί cpu και μνήμης καταφέρετε να κάνετε compile τον πολυπόθητο kernel τότε νάτο που το βρήκατε και μπράβο σας.
Αν παρ' ολ' αυτά δεν τα καταφέρετε και συνεχίζετε να παίρνετε sig11 τότε καλά θα κάνετε να ξεχάσετε αυτό το γενικό άρθρο και να αναζητήσετε λύση στο faq για το siq11[4] που υπάρχει και αρχείο με αναφορές για άλλες πιθανές αιτίες signal11. Άντε και καλές -λινουξικές- περιπέτειες.