Gimme BSOD! 2


Οχι,δεν χαζεψα. Απλα αναγνωριζω την πραγματικη αξια μιας Blue Screen of Death. Σε αντιθεση με την φιλοσοφια που συνηθως κυριαρχει στα διαφορα τεχνολογικα fora, μια bsod μπορει να αποβει πολυ χρησιμη στην επιλυση προβληματων ενος υπολογιστη,αφου βεβαια τελειωσουμε με τις καταρες για το save που δεν προλαβαμε να κανουμε και την χασουρα του σημαντικοτερου τμηματος της δουλειας μας.
Οι λογοι για τους οποιους μπορει να προκυψει μια bsod ποικιλουν. Ο υπαιτιος μπορει να ειναι απο καποιο hardware part του υπολογιστη μεχρι ο
driver που εγκαθιστα καποιο συστημα προστασιας ενος παιχνιδιου.
Γυρω στο 70% των windows crashes,υπαιτιος ειναι καποιος third party driver, ενω στο αλλο ακρο με περιπου 5%  απο το μεριδιο της πιτας,ειναι drivers των ιδιων των windows.Γι αυτο λοιπον οταν μια bsod μας ενημερωνει πως πχ ο ksecdd.sys (Kernel Security Support Provider Interface)  προκαλεσε το προβλημα, θα πρεπει να κραταμε μικρο καλαθι. To πιο πιθανο ειναι να μιλαμε για καποιο αλλο προβλημα (πχ memory corruption) το οποιο ειχε σαν αποτελεσμα να εμφανιστει ο ksecdd.sys ως προβληματικος.
Στο συγκεκριμενο post δεν θα ασχοληθω με τις bsod, αλλα με ενα βημα πριν, πως δηλαδη να παρουμε μια bsod οταν αυτη απουσιαζει. Yπαρχουν περιπτωσεις οπου το προβλημα ειναι τοσο σοβαρο ωστε ο υπολογιστης κολλαει χωρις bsod, πριν η KeBugCheckEx προλαβει να σταματησει ολες τις συσκευες και να επιτρεψει στους drivers τους να προσαψουν πληροφοριες στο crash dump.
O driver verifier στον οποιο θα αναφερθω, αποτελει ενα εργαλειο για την ευρεση bugs σε drivers, οπως ισως αποκαλυπτει και το ονομα του. Με την χρηση αυτου,μας δινεται η δυνατοτητα να ελεγξουμε τους drivers που υπαρχουν στον υπολογιστη μας για bugs, τα οποια μπορει να ειναι υπευθυνα για το προβλημα που αντιμετωπιζουμε. Αυτονοητο είναι πως αν το προβλημα προερχεται απο οτιδηποτε άλλο περαν των drivers (πχ hardware failure, τασεις, missing windows files κλπ) δεν προκειται να εχουμε καμια ενημερωση από τον verifier και αδικα τυραννιομαστε.
Για να ξεκινησουμε τον verifier, πηγαινουμε στο Run του Startmenu, γραφουμε verifier και παταμε Enter. Εμφανιζεται το παραθυρο του verifierμε 5 πιθανες επιλογες. Αυτη που θα χρησιμοποιησουμε είναι η Createcustomsettings (forcodedevelopers). Στο επομενο παραθυρο επιλεγουμε το Select individual settings from a full list. Στo επομενο παραθυρο εχουμε 11 επιλογες. Οι επιλογες αυτες εχουν να κανουν με τους τροπους με τους οποιους θα δοκιμαστουν οι εγκατεστημενοι drivers του συστηματος μας. Απο αυτες,η μονη που δεν επιλεγουμε ειναι η Low resources simulation και αυτο επειδη η συγκεκριμενη επιλογη χρησιμοποιειται συνηθως μονο απο driver developers. Προκειται για ειδικη λειτουργια του verifier, την οποια αν εχουμε επιλεξει, λιγα λεπτα μετα το reboot ο verifier ενημερωνει με τυχαια σειρα τους drivers πως δεν υπαρχει ελευθερη kernel memory-ενω στην πραγματικοτητα υπαρχει-προκειμενου να δει ο developer τι μπορει να κανει σε αντιστοιχη περιπτωση για να μην προκαλει προβληματα ο driver του.
Η επομενη οθονη που ειναι και η τελευταια πριν απο το reboot, μας ρωταει που θα “κολλησουμε” τον verifier για τις δοκιμες μας. Aπο default η επιλογη που υπαρχει ειναι η Automatically select unsigned drivers, που ειναι και λογικο μια και οι συγκεκριμενοι εχουν μεγαλες πιθανοτητες να προκαλουν προβλημα αν ειναι κακογραμμενοι.
Απο την αλλη,υπαρχει πιθανοτητα να μην υπαρχουν unsigned drivers στο μηχανημα που τρεχετε τον verifier, ειδικα αν μιλαμε για x64 windows, τα οποια και δεν αφηνουν την εγκατασταση τετοιων drivers,για τους λογους που ανεφερα λιγο πριν. Μπορειτε βεβαια να κανετε μια δοκιμη με το συγκεκριμενο option και να πατησετε next,oπου σε περιπτωση που τρεχετε x64 windows θα δειτε ενα αντιστοιχο παραθυρο να σας ενημερωνει πως No unsigned drivers have been found. Αυτο βεβαια δεν μεταφραζεται αυτοματα στο καθολικο”ολοι οι signed drivers δεν εχουν προβλημα”. Προσφατο παραδειγμα το overheating που προκαλουσαν οι drivers την Nvidia, με αποτελεσμα

 την καταστροφη αρκετων καρτων. Οποτε επανερχομαστε στην προηγουμενη οθονη και καλουμαστε να επιλεξουμε ποιους drivers θελουμε να ελεγξουμε με τον verifier. Μια επιλογη που δεν θελουμε επισης να επιλεξουμε -εκτος και αν εχουμε ορεξη για δοκιμες-ειναι η Automatically select all drivers installed on this computer, καθως ετσι, μετα το reboot θα εχουμε ενα απιστευτα αργο συστημα, λογω των διαρκων ελεγχων σε καθε driver του συστηματος.
Απο τις 2 εναπομειναντες επιλογες, δεν υπαρχει συγκεκριμενος τροπος χρησης, ο καθενας μπορει να επιλεξει οτι θελει. Η συνταγη που ακολουθω συνηθως ειναι η εξης: Select drivers names from a list και απο κει επιλεγω τους drivers που υποπτευομαι πως ειναι υπευθυνοι για το προβλημα. Συνηθως γυρω στους 10 drivers την φορα ειναι αρκετοι. Ποιοι drivers μπορει να ειναι “πιο” υποπτοι θα ρωτησει κανεις. Συνηθως ξεκιναω με τους third party ή αυτους που προσφατα εκανα update ή αυτους που ειχα εγκαταστησει λιγο πριν ξεκινησει το προβλημα μου,κλπ κλπ. Σημαντικο tip: οι drivers που βλεπετε στην λιστα ειναι αυτοι που ειναι loaded αυτη τη στιγμη στο μηχανημα σας. Υπαρχουν drivers που φορτωνονται στην μνημη μονο οταν χρησιμοποιησουμε το x hardware και μπορουν καλλιστα να ειναι αυτοι οι υπαιτιοι του προβληματος. Γι αυτου του ειδους drivers υπαρχει και το κουμπακι Add currently not loaded driver(s) to the list… με το οποιο μπορουμε να τους επιλεξουμε για δοκιμη.
Αφου τελειωσουμε με τις επιλογες μας,παταμε Finish και κανουμε reboot. Απο δω και περα ο verifier τρεχει στο background και ελεγχει τους drivers που επιλεξαμε. Δεν υπαρχει συγκεκριμενος χρονος για τον οποιο πρεπει να τρεχουμε τον verifier στο background.Μια σκεψη ειναι πως αν το συστημα μας κολλαει απο το προβλημα που προσπαθουμε να εντοπισουμε καθε 1 ωρα,καλο ειναι να αφησουμε τον verifier για τουλαχιστον 1-2 ωρες,εκτελοντας τις εργασιες που θα καναμε σε κανονικες συνθηκες.Πιθανοτατα δεν θα χρειαστει τοσος χρονος εαν μεσα στη λιστα των driver που εχουμε επιλεξει για ελεγχο ειναι και ο φταιχτης.
Αν ολα πανε καλα και τελικα εχουμε την πολυποθητη bsod,πρεπει να εχουμε φροντισει ωστε το συστημα μας να μπορει να παρει kernel dumps, τα οποια στην συνεχεια μπορουν να αναλυθουν για να εντοπιστει το προβλημα.Βασικη προυποθεση για να μπορουμε να παρουμε kernel dumps, ειναι η υπαρξη page file στο συστημα μας και επισης να εχουμε δηλωσει πως θελουμε να παιρνουμε kernel dumps σε περιπτωση bsod και οχι minidumps. Οχι πως τα minidumps δεν μπορουν να βοηθησουν,αλλα η πληροφορια που υπαρχει στα kernel dumps,φερνει την λυση πιο κοντα. Μια επισης καλη τακτικη ειναι να απενεργοποιησουμε το automatic restart σε περιπτωση bsod, καθως η μπλε οθονη ισως να χει καποιο bug code,μηνυμα που θα μας βοηθησει.
Σε περιπτωση που μετα την ενεργοποιηση του verifier και το reboot, το συστημα μας δεν μπορει να μπει στα windows και εμφανιζει κατευθειαν μια μπλε οθονη, μην πανικοβληθειτε. Ο verifier μπορει να απενεργοποιηθει αν μπειτε σε safe mode(συνηθως πατωντας το F8 πριν μπει ο υπολογιστης στα windows και επιλεγοντας safe mode). Εκει ξεκινατε και παλι τον verifier (Start menu–>Run–>verifier–>Hit Enter) και επιλεγοντας το Delete existing settings. Η ιδια διαδικασια θα πραγματοποιηθει οταν θελησετε να απενεργοποιησετε τον verifier ή να αλλαξετε τα settings του/να δηλωσετε αλλους drivers για ελεγχο,απλα δεν χρειαζεται να μπειτε σε safe mode για να την ακολουθησετε.
Ολα τα παραπανω προερχονται απο ενα μηχανημα με windows 7 x64. Ο verifier υπαρχει στα Windows XP, 2000, Server 2003, Vista, Server 2008, Server 2008 R2 με μικρες παραλλαγες σε μερικα απο αυτα,οι οποιες ομως δεν διαφερουν πολυ απο οσα εγραψα.
Επομενο βημα η αναλυση των kernel dumps και ισως η αναλυση hung systems με boot σε windows debugging mode..στο μελλον!

Leave a comment

Your email address will not be published. Required fields are marked *

Would Turing think of you as a bot? * Time limit is exhausted. Please reload CAPTCHA.

2 thoughts on “Gimme BSOD!