> Depuis quelques jours, mon syst�me semble r�guli�rement satur�:
> Netscape refuse de fonctionner une fois sur deux, m�me chose pour kmail.
En g�n�ral, `Depuis quelques jours' associ� � `ne fonctionne pas|plus|plus
bien' signifie qu'un param�tre a chang�. En g�n�ral, jusqu'� nouvel avis,
si des applications *non* propri�taires et *simples* (comme Emacs, vi, ls,
df, pine) plantent aussi, cela indique des probl�mes mat�riels. Les
applications plus complexes comme kfm peuvent planter p.ex. si un fichier
d'un type particulier est visible dans le r�pertoire par d�faut de
l'utilisateur ($HOME), cependant ce genre de plantage est syst�matique (cf
exemple 4). Dans ce cas, on peut essayer de d�placer leur r�pertoire de
configuration: mv .kde .kde.DIS, relancer, reconfigurer, voir si
le probl�me se produit aux deuxi�mes et troisi�mes lancements. Si non,
ajouter des configurations au fur-et-�-mesure peut parfois fonctionner.
Quant aux applications propri�taires comme Netscape et Star Office, elles
utilisent souvent des bases de configuration non textuelles, et si elles
sont corrompues (parce que le disque devient plein, ou par un plantage
d'une autre cause dans le logiciel propri�taire) de tels comportements
sont visibles (j'en ai exp�riment�) et presque impossibles � corriger sans
l'effacement de toute les configuration et restauration d'une sauvegarde
(ou r�installation ...).
Des id�es pour debugger ce probl�me serait:
- lancer ces logiciels dans un xterm ou une konsole (sous KDE taper
ALT-F2, puis xterm, puis RETURN, puis taper le nom du logiciel
concern� dans la nouvelle fen�tre). On obtient alors peut-�tre un
peu de debugging en cas de crash. Cf exemple 1. Parfois les logiciels
viennent avec une option de debugging, enfin la commande strace peut
parfois �tre utile (exemple 2).
- lister le contenu du kernel debug ring. En particulier avec les
versions 2.2.14 et inf�rieures (plain; celles de Red Hat je ne sais
pas), il peut arriver des situations o� le VM subsystem (virtual
memory) tue des processus gourmands, cela se voit avec une ligne
du genre `VM: killed netscape' par exemple. D'autres erreurs, y
compris mat�rielles sont en g�n�ral visibles dans ce log. Utiliser
par exemple
dmesg
Ou regarder dans /var/log/messages car le klogd (kernel log daemon)
va transcrire le charabia d'un register dump en noms de fonctions
si le System.map correspond au kernel qui tourne et est situ�
au bon endroit.
> Je viens de faire "xosview" pour voir l'occupation de la m�moire. Je lis
xosview est peut-�tre tr�s joli, mais il ne donne pas des informations
assez d�taill�es � mon go�t. En fait, si l'on regarde en d�tail, en tous
cas chez moi, il affiche en vert la m�moire r�ellement utilis�e, en rouge
la m�moire cache disque qui est allouable pour les applications, et en
bleu vert clair la m�moire gaspill�e.
Il vaut mieux utiliser des commandes de plus bas niveau pour obtenir une
information synth�tique, ou regarder le d�tail par applications (avec ps,
top, ktop, kpm, etc) (cf exemple 3 pour top et free).
Exemple 1:
schaefer@defian:~% netscape
Power failure
Exemple 2:
--- SIGHUP (Hangup) ---
write(11, "\3\0\2\0\311\0\0\4\16\0\2\0\311\0\0\4", 16) = 16
read(11, 0x5001198c, 32) = -1 EAGAIN (Resource temporarily
unavailable)
oldselect(12, [11], NULL, NULL, {0, 0}) = 0 (Timeout)
rt_sigprocmask(SIG_BLOCK, NULL, ~[KILL STOP], 8) = 0
gettimeofday({970653386, 992490}, NULL) = 0
rt_sigprocmask(SIG_SETMASK, [ILL TRAP SEGV USR2 ALRM CONT TTIN TTOU URG
WINCH RT_4 RT_5 RT_11 RT_12 RT_14 RT_18 RT_21 RT_22 RT_23 RT_28], NULL, 8)
= 0
--- SIGSEGV (Segmentation fault) ---
getpid() = 464
kill(464, SIGBUS) = 0
--- SIGBUS (Bus error) ---
+++ killed by SIGBUS +++
Dans cet exemple, j'envoie un signal HUP � Netscape, et celui-ci se p�te
la gueule avec un SIGSEGV (mais vraisemblablement c'est intentionel).
Exemple 3:
schaefer@defian:~% free
total used free shared buffers cached
Mem: 128360 68136 60224 50768 2636 38248
-/+ buffers/cache: 27252 101108
Swap: 104416 0 104416
schaefer@defian:~%
En appuyant sur SHIFT-M dans top:
12:03pm up 33 min, 4 users, load average: 0.03, 0.01, 0.00
40 processes: 39 sleeping, 1 running, 0 zombie, 0 stopped
CPU states: 0.3% user, 1.9% system, 0.0% nice, 97.6% idle
Mem: 128360K av, 68528K used, 59832K free, 51072K shrd, 2640K buff
Swap: 104416K av, 0K used, 104416K free 38284K cached
PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND
260 root 6 0 12292 6080 1960 S 0 0.3 4.7 0:12 XF86_SVGA
326 schaefer 0 0 4720 4712 3356 S 0 0.0 3.6 0:01 kfm
280 schaefer 1 0 4136 4128 3008 S 0 0.0 3.2 0:00 kwm
328 schaefer 0 0 4100 4092 2960 S 0 0.0 3.1 0:00 kpanel
347 schaefer 10 10 3860 3852 2876 S N 0 0.0 3.0 0:00 kapm
Exemple 4: ``Comment crasher kfm 1.1.2 et trouver pourquoi''
schaefer@defian:~% ln -s ~/SOUNDS/grabbin/abba_gold_1/MP3/track01.cdda.wav.mp3
index.html
Ensuite cliquer sur kfm et aller dans le home-directory. Pouf. La premi�re
fois �a tue kfm, alors profiter de le relancer dans un xterm:
schaefer@defian:~% kfm
Could not read '/tmp//kfm-cache-1000/index.txt'
Segmentation fault
Aha, donc il re�oit un signal SEGV. Regardons quels fichiers sont lus
en dernier:
schaefer@defian:~% strace -f -e open kfm 2> /tmp/a1
schaefer@defian:~% grep open /tmp/a1 | tail -1
[pid 594] open("/home/schaefer/index.html", O_RDONLY) = 11
--
Marc Schaefer
Chinasol, Almu�ecar.
--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question.