Lecza István (Isu)

My developer life, CV and others...

augusztus 17 10:24:21, 2010

UNIX alapú operációs rendszerek esetében előfordul, hogy találkozunk a "general protection" vagy más néven "segmentation fault" típusú hibával. Én személy szerint ha ilyen bejegyzést találok a /var/log/messages fájlban, akkor többnyire kiver a víz, és csak bámulom a monitort miközben az öngyilkosság gondolata kering a fejemben. Nemrég találkoztam ismét általános védelmi hibával (ahogy a vindózosok mondani szokták volt), alább olvashatod a megoldást.

A hiba

Két sor a logfájlból:

Aug 15 17:19:01 adesz kernel: [ 2450.731617] sh[2716] general protection ip:b7ff86f8 sp:bffffd78 error:0 in ld-2.11.2.so[b7fe3000+1b000]

Aug 15 17:19:01 adesz kernel: [ 2450.888278] sendmail[2724] general protection ip:b7ff86f8 sp:bffffd68 error:0 in ld-2.11.2.so[b7fe3000+1b000]


Ezt a hibaüzenetet látván sok ember kernelhibára, rossz memóriacímzésre vagy hardveres hibára gyanakszik, ahogy én is, és ez nem is áll olyan messze az igazságtól.

EZ ESETBEN A MEGOLDÁS

Nevezzük a fenti hibát hardveres hibának, ugyanis a gond az egyik legfontosabb "hardverrel" volt: a /dev/null-al, a fekete lyukkal. Ki gondlta volna. A /dev/null-al senki sem foglalkozik, egy óriási űr az operációs rendszerünk legtávolabbi zúgában, mely képes bármit magába szippantani, akár teljes HD DVD vidótárakat is. A /dev/null valójában nem foglal helyet, egyszerűen csak egy különleges (karakter-specifikus) fájl módjára csendben működik és végzi a dolgát: pusztít.

Itt most a hangsúly a "különleges" és "karakter-specifikus" szavakon volt, ugyanis nagyon könnyen, öntudatlanul is elronthatjuk ha nem különleges bánásmódban részesítjük.

A lényeg: az általános védelmi hibát az okozta, hogy a /dev/null egyszerű fájlként volt létrehozva, ráadásul 0600-ás jogokkal.

A /dev/null-t mknod-al kell létrehozni, mint karakter-specifikus (nem bufferelt) fájl, melyet én - még ha nem is igaz az elnevezés - "virutális hardvernek" hívok:

rm /dev/null
mknod -m 0666 /dev/null c 1 3


A /dev/null ilyen módon való létrehozása után már rendeltetésszerűen működik, végzi a dolgát, megszüntetve ezzel a messages-be írt újabb general protection bejegyzéseket.

HOZZÁSZÓLÁS, VÉLEMÉNYEK

* Név
* E-mail
Weboldal, blog
* Hozzászólás
* Biztonsági kód
* A "Weboldal, blog" mező kivetélével minden mező kitöltése kötelező!