[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [HS] ksymoops



> Je voulais juste savoir ce que voulais dire ksymoops
> dans /var/log
> 

c'est marrant je me suis posé la même question
hier ! Vu que mon répertoire ksymoops faisait
130 Mo j'ai cherché avant de tout virer,
voilà ce que j'ai trouvé
( à
http://groups.google.fr/groups?hl=fr&lr=&ie=UTF-8&threadm=p6rk8amwj7z.fsf%40platon.univ-lille1.fr&rnum=1&prev=/groups%3Fhl%3Dfr%26lr%3D%26ie%3DISO-8859-1%26q%3D%252Fvar%252Flog%252Fksymoops%252F%26btnG%3DRecherche%2BGoogle%26meta%3Dgroup%253Dfr.*
)


"Le noyau a plusieurs méthodes de détection de ses
propres erreurs
(qu'elles soient dues à ses bugs ou à un matériel au
comportement
aléatoire), et la plus courante est ce qu'on appelle
un "oops".
Typiquement, un morceau de code du noyau accède à la
mémoire d'adresse
0, ce qui pour un programme classique voudrait dire
"segmentation
fault" immédiate. Le noyau intercepte l'exception
soulevée par le
matériel, s'aperçoit de son incurie, et veut
l'indiquer, en créant un
"oops", c'est-à-dire quelques messages du noyau qui
indiquent diverses
informations sur l'état de la machine au moment du
oops.

Parmi ces informations, il y a le contenu des
registres et le
"backtrace" sur la pile, ce qui donne l'adresse de
l'instruction qui a
déclenché l'erreur, et les adresses des différents
appels de fonctions
qui ont amené jusqu'à cette instruction.

Tout ça c'est bien joli, mais dans la pratique, celui
qui veut débugguer
son noyau voudrait bien savoir le nom de la fonction
où sa se passe, et
pas seulement son adresse dans le code compilé du
noyau (cette adresse
pouvant changer à chaque compilation). Il y a donc,
d'habitude, un
fichier System.map qui indique, pour chaque fonction,
son adresse (par
exemple, dans un noyau que j'ai sous la main, la
fonction sys_iopl()
du noyau est à l'adresse 0xc010c394). Le programme
ksymoops, fourni
avec les sources du noyau (dans
linux/scripts/ksymoops/), s'occupe de
prendre un oops, un System.map, et de traduire les
adresses numériques
en adresses symboliques plus utiles pour le
programmeur (par exemple,
il transformera 0xc010c3b0 en <sys_iopl+1c>, indiquant
que c'est à
l'adresse 0x1c par rapport au début de la fonction
sys_iopl()).

Tout cela marche bien pour le noyau lui-même. Mais il
y a les modules :
les modules, tant qu'ils ne sont pas chargés, n'ont
pas d'adresse,
et même, l'adresse à laquelle sera le module (et donc
les fonctions
qu'il définit) dépend des autres modules chargés
précédemment et de la
mémoire allouée par le noyau, autrement dit, du sens
du vent. C'est non
prédictible tant que le module n'est pas chargé
effectivement.

En conséquence, tu as quelque chose dans ton système
qui, au moment du
chargement d'un module, envoie ses symboles (les
adresses des fonctions)
dans un fichier dans /var, pour que tu puisses, au cas
où il y aurait
un bug dans le module, savoir exactement où et le
débugguer. Dans la
mesure où tu ne savais pas ce qu'était ksymoops, j'en
déduis que tu n'as
pas la moindre intention de débugguer le noyau, et
donc tu peux sans
problème effacer tous ces fichiers qui ne te serviront
jamais à rien.
Le générateur de ces fichiers doit être caché dans un
script lancé par
modprobe depuis le /etc/conf.modules, ou
éventuellement dans une crontab ;
il ne te reste qu'à le trouver et à l'anihiler.


	--Thomas Pornin
"







> Et oui, et aussi comment ça ce prononce parce
> qu'actuellement je prononce ça :
> 
> KazimoumoupéEsse
> 


kassim-oups  pour moi !


> Merci d'avance !
> 
> 
> -- 
>               _   _   _           ___    _     ____ 
>    _
>         ____ | \ | | (_)   ___   / _ \  | |   / __ \
>   | |   ____
>   ____ |____||  \| | | |  / __| | | | | | |  / / _`
> | / __) |____| ____
>  |____||____|| |\  | | | | (__  | |_| | | | | | (_|
> | \__ \ |____||____|
>              |_| \_| |_|  \___|  \___/  |_|  \
> \__,_| (   /
>                                               \____/
>   |_|
> 
> 
> -- 
> To UNSUBSCRIBE, email to
> debian-user-french-request@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact
> listmaster@lists.debian.org
>  

___________________________________________________________
Do You Yahoo!? -- Une adresse @yahoo.fr gratuite et en français !
Yahoo! Mail : http://fr.mail.yahoo.com



Reply to: