This file is indexed.

/usr/share/doc/HOWTO/fr-html/Sig11.html is in doc-linux-fr-html 2013.01-3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.71">
<title>Le probl&egrave;me du signal 11</title>
</head>
<body>
<h1>Le probl&egrave;me du signal 11</h1>
<h2>Rogier Wolff ( <a href=
"mailto:R.E.Wolff@BitWizard.nl">R.E.Wolff@BitWizard.nl</a>)<br>
(traduit par Nat Makar&eacute;vitch <a href=
"mailto:nat@linux-france.com">nat@linux-france.com</a>)</h2>
Version 19970716fr
<hr>
<em>Cette FAQ dresse liste des causes possibles d'un
probl&egrave;me que connaissent ces derniers temps certains
utilisateurs de Linux&nbsp;: la compilation d'un important ensemble
logiciel</em>
<blockquote><em>(par exemple le noyau)</em></blockquote>
<em>&eacute;choue &agrave; cause d'un <em>signal 11</em>. Ce
probl&egrave;me peut &ecirc;tre caus&eacute; par un
dysfonctionnement d'ordre mat&eacute;riel (cas le plus
fr&eacute;quemment observ&eacute;) ou logiciel.</em>
<hr>
<h2><a name="s1">1. &Agrave; propos de ce document</a></h2>
<p>La <a href="http://www.bitwizard.nl/sig11/">version
originale</a> de ce document est &agrave; pr&eacute;sent
int&eacute;gr&eacute;e &agrave; la collection des "Mini-Howto" de
Linux.<br>
La version publi&eacute;e sur le Web &eacute;tait consult&eacute;e
300 fois par semaine en juin 1996 (augmentation&nbsp;: facteur 3 en
3 mois).</p>
<p>La plus r&eacute;cente version de ce texte, librement utilisable
s'il n'est pas modifi&eacute;, sur trouve sur <a href=
"http://www.linux-france.com/">son site de r&eacute;f&eacute;rence
&lt;URL:http://www.linux-france.com/&gt;</a></p>
<p>Tout commentaire et compte-rendu d'exp&eacute;rience
int&eacute;resse l'auteur ( <a href=
"mailto:R.E.Wolff@BitWizard.nl">Rogier Wolff
&lt;R.E.Wolff@BitWizard.nl&gt;</a>) mais les suggestions d'ajouts
techniquement sans valeur seront rejet&eacute;es.<br>
Exp&eacute;dier &agrave; <a href=
"mailto:nat@linux-france.com">nat@linux-france.com</a> les
commentaires concernant cette adaptation fran&ccedil;aise.</p>
<p>Note&nbsp;: le probl&egrave;me d&eacute;taill&eacute; ici
concerne aussi les autres syst&egrave;mes un tant soit peu
exigeants&nbsp;: Windows 3.1, FreeBSD, Windows NT, NextStep...</p>
<p>Cette adaptation fran&ccedil;aise doit beaucoup &agrave; J.
Chion.</p>
<h2><a name="s2">2. Question cl&eacute;</a></h2>
<p>Voici la question-cl&eacute; trait&eacute;e par ce
document&nbsp;:</p>
<pre>
Lorsque je compile un noyau Linux la proc&eacute;dure avorte avec un message:
      gcc: Internal compiler error: program cc1 got fatal signal 11
Que se passe-t-il ?
</pre>
<h2><a name="ss2.1">2.1 R&eacute;ponse succincte</a></h2>
<p>Le probl&egrave;me est vraisemblablement caus&eacute; par un
dysfonctionnement du mat&eacute;riel. De nombreux composants de
l'ordinateur peuvent &ecirc;tre impliqu&eacute;s et diverses
mani&egrave;res de r&eacute;soudre le probl&egrave;me existent.</p>
<h2><a name="s3">3. Comment s'assurer que le mat&eacute;riel est en
cause&nbsp;?</a></h2>
<p>Sit&ocirc;t apr&egrave;s l'&eacute;chec du <code>make</code>,
invoquez-le &agrave; nouveau.</p>
<p>Si la machine parvient &agrave; compiler quelques autres
fichiers, nous pouvons penser que le mat&eacute;riel est
d&eacute;faillant.</p>
<p><a name="Expiration du buffer cache"></a> Si, par contre, la
compilation cesse tout de suite (message "nothing to be done for
xxxx" avant nouvel &eacute;chec au m&ecirc;me endroit), il faudra
d&eacute;terminer si le contenu de la m&eacute;moire vive est
toujours bien pr&eacute;serv&eacute;. Pour cela&nbsp;:</p>
<pre>
        dd if=/dev/DISQUE_DUR of=/dev/null bs=1024k count=MEGAS
</pre>
<em>DISQUE_DUR</em> remplace ici le nom du fichier sp&eacute;cial
associ&eacute; au disque dur stockant les sources. Pour
conna&icirc;tre son nom, rester dans le r&eacute;pertoire abritant
les sources et introduire <code>df&nbsp; .</code> ("df" suivi d'un
espace puis un point).<br>
<em>MEGAS</em> remplace ici le nombre de Mo de m&eacute;moire vive
dont la machine dispose (indiqu&eacute; par <code>free</code>).
<p>Cette commande va obliger Linux &agrave; lire les informations
plac&eacute;es au d&eacute;but du disque de fa&ccedil;on &agrave;
"gaver" le contenu du cache disque ("buffer-cache"). Il devra donc,
par la suite, relire les fichiers source &agrave; compiler ainsi
que les binaires de gcc.</p>
<p>Invoquer <code>make</code>.<br></p>
<p>Si la compilation &eacute;choue toujours au m&ecirc;me
"endroit", le probl&egrave;me est probablement d'ordre logiciel.
&Eacute;tudier en ce cas la section consacr&eacute;e aux <a href=
"#Quelles%20sont%20les%20autres%20causes%20possibles%20?">autres
causes possibles</a>.</p>
<p>Si la compilation &eacute;choue &agrave; un autre stade, nous
pouvons conclure que les transferts de donn&eacute;es entre le
disque et la m&eacute;moire vive ne sont pas assur&eacute;s
correctement.</p>
<h2><a name="s4">4. Que signifie ce "signal 11"&nbsp;?</a></h2>
<p>Linux avorte gr&acirc;ce au "signal 11" tout programme tentant
d'acc&eacute;der &agrave; une adresse m&eacute;moire ne lui
appartenant pas. Parmi les nombreuses causes possibles, nous ne
pouvons retenir dans l'absolu que deux possibilit&eacute;s, dans le
cas o&ugrave; cela concerne une version stable de gcc
utilis&eacute;e sur une machine tr&egrave;s commune&nbsp;:
probl&egrave;me mat&eacute;riel ou bien inad&eacute;quation de
certaines composantes des utilitaires logiciels du
syst&egrave;me.</p>
<p>Lorsque ce probl&egrave;me survient sur une machine sans
d&eacute;faut mat&eacute;riel, il ne peut &ecirc;tre caus&eacute;
que par une erreur de programmation ou de compilation (en
l'occurrence du binaire de gcc). Mais lorsque le mat&eacute;riel
est d&eacute;faillant, et que des valeurs stock&eacute;es en
m&eacute;moire vive changent plus ou moins al&eacute;atoirement, un
programme exigeant tel que gcc ne parviendra pas &agrave; mener
&agrave; bien sa mission car il tentera t&ocirc;t ou tard de
d&eacute;r&eacute;f&eacute;rencer un pointeur au contenu ainsi
modifi&eacute;.</p>
<p>Un pointeur, sur une machine &agrave; processeur Intel,
s'&eacute;tend sur 32 bits et permet donc d'acc&eacute;der &agrave;
4 Go. Peu de machines Intel disposent d'autant de m&eacute;moire
vive dont la majeure partie serait allou&eacute;e &agrave;
gcc&nbsp;!<br>
Une adresse de 32 bits al&eacute;atoire est donc tr&egrave;s
probablement ill&eacute;gale et Linux tuera le programme qui tente
avec elle, selon lui, de manipuler des donn&eacute;es ne lui
appartenant pas.</p>
<h2><a name="s5">5. Quel composant incriminer&nbsp;?</a></h2>
<p>Voici une liste des diverses causes de dysfonctionnement du
mat&eacute;riel&nbsp;:</p>
<ul>
<li>Composants trop lents. De mauvaises surprises sont &agrave;
craindre si l'une des "barrettes" de m&eacute;moire vive ne
fonctionne pas convenablement. M&ecirc;me une carte m&egrave;re
capable de contr&ocirc;ler par test de parit&eacute; ne
d&eacute;tectera pas les erreurs survenant lors des cycles
d'&eacute;criture.
<p>Inventaire des causes et solutions&nbsp;:</p>
<ul>
<li>Latence des composants trop importante ("m&eacute;moire trop
lente")<br>
Le contr&ocirc;leur de bus ne parvient pas toujours en ce cas
&agrave; obtenir &agrave; temps la donn&eacute;e requise par le
processeur car la m&eacute;moire "r&eacute;agit" trop lentement.
Solution&nbsp;:augmenter le nombre de cycles d'attente ("wait
states") gr&acirc;ce au SETUP de la machine. Probl&egrave;me
fr&eacute;quent sur les machines 486 cadenc&eacute; &agrave; plus
de 80 MHz &eacute;quip&eacute;es d'un BIOS de marque AMI. (Pat
V.)<br>
Il est parfois n&eacute;cessaire de remplacer les composants pour
diminuer la latence. Les syst&egrave;mes ayant un bus
cadenc&eacute; &agrave; 33 MHz (P100, P133...) ne doivent pas
employer de RAM avec plus de 60ns de latence, surtout si la carte
m&egrave;re est de marque ASUS. L'ensemble peut sembler fonctionner
avec des composants &agrave; 70ns mais une petite erreur est alors
toujours possible (Andrew Eskilsson).</li>
<li>Composant d&eacute;fecteux<br>
D&eacute;monter une barrette (ou changer temporairement la seule
barrette employ&eacute;e) puis relancer le syst&egrave;me et
tester. Recommencer autant de fois que n&eacute;cessaire afin
d'isoler le (ou les&nbsp;!) composants d&eacute;fectueux. Prendre
garde, le cas &eacute;ch&eacute;ant, lors de la manipulation des
m&eacute;moires statiques, car une d&eacute;charge
<em>d'&eacute;lectricit&eacute; statique</em> peut les
<em>condamner</em>.
<p>T&eacute;moignage (kettner@cat.et.tudelft.nl)&nbsp;: nous avons
&eacute;prouv&eacute; de grandes difficult&eacute;s avec une
machine dont il s'av&eacute;ra que les quatre barrettes
&eacute;taient d&eacute;fectueuses et modifiaient &agrave; peu
pr&egrave;s un bit par heure de fonctionnement. La machine
"plantait" environ une fois par jour et les compilations de noyau
&eacute;chouaient environ une fois par heure. Cette machine a pu
ex&eacute;cuter le test m&eacute;moire durant 2300 cycles complets
sans erreur, puis d&eacute;tecta environ 10 erreurs et continua
ensuite sans probl&egrave;me durant plusieurs centaines de cycles.
La compilation de noyau s'av&eacute;ra le test le plus efficace car
m&ecirc;me le cas le plus favorable ne permettait pas de compiler
plus de 14 noyaux &agrave; la suite. Nous avons donc
&eacute;chang&eacute; ces barrettes.</p>
</li>
<li>Convertisseurs d&eacute;fectueux<br>
De nombreux supports de m&eacute;moire, permettant de monter des
composants 32 bits sur des supports 72 points, ne sont pas
con&ccedil;us de fa&ccedil;on correcte, en particulier les plus
anciens.
<p>T&eacute;moignages&nbsp;: nous avons tr&egrave;s longtemps
utilis&eacute; sans probl&egrave;me un jeu de composants sans
support de ce type. Mais ils ne furent pas utilisables avec un
convertisseur (Naresh Sharma (n.sharma@is.twi.tudelft.nl)).</p>
<p>Paul Gortmaker (paul.gortmaker@anu.edu.au) indique que les
convertisseurs doivent tous comporter au moins quatre condensateurs
de r&eacute;gulation du courant.</p>
</li>
<li>Mode de rafra&icirc;chissement de la m&eacute;moire vive
inad&eacute;quat<br>
Les composants "perdent" alors peu &agrave; peu les donn&eacute;es
stock&eacute;es. Causes (Hank Barta (hank@pswin.chi.il.us), Ron
Tapia (tapia@nmia.com))&nbsp;: certaines cartes m&egrave;re donnent
la possiblit&eacute; de rar&eacute;fier les cycles de
rafra&icirc;chissement en vue d'augmenter la bande passante utile
du bus (option "hidden refresh" du SETUP). Un programme, souvent
appel&eacute; <code>dram</code>, offre le moyen de configurer le
jeu de composants ("chipset") au plus bas niveau afin d'obtenir des
effets semblables.</li>
<li>Trop faible nombre de cycles d'attente<br>
Certains composants de la carte m&egrave;re peuvent ne pas
fonctionner toujours correctement si le nombre de cycles d'attente
("wait states") n'est pas appropri&eacute;. L'augmenter gr&acirc;ce
au SETUP.</li>
</ul>
</li>
<li>D&eacute;faillance de la m&eacute;moire cache<br>
Le contenu de la m&eacute;moire cache n'est
g&eacute;n&eacute;ralement pas certifi&eacute; par un test de
parit&eacute; et une d&eacute;faillance ne sera donc pas
diagnostiqu&eacute;e par la carte m&egrave;re. Test&nbsp;: utiliser
le SETUP pour invalider le cache externe ("L2") puis faire
fonctionner le syst&egrave;me. Si les probl&egrave;mes
disparaissent le cache est d&eacute;fectueux. Solutions&nbsp;:
<ul>
<li>Vitesse ou latence de la m&eacute;moire cache
inad&eacute;quate.<br>
Augmenter, gr&acirc;ce au SETUP, le nombre de cycles
d'attente.</li>
<li>Composant de m&eacute;moire d&eacute;fecteux<br>
Il faut alors changer de composant cache. <em>ATTENTION</em>&nbsp;:
il s'agit tr&egrave;s souvent de m&eacute;moire statique, donc
<em>tr&egrave;s</em> fragile (Joseph Barone
(barone@mntr02.psf.ge.com)).</li>
<li>Mode d'exploitation du cache inad&eacute;quat<br>
Le mode "&eacute;criture diff&eacute;r&eacute;e" ("write back"),
par exemple, cause parfois des probl&egrave;mes lorsque le jeu de
composants de la carte m&egrave;re n'est pas correctement
con&ccedil;u (cas observ&eacute; sur une carte "MV020 486VL3H" (20
Mo RAM) par Scott Brumbaugh).</li>
</ul>
</li>
<li>Configuration incorrecte de la carte m&egrave;re<br>
Un cavalier ("jumper") d&eacute;termine parfois le cache qui sera
employ&eacute; (le mod&egrave;le mont&eacute; sur une micro carte
d'extension ou bien les composants de m&eacute;moire classiques).
Exemple&nbsp;: cavalier JP16 sur les ASUS P/I-P55TP4XE version
2.4.</li>
<li>Transferts de donn&eacute;es entre disque et m&eacute;moire<br>
Un bloc de donn&eacute;es lu sur le disque peut se trouver
stock&eacute; en m&eacute;moire avec un bit erron&eacute;.<br>
D&eacute;terminer si c'est la cause du probl&egrave;me en recopiant
des fichiers puis en comparant la copie &agrave; l'original.
R&eacute;p&eacute;ter ce test&nbsp;: apr&egrave;s un
<code>dd</code> (consulter &agrave; ce propos la section
consacr&eacute;e &agrave; l' <a href=
"#Expiration%20du%20buffer%20cache">expiration du buffer cache</a>)
la compilation avortera tr&egrave;s vraisemblablement &agrave; un
autre stade.
<ul>
<li>Interruptions masqu&eacute;es durant des transferts IDE<br>
Certains disques IDE ne tol&egrave;rent pas le d&eacute;masquage
des interruptions lors des transferts, en particulier en
p&eacute;riode de forte charge syst&egrave;me
("hdparm&nbsp;-u0").</li>
<li>Disque de marque Kalok<br>
La qualit&eacute; des disques Kalok de la s&eacute;rie 31xx laisse
beaucoup &agrave; d&eacute;sirer, mieux vaut &eacute;viter de les
employer. Ils ne sont de toutes fa&ccedil;ons pas compatibles avec
Linux. Les r&eacute;former ou laisser aux utilisateurs de
syst&egrave;mes d'exploitation sans cache disque.</li>
<li>Disques SCSI<br>
V&eacute;rifier terminateurs et c&acirc;bles. Un c&acirc;ble court
peut sembler fonctionner avec une terminaison inad&eacute;quate
mais les donn&eacute;es transf&eacute;r&eacute;es peuvent en
p&acirc;tir. Essayer de valider les options de test de
parit&eacute;.</li>
</ul>
</li>
<li>Augmentation abusive de la cadence d'horloge
("overclocking")<br>
Le r&eacute;sultat est le plus souvent al&eacute;atoire. Essayer
d'exploiter la machine &agrave; la cadence d'horloge normale.<br>
Dans un cas au moins (Samuel Ramac (sramac@vnet.ibm.com)) un
processeur P120 ne tol&eacute;rait pas 120 MHz mais fonctionnait
&agrave; 100 MHz. La carte m&egrave;re n'&eacute;tait pas en cause
car le bus est en fait plus rapide lorsque l'horloge bat &agrave;
100 MHz
<blockquote>CPU &agrave; 120&nbsp;: bus &agrave; 60 (x 2), CPU
&agrave; 100&nbsp;: bus &agrave; 66 (x 1,33)</blockquote>
. Un autre processeur P120, mont&eacute; en lieu et place,
fonctionne d'ailleurs normalement.<br>
Tous les "fondeurs" (constructeurs de processeurs) produisent ainsi
de rares "rat&eacute;s", ce n'est en rien sp&eacute;cifique
&agrave; Intel.</li>
<li>Refroidissement du processeur<br>
L'&eacute;levation de la temp&eacute;rature du processeur
provoqu&eacute;e par une augmentation de la cadence d'horloge ou
par une panne du dispositif de refroidissement peut
g&eacute;n&eacute;rer des dysfonctionnements. Bon
r&eacute;v&eacute;lateur&nbsp;: interdire au noyau d'utiliser
l'instruction HALT gr&acirc;ce au param&egrave;tre LILO
ad&eacute;quat (lire le "BootPrompt HOWTO"). La temp&eacute;rature
du circuit augmentera alors beaucoup plus vite, m&ecirc;me sous
faible charge syst&egrave;me, et la fr&eacute;quence d'apparition
des probl&egrave;mes augmentera. Le Pentium &agrave; l'instruction
"FDIV" bogu&eacute;e est particuli&egrave;rement concern&eacute;
car son ventilateur n'&eacute;tait pas con&ccedil;u au mieux.
Notons aussi que la colle employ&eacute;e pour assujetir le
radiateur au processeur doit pr&eacute;senter des
caract&eacute;ristiques de conduction thermique correcte (Arno
Griffioen (arno@ixe.net), W. Paul Mills (wpmills@midusa.net), Alan
Wind (wind@imada.ou.dk))
<p>Intel indique que la temp&eacute;rature de la surface du
processeur doit &ecirc;tre comprise entre&nbsp;:<br></p>
<ul>
<li>0 et +85&deg; C: Intel486 SX, Intel486 DX, IntelDX2,
IntelDX4<br></li>
<li>0 et +95&deg; C: IntelDX2, IntelDX4 OverDrive&reg;<br></li>
<li>0 et +80&deg; C: 60 MHz Pentium&reg;<br></li>
<li>0 et +70&deg; C: 66 to 166 MHz Pentium<br></li>
</ul>
Consulter &agrave; ce propos les sections Q6, Q7 et Q13 de ce
<a href=
"http://pentium.intel.com/procs/support/faqs/iarcfaq.htm">document
Intel</a></li>
<li>Voltage de l'alimentation du processeur<br>
Certains processeurs 5 Volts fonctionnent sous 3,3 Volts, mais pas
toujours de fa&ccedil;on parfaite. Pis&nbsp;: les documentations de
certains syst&egrave;mes sont incorrectes et recommandent une
configuration inad&eacute;quate (Karl Heyes
(krheyes@comp.brad.ac.uk))</li>
<li>Voltage de l'alimentation de la m&eacute;moire<br>
Les plus r&eacute;centes cartes ne tol&egrave;rent que la
m&eacute;moire 3,3 Volts. Ne jamais utiliser les composants sous un
voltage inad&eacute;quat (risque de destruction).</li>
<li>Surexploitation du bus local<br>
Le nombre de cartes connectables &agrave; un bus local
d&eacute;cro&icirc;t avec sa fr&eacute;quence d'exploitation&nbsp;:
3 cartes &agrave; 25 MHz, 2 &agrave; 33 MHz, une seule &agrave; 40
MHz et aucune &agrave; 50 MHz (fr&eacute;quence maximale). Certains
syst&egrave;mes tol&egrave;rent mal la surcharge et les
donn&eacute;es &eacute;chang&eacute;es peuvent alors en
p&acirc;tir. Essayer d'augmenter les &eacute;tats d'attente
ins&eacute;r&eacute;s entre les cycles du bus local (Richard
Postgate (postgate@cafe.net)).</li>
<li>Fonctions d'&eacute;conomie d'&eacute;nergie ("power
management", "APM")<br>
Certains portables, en particulier, offrent une fonction de reprise
imm&eacute;diate (mode "resume") et des programmes pilotes ne
tol&egrave;rent pas toujours cela. D&eacute;brayer ces fonctions ou
bien compiler l'"APM support" dans le noyau (Elizabeth Ayer
(eca23@cam.ac.uk)).</li>
<li>Processeur d&eacute;fectueux<br>
Certains exemplaires des processeurs courants rec&egrave;lent des
bogues aux effets pervers. Aucune solution n'existe, il faut
remplacer le composant. Des cas d'incompatibilit&eacute; entre
processeur et carte m&egrave;re auraient &eacute;t&eacute;
observ&eacute;s. Depuis f&eacute;vrier 1997 la premi&egrave;re
vague de probl&egrave;mes, qui concernait les processeurs Intel,
d&eacute;cro&icirc;t nettement tandis que l'exploitation de
processeurs Cyrix/IBM 6x86 sur certaines cartes m&egrave;re
s'av&egrave;re difficile. Le manuel d'une carte m&egrave;re
pr&eacute;cise qu'elle est incompatible avec les premi&egrave;res
versions du 6x86. C'est regrettable car les performances de ces
processeurs sont fort bonnes.</li>
</ul>
<h2><a name="s6">6. Mais tout fonctionnait correctement depuis
longtemps&nbsp;!</a></h2>
<p>Le fait que la configuration d&eacute;ficiente fonctionnait sans
probl&egrave;me depuis un moment n'implique malheureusement pas que
le mat&eacute;riel est hors de cause.</p>
<p>L'exemple classique concerne les composants de m&eacute;moire.
Leurs fabricants ne disposent pas d'une ligne de production
distincte pour chaque type de m&eacute;moire. Les circuits
proviennent tous des m&ecirc;mes machines et mati&egrave;res
premi&egrave;res, seul le test final d&eacute;termine si un
composant donn&eacute; sera par exemple vendu en tant que 60 ns ou
bien 70 ns. Vos composants fonctionnaient peut-&ecirc;tre &agrave;
merveille depuis longtemps &agrave; la limite de leurs
capacit&eacute;s mais un facteur quelconque (la temp&eacute;rature,
par exemple, ralentit les m&eacute;moires) peut les rendre assez
vite inad&eacute;quats.</p>
<p>Un climat estival ou bien une lourde charge de travail
processeur place donc parfois le syst&egrave;me dans des conditions
o&ugrave; son fonctionnement correct n'est plus certain, voire plus
possible (Philippe Troin (ptroin@compass-da.com)).</p>
<h2><a name="s7">7. Mon programme de test m&eacute;moire ne
r&eacute;v&egrave;le aucun probl&egrave;me</a></h2>
<p>Le test m&eacute;moire effectu&eacute; par le BIOS lors du
d&eacute;marrage de la machine n'en est le plus souvent pas un. Des
conditions d'exploitation extr&ecirc;mes peuvent seules permettre
de lever le doute. Tester gr&acirc;ce &agrave;
<code>memtest86</code>.</p>
<h2><a name="s8">8. Le probl&egrave;me est-il limit&eacute;
&agrave; la compilation du noyau&nbsp;?</a></h2>
<p>Non, mais la compilation du noyau exige beaucoup de ressources
et constitue donc un excellent test ou
r&eacute;v&eacute;lateur.</p>
<p>Autres cas observ&eacute;s&nbsp;:</p>
<ul>
<li>Certaines machines se bloquent parfois lorsqu'elles
ex&eacute;cutent le script d'installation de la distribution
Slackware (dhn@pluto.njcc.com).</li>
<li>Le noyau stoppe parfois une t&acirc;che &agrave; cause d'une
"general protection error" (message confi&eacute; &agrave; syslog)
(fox@graphics.cs.nyu.edu).</li>
</ul>
<h2><a name="s9">9. D'autres syst&egrave;mes d'exploitation
fonctionnent pourtant bien sur cette machine&nbsp;!</a></h2>
<p>Linux exploite mieux le mat&eacute;riel que la plupart des
autres syst&egrave;mes, comme ses performances le laissent
imaginer.</p>
<p>Certains autres syst&egrave;mes, par exemple
&eacute;dit&eacute;s par Microsoft, se "plantent parfois" de
fa&ccedil;on incompr&eacute;hensible. Peu d'utilisateurs s'en
plaignent, semble-t-il, et cette soci&eacute;t&eacute; leur
<a href="http://www.cantrip.org/nobugs.html">r&eacute;pond</a> en
ce cas d'une mani&egrave;re quelque peu &eacute;trange.</p>
<p>Le mode de conception et d'utilisation de ces syst&egrave;mes
d'exploitation produit un ensemble le plus souvent plus
"pr&eacute;dictible" que Linux dans la mesure ou une application
donn&eacute;e sera le plus souvent charg&eacute;e dans la
m&ecirc;me section de la m&eacute;moire vive. Les al&eacute;as
d&ucirc;s &agrave; un composant d&eacute;fectueux sont donc parfois
port&eacute;s au compte d'un programme donn&eacute; et non du
mat&eacute;riel.</p>
<p>Une chose demeure cependant certaine&nbsp;: un syst&egrave;me
Linux bien install&eacute; sur une machine saine doit pouvoir
compiler cent fois de suite un noyau sans aucun
probl&egrave;me.</p>
<p>T&eacute;moignage&nbsp;: Linux et gcc testent &agrave; merveille
la machine. Hors de Linux le test "Winstone" produit le m&ecirc;me
genre d'effets (Jonathan Bright (bright@informix.com))</p>
<h2><a name="s10">10. "signal 11" est-il le seul
effet&nbsp;?</a></h2>
<p>Ce n'est malheureusement pas le cas. Les signaux 6 et 4 peuvent
aussi relever de ce genre de probl&egrave;me (lorsque la
m&eacute;moire n'accomplit pas correctement son office n'importe
quel type d'erreur peut survenir) mais le 11 est le plus
commun.</p>
<p>Autres probl&egrave;mes constat&eacute;s&nbsp;:</p>
<ul>
<li>free_one_pmd: bad directory entry 00000008</li>
<li>EXT2-fs warning (device X:Y): ext_2_free_blocks bit already
cleared for block Z</li>
<li>Internal error: bad swap device</li>
<li>Trying to free nonexistent swap-page</li>
<li>kfree of non-kmalloced memory ...</li>
<li>scsi0: REQ before WAIT DISCONNECT IID</li>
<li>Unable to handle kernel NULL pointer dereference at virtual
address c0000004</li>
<li>put_page: page already exists 00000046 invalid operand:
0000</li>
<li>Whee.. inode changed from under us. Tell Linus</li>
<li>crc error System halted (lors du d&eacute;marrage)</li>
<li>Segmentation fault</li>
<li>"unable to resolve symbol"</li>
<li>make 1]: *** ... Error 139 make: *** ... Error 1</li>
<li>X Window avorte brusquement avec un mesage 'can terminate with
a "caught signal xx"'</li>
</ul>
<p>Les premiers exemples rel&egrave;vent d'arr&ecirc;ts
provoqu&eacute;s par le noyau qui "suspecte" une erreur de
programmation l'affectant. Les autres concernent les
applications.</p>
<p>(S.G.de Marinis (trance@interseg.it), Dirk Nachtmann
(nachtman@kogs.informatik.uni-hamburg.de))</p>
<h2><a name="s11">11. Que faire&nbsp;?</a></h2>
<ul>
<li>D&eacute;monter des barrettes, les remplacer</li>
<li>D&eacute;brayer (SETUP) le cache de second niveau du
processeur</li>
<li>Diminuer la cadence du processeur et du bus</li>
<li>Restaurer la cadence de rafra&icirc;chissement de la
m&eacute;moire pr&eacute;conis&eacute;e</li>
<li>D&eacute;marrer avec un noyau sous option "mem=4M" pour lui
interdire d'exploiter la m&eacute;moire au-dessus des 4 premiers
Mo</li>
<li>Tester&nbsp;:
<blockquote>
<pre>
<code>    tcsh
    cd /usr/src/linux
    make zImage
    foreach i (0 1 2 3 4 5 6 7 8 9)
      foreach j (0 1 2 3 4 5 6 7 8 9)
        make clean;make zImage &gt; log."$i"$j
      end
    end
</code>
</pre></blockquote>
Tous les contenus des fichiers de trace r&eacute;sultants doivent
&ecirc;tre identiques. Cela exige environ 24 heures sur un P100 /
16 Mo RAM et environ 3 mois sur un 386 / 4 Mo :-)</li>
</ul>
<p>Le moyen le plus efficace reste de remplacer tous les composants
de m&eacute;moire. Ce n'est cependant pas toujours facile.</p>
<h2><a name="s12">12. Et le test physique&nbsp;?</a></h2>
<p>M&ecirc;me certains &eacute;quipements &eacute;lectroniques de
test des m&eacute;moires ne mettent pas toujours en &eacute;vidence
les probl&egrave;mes dont nous traitons ici car ils peuvent par
exemple d&eacute;pendre du mode d'exploitation des composants par
la carte m&egrave;re.</p>
<h2><a name="s13">13. Quelles sont les autres causes possibles
?</a></h2>
<p><a name="Quelles sont les autres causes possibles ?"></a></p>
<ul>
<li>pgcc<br>
Utilisation de la version de gcc "pgcc", dont le
g&eacute;n&eacute;rateur de code est optimis&eacute; pour le
Pentium. La compilation, avec ses options par d&eacute;faut, de
certains modules du noyau (par exemple floppy.c) produit un signal
11. Les causes se trouvent &agrave; la fois dans le noyau, la libc
et pgcc. On constate vite qu'il ne s'agit pas d'un probl&egrave;me
mat&eacute;riel car il se produit toujours au m&ecirc;me stade de
la compilation.<br>
Solution&nbsp;: utiliser un gcc standard ou bien des options
interdisant certaines optimisations (par exemple
"-fno-unroll-loops") (Evan Cheng (evan@top.cis.syr.edu)).</li>
<li>Composants de gcc h&eacute;t&eacute;roclites<br>
Lorsque les fichiers appartenant &agrave; gcc proviennent de
sources diff&eacute;rentes des probl&egrave;mes peuvent
appra&icirc;tre. Il faut alors tout remplacer par une version
compl&egrave;te et correcte (Richard H. Derr III
(rhd@Mars.mcs.com)).</li>
<li>&Eacute;dition de liens avec biblioth&egrave;que pour
<code>SCO</code><br>
Sous iBCS&nbsp; les applications dont le LDFLAGS contient
<code>-L</code>lib/ sont expos&eacute;es.</li>
<li>a.out et ELF<br>
Compilation d'un noyau a.out au sein d'un environnement ELF (ou le
contraire).. Le premier appel &agrave; "ld" causera toujours un
"signal 11"(REW).</li>
<li>Carte Ethernet ISA sur bus PCI mal configur&eacute;<br>
Cela peut causer de graves probl&egrave;mes logiciels (sigsegv,
arr&ecirc;t du noyau...). Il faut alors utiliser le SETUP pour
configurer l'"aperture" (zone de m&eacute;moire commune &agrave; la
carte et &agrave; l'espace d'adressage du syst&egrave;me).</li>
<li>Contenu de la partition de m&eacute;moire virtuelle ("swap")
endommag&eacute;<br>
Tony Nugent (T.Nugent@sct.gu.edu.au) pr&eacute;cise qu'il a pu
r&eacute;soudre le probl&egrave;me en re-pr&eacute;parant la
partition gr&acirc;ce &agrave; "mkswap".<br>
Louis J. LaBash Jr. (lou@minuet.siue.edu) nous rappelle qu'il faut
invoquer "sync" apr&egrave;s un "mkswap".</li>
<li>Cartes Ethernet bas de gamme de type NE2000<br>
La qualit&eacute; de certaines cartes est si m&eacute;diocre
qu'elles mettent en p&eacute;ril la stabilit&eacute; du
syst&egrave;me. Les noyaux Linux post&eacute;rieurs &agrave; 1.3.48
les tol&egrave;rent semble-t-il mieux (REW).</li>
<li>Alimentation &eacute;lectrique<br>
Cas peu probable, m&ecirc;me une machine tr&egrave;s bien
&eacute;quip&eacute;e n'approche gu&egrave;re les limites des
alimentations 200 W. Seul un syst&egrave;me utilisant de nombreux
anciens disques (gros consommateurs de courant) peut poser un
probl&egrave;me (Greg Nicholson (greg@job.cba.ua.edu)).<br>
Thorsten Kuehnemann (thorsten@actis.de) indique qu'une alimentation
d&eacute;fectueuse peut provoquer des signaux 11.</li>
<li>Compilation du code ext2<br>
Dans certains cas la compilation du code de gestion du
syst&egrave;me de fichiers ext2 provoque un signal 11 (Morten
Welinder (terra@diku.dk)).</li>
<li>M&eacute;moire disponible insuffisante<br>
gcc produit alors d'&eacute;tranges erreurs (Paul Brannan
(brannanp@musc.edu)).</li>
</ul>
<h2><a name="s14">14. Cette liste me laisse
sceptique&nbsp;!</a></h2>
<p>Nous ne traitons ici que de cas <b>r&eacute;els&nbsp;!</b><br>
(N.d.T&nbsp;: la version <a href=
"http://www.bitwizard.nl/sig11/">originale</a> de ce document
propose une liste des auteurs de t&eacute;moignages).</p>
</body>
</html>