KORÁBBI CIKKEK
CÍMKEFELHŐ
RAID
software raid
smarty
template
JSON
javascript
data-changing
design pattern
MVC
autoload
svn
ubuntu
apache
subversion
dav
php5
memcache
memcached
load
caching
no multipart
files
post
cheat
php
mysqldump
backup
tgz
server
sh
bash
mysql
dump
cli
daemon
PEAR
system_daemon
directadmin
magyarosítás
DA
enhanced
open source
nyílt forrás
közösség
Neelie Kroes
importance of communities
general
protection
general protection
segmentation
fault
segmentation fault
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 hibaKé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