Obligement Magazine AmigaOS et MorphOS

Mercredi 10 février 2010 - 13:32  

Traduction



Rubriques

 · Accueil
 · A Propos
 · Actualité
 · Articles
 · Glossaire
 · Liste jeux Amiga
 · Trucs et astuces
 · Hit Parade
 · Quizz
 · Galeries
 · Téléchargements
 · Liens


Articles

 · Actualité
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Divers


Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


Jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Partenaires

Annuaire Amiga

Relec

Noname

Hit Parade


Bulletin d'info

Pour être informé des nouveautés du site, abonnez-vous à notre bulletin d'information !




Contact

David Brunet

Courriel

 


Dossier : les guru meditation
(Article écrit par David Brunet et extrait d'Obligement 21 - mai 2000)


Qui n'a jamais été enragé par des plantages sauvages durant l'utilisation de sa machine ? Windows est bien connu pour ses records dans ce genre mais l'Amiga demeure une machine où les plantages restent présents. Ils s'appellent "Guru Meditation" ou "Software Failure" et nous allons tenter d'en savoir plus sur eux.

Guru Meditation

Guru meditation ou software failure ?

Depuis le début de son développement, un système d'échec pour l'Amiga a été conçu afin d'identifier l'origine des erreurs. Il s'agit des légendaires guru meditation qui se concrétisent par un écran rouge clignotant. L'expression "guru meditation" a été remplacée plus tard, avec la venue des A1200 et A4000 (AmigaOS 3.0), par "software failure", toponyme plus adéquat et plus parlant.

L'origine des guru meditations remonte à l'époque du développement du noyau de l'AmigaOS. Pour décompresser et se calmer lors de chaque plantage du noyau, le développeur (le guru), s'installait sur un Joyboard. Ce périphérique de console de jeu se présentait comme une planche posée en équilibre sur un axe (afin de diriger un personnage). Dès lors, le programmeur était dans une position de Buddha et "méditait".

Les raisons d'un guru meditation sont de trois ordres : erreur du système d'exploitation (de moins en moins fréquent, surtout depuis l'apparition de l'AmigaOS 3.5), mauvaises manipulations logiciels (attention aux programmes mal codés !) ou à un écrasement de la pile mémoire (le stack).

Les plantages sont matérialisés par 16 chiffres (8 octets).

Exemple :

Error : 0000 0005 Task : 000083DC
ou
00000005.000083DC

Erreurs du processeur

Elles se présentent sous la forme "0000000x.yyyyyyyy", où "x" peut avoir une des valeurs de la liste suivante et les "y" sont l'adresse de la tâche fautive.

2 : erreur de bus au niveau matériel
3 : erreur d'adresse
4 : erreur d'instruction illégale
5 : erreur de division par zéro
6 : erreur sur instruction CHK
7 : erreur sur instruction TRAPV
8 : erreur de violation du mode superviseur
9 : erreur trace
A : émulation code opération 1010
B : émulation code opération 1111

Erreurs du système

Elles se présentent sous la forme "aabbcccc.dddddddd". Il y a donc quatre champs d'informations.

1) Les deux premiers chiffres (aa)

Les deux premiers chiffres (aa) nous disent si l'erreur vient des bibliothèques, des devices, des ressources ou d'un autre élément :

Bibliothèques :

01 ou 81 : exec.library
02 ou 82 : graphics.library
03 ou 83 : layers.library
04 ou 84 : intuition.library
05 ou 85 : math.library
06 ou 86 : clist.library
07 ou 87 : dos.library
08 ou 88 : ramhandler.library
09 ou 89 : icons.library

Devices :

10 ou 90 : audio.device
11 ou 91 : console.device
12 ou 92 : gameport.device
13 ou 93 : keyboard.device
14 ou 94 : trackdisk.device
15 ou 95 : timer.device

Ressources :

20 ou A0 : CIA Resource
21 ou A1 : Disk Resource
22 ou A2 : Misc Resource

Autres :

30 ou B0 : BootStrap
31 ou B1 : Workbench
32 ou B2 : Disk Copy

Note : le premier chiffre (a) est le niveau de sérieux de l'erreur : 0, 1, 2 ou 3 pour une erreur récupérable (le guru meditation apparaît au-dessus de l'écran en cours) et 8, 9, A et B pour une erreur fatale (le guru meditation affiche son message dans un écran noir).

2) Les 3e et 4e chiffres (bb)

Les 3e et 4e chiffres (bb) déterminent la cause générale de l'erreur :

01 : erreur pour manque de mémoire accessible
02 : erreur car impossible de créer une bibliothèque
03 : erreur car impossible d'ouvrir une bibliothèque
04 : erreur car impossible d'ouvrir un device
05 : erreur car impossible d'ouvrir une ressource
06 : erreur d'entrée/sortie
07 : erreur car pas de signal
00 : si ce n'est pas applicable aux autres erreurs

3) Les 5e, 6e, 7e et 8e chiffres (cccc)

Les 5e, 6e, 7e et 8e chiffres (cccc) montrent des informations supplémentaires sur la cause et le type d'erreur.

exec.library :

01000000 : -
81000001 : 68000 exception vector checksum
81000002 : Execbase checksum
81000003 : Library checksum failure
81000004 : No memory to make library
81000005 : Corrupted memory list
81000006 : No memory for interrupt servers
81000007 : InitStruct() of an APTR source
81000008 : A semaphore is in illegal state
81000009 : Freeing memory already freed
8100000A : Illegal 68k exception taken

graphics.library :

02000000 : -
82010000 : Graphics out of memory
82010001 : No memory for Copper display list
82010002 : No memory for Copper instruction list
82010003 : Copper list overload
82010004 : Copper intermediate list overload
82010005 : No memory for Copper list head
82010006 : Long frame, no memory
82010007 : Short frame, no memory
82010008 : No memory for flood fill
82010009 : Text, No memory for TmpRas
8201000A : No memory for bitmap
8201000B : Regions, memory not available
82010030 : MakeVPort, no memory
82011234 : Emergency memory not available

layers.library :

03000000 : -
83010000 : Layers out of memory

intuition.library :

04000000 : -
84000001 : Unknown gadget type
04000001 : Recovery form of previous message
84010002 : No memory to create port
04010003 : Item plane alloc, no memory
04010004 : Sub alloc, no memory
84010005 : Plane alloc, no memory
84000006 : Item box top less than RelZero
84010007 : Open screen, no memory
84010008 : Open screen, raster alloc, no memory
84000009 : Open sys screen, unknown type
8401000A : Add SW gadgets, no memory
8401000B : Open window, no memory
8400000C : Bad State Return entering Intuition
8400000D : Bad Message received by IDCMP
8400000E : Weird echo causing incomprehension
8400000F : Couldn't open the Console Device

dos.library :

07000000 : -
07010001 : No memory at startup
07000002 : EndTask didn't
07000003 : Qpkt failure
07000004 : Unexpected packet received
07000005 : Freevec failed
07000006 : Disk block sequence error
07000007 : Bitmap corrupt
07000008 : Key already free
07000009 : Invalid checksum
0700000A : Disk Error
0700000B : Key out of range
0700000C : Bad overlay

ram.library :

08000000 : -
08000001 : No overlays in library seglists

expansion.library :

0A000001 : Bad Expansion Free

trackdisk.device :

14000000 : -
14000001 : Calibrate: seek error
14000002 : Delay: error on timer wait

timer.device :

15000000 : -
15000001 : Bad request
15000002 : Power supply does not supply ticks

Disk Resource :

21000000 : -
21000001 : Get unit: already has disk
21000002 : Interrupt: no active unit

BootStrap :

30000000 : -
30000001 : Boot code returned an error

4) Les 8 derniers chiffres (dddddddd)

Les 8 derniers chiffres peuvent indiquer trois choses différentes :
  • L'adresse de la tâche fautive.
  • L'adresse du bloc mémoire s'il s'agit d'une erreur d'allocation/désallocation de mémoire.
  • Le chiffre 48454C50 quand Exec est dans le pétrin. Ces chiffres signifient HELP (48=H, 45=E, 4C=L, 50=P).
Récapitulons...

Prenons maintenant un exemple :

Error : 8201 0000 Task : 070183DC

Il s'agit donc d'une erreur fatale (8) de la graphics.library (2) pour un problème de mémoire (01) car la graphics.library n'a simplement plus de mémoire à sa disposition (0000). L'erreur est à l'adresse 070183DC.

Voilà, je m'arrête là pour cette fois-ci mais sachez, pour finir, que le correctif MCP permet de capturer les software failure et d'en déterminer la cause avant que la machine plante. Indispensable donc...


[Retour en haut] / [Retour aux articles]