Obligement - L'Amiga au maximum

Lundi 25 octobre 2021 - 12:54  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in english


Twitter

Suivez-nous sur Twitter




Liste des 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,
ALL


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


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Sites de téléchargements
Associations
Pages Personnelles
Matériel
Réparateurs
Revendeurs
Presse et médias
Programmation
Logiciels
Jeux
Scène démo
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


Dossier : Les Gurus Meditation
(Article écrit par David Brunet - 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 Meditation remonte à l'époque du développement de la première version d'AmigaOS. Pour décompresser et se calmer lors de chaque plantage, le développeur (le gourou), s'installait sur un Joyboard. Ce périphérique de console de jeux 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, mauvaises manipulations logicielles ou à un écrasement de la pile mémoire (le stack).

Juste avant que l'alerte apparaisse, l'écran devient noir, la diode d'alimentation et celle d'activité disque peuvent clignoter. L'alerte elle-même apparaît dans une boîte rectangulaire noire qui se place dans la partie supérieure de l'écran. Ses limites et son texte sont en rouge quand c'est un Guru Meditation "normal", ou vert/jaune pour une erreur récupérable. Dans les versions 1.x d'AmigaOS, contenues dans des ROM Kickstart 1.1, 1.2 et 1.3, les erreurs sont toujours rouges. Dans les versions 2.x et 3.x d'AmigaOS, les alertes récupérables sont jaunes, sauf pour les premières versions 2.x où elles sont vertes. En revanche, les erreurs fatales sont rouges pour toutes les versions.

Quand un Guru Meditation apparaît, l'ordinateur exécute un débogueur nommé ROMWhack, qui est accessible en connectant un terminal à 9600 bit/s au port série. Ceci permet d'aller voir le contenu de la machine et permet de déterminer ce qui a causé l'erreur.

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
E : erreur sur la pile (stack frame format error)

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 périphériques logiques, 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 : DiskCopy
33 ou B3 : Gadtools
34 ou B4 : Utility library
35 ou B5 : Unknown

Note : le premier chiffre (a) est le niveau d'importance 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 périphérique logique
05 : erreur car pas de réaction du matériel (impossible d'ouvrir une ressource)
06 : erreur d'entrée/sortie
07 : erreur car pas de signal
08 : mauvais paramètres
09 : erreur dans la fermeture de la bibliothèque
0A : erreur dans la fermeture du périphérique logique
OB : erreur dans la création du processus
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 : Somme de contrôle du vecteur d'exception 68000
81000002 : Somme de contrôle "Execbase"
81000003 : Mauvaise somme de contrôle de bibliothèque
81000004 : Pas de mémoire pour créer la bibliothèque
81000005 : Liste mémoire corrompue
81000006 : Pas de mémoire pour les serveurs d'interruption
81000007 : InitStruct() d'une source APTR
81000008 : Sémaphore en état illégal
81000009 : Mémoire à libérer déjà libre
8100000A : Exception 68k illégale
8100000B : Tentative de réutilisation d'un OIRequest actif
8100000C : Le contrôle d'intégrité de la liste de mémoire a échoué pendant AvailMem (MEMF_LARGEST)
. 8100000D : Tentative d'entrée/sortie sur un IORequest fermé
8100000E : La pile semble s'étendre hors de portée
. 8100000F : En-tête de mémoire non localisé. Généralement une adresse invalide passée à FreeMem
81000010 : Une tentative a été faite pour utiliser l'ancien message séphamores
810000FF : Une interruption rapide est survenue sur un vecteur non initialisé

graphics.library :

02000000 : -
82010000 : Graphismes en manque de mémoire
82010001 : Pas de mémoire pour la liste d'affichage du Copper
82010002 : Pas de mémoire pour la liste des instructions du Copper
82010003 : Surcharge de la liste du Copper
82010004 : Surcharge de la liste intermédiaire de Copper
82010005 : Pas de mémoire pour la tête de liste du Copper
82010006 : Trame longue, pas de mémoire
82010007 : Cadre court, pas de mémoire
82010008 : Pas de mémoire pour le remplissage des flots ("flood fill")
82010009 : Texte, Pas de mémoire pour TmpRas
8201000A : Pas de mémoire pour le bitmap
8201000B : Régions, mémoire non disponible
82010030 : MakeVPort, pas de mémoire
82011234 : Mémoire d'urgence non disponible
82010401 : Description de police non gérée utilisée

. Workbench :

0000 : aucune police de caractères
0001 : Mauvais démarrage Msg1 du Workbench
0002 : Mauvais démarrage Msg2 du Workbench
0003 : Mauvais Msg d'entrée/sortie du Workbench
0004 : Tiroir d'allocation de potions d'init du Workbench
0005 : Création de menus du Workbench, Menus1
0006 : Création de menus du Workbench, Menus2
0007 : Disposition du menu du Workbench, Menus2
0008 : Ajout d'un élément Outil dans le menu du Workbench
000A : InitTimer
000B : Init Layer Demon
000C : Initialisation des GELs du Workbench
000D : Initialisation de l'écran et des fenêtres du Workbench, Windows1
000E : Initialisation de l'écran et des fenêtres du Workbench, Windows2
000F : Initialisation de l'écran et des fenêtres du Workbench, Windows3
0010 : WBMAlloc

layers.library :

03000000 : -
83010000 : Manque de mémoire pour la bibliothèque Layers

intuition.library :

04000000 : -
84000001 : Type de gadget inconnu
04000001 : Forme de récupération d'un type de gadget "AN_GadgetType"
84010002 : Manque de mémoire pour créer un port
04010003 : Manque de mémoire pour l'allocation d'un élement de plan (item plane)
04010004 : Manque de mémoire pour l'allocation d'une sous-rubrique (sub)
84010005 : Manque de mémoire pour l'allocation d'un plan (plane)
84000006 : Élement supérieure de la boîte inférieur à RelZero
84010007 : Manque de mémoire pour ouvrir l'écran
84010008 : Manque de mémoire pour ouvrur l'écran avec allocation du raster
84000009 : Type inconnu pour l'ouverture de l'écran
8401000A : Manque de mémoire pour l'ajout de gadgets SW
8401000B : Manque de mémoire pour ouvrir la fenêtre
8400000C : Mauvais retour d'état en entrant dans Intuition
8400000D : Mauvais message reçu par IDCMP
8400000E : Écho bizarre causant une incompréhension
8400000F : Impossible d'ouvrir le Console Device
84000010 : Intuition a omis l'obtention d'un sémaphore
84000011 : Intuition a obtenu un sémaphore dans le mauvais ordre

dos.library :

07000000 : -
07010001 : Pas de mémoire au démarrage
07000002 : EndTask n'a pas pu interrompre une tâche
07000003 : Échec de Qpkt
07000004 : Paquet imprévu réçu
07000005 : Échec de Freevec
07000006 : Erreur séquence d'un bloc de disque
07000007 : Bitmap endommagé
07000008 : Toucge (key) déjà libre
07000009 : Somme de contrôle invalide
0700000A : Erreur disque
0700000B : Touche hors champ
0700000C : Mauvais overlay
0700000D : Initialisation de paquet invalide pour le CLI/Shell
0700000E : Un gestionaire de fichiers (filehandle) a été fermé plus d'une fois

Ramlib :

08000000 : -
08000001 : Pas d'overlays dans les seglists de la bibliothèque

expansion.library :

0A000001 : Mauvaise libération d'une expansion

trackdisk.device :

14000000 : -
14000001 : Erreur de recherche pour Calibrate
14000002 : Erreur d'attenre de l'horloge pour Delay

timer.device :

15000000 : -
15000001 : Mauvaise requête
15000002 : L'alimentation ne fournit pas de tics (50/60 Hz)

Console Device :

0001 : La console ne peut pas ouvrir la fenêtre initiale

Disk Resource :

21000000 : -
21000001 : Get unit: a déjà un disque
21000002 : Interrupt: pas d'unité active

BootStrap :

30000000 : -
30000001 : Le code de démarrage a retourné une erreur

Alert Objects :

8001 : ExecLib
8002 : GraphicsLib
8003 : LayersLib
8004 : Intuition
8005 : mathLib
8006 : DOSLib
8008 : RAMLib
8009 : IconLib
800A : ExpansionLib
800B : DiskfontLib
800C : UtilityLib
800D : KeyMapLib
8010 : AudioDev
8011 : ConsoleDev
8012 : GameportDev
8013 : KeyboardDev
8014 : TrackDiskDev
8015 : TimerDev
8020 : CIARsrc
8021 : DiskRsrc
8022 : Miscrsrc
8030 : Bootstrap
8031 : Workbench
8032 : Diskcopy
8033 : GadTools
8035 : Unknown

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.

Pour finir, je vous conseillerai deux outils très intéressants concernant les Gurus : The Guru, un guide explicatif sur les chiffres des Gurus ainsi que MCP, un correctif qui permet notamment de "capturer" les Gurus et d'en déterminer la cause avant que la machine plante. Indispensable donc...


[Retour en haut] / [Retour aux articles]


Soutenez le travail de l'auteur