Computer: Amiga
Type: Besturingssysteem
Door: Addy van Ladesteijn

 

Meditate on this...

Elke Amiga gebruiker kent ze, vervloekt ze, negeert ze, maar slechts een aantal begrijpt ze! Je zit achter je Amiga - minding your own business - en op dat moment is het leven goed. Je aandacht wordt gevestigd op je Amiga-LED. Vanuit je oog-hoeken zie je de rode LED knipperen en je gaat alvast op zoek naar passende vloekwoorden. Je Amiga reset zonder waarschuwing en, erger nog, zonder te saven! Dag highscore, dag document of vaarwel vele regels coding! "Hemeltje" lijkt in zo'n geval niet de juiste ontlading te zijn op een of andere manier... Het scherm wordt zwart en een knipperend rood vlak met de GURU MEDITATION verschijnt. Om de oorzaak te verduidelijken stonden er een aantal (voor velen) nietszeggende cijfers onder. Maar wat betekenen ze nu eigenlijk?
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

De herkomst

De term "Guru Meditation Error" was een grap van de makers in de begindagen van de ontwikkeling van de eerste Amiga. Een van de producten van het bedrijf was het zogenaamde "Joyboard", een joystick die je met de voeten bediende, zoals een hedendaags Wii Balance Board. In de vroege stadia van ontwikkeling van het Amiga Computer besturingssysteem werden de ontwikkelaars soms zo gefrustreerd van de vele vastlopers dat ze, als een ontspanningstechniek, een spel ontwikkelden waarbij een persoon met de benen over elkaar op het Joyboard plaatsnam, zoals een Indiase Guru. De speler moest zo stil mogelijk zitten. Diegene die het langst stil kon blijven zitten won het spel. Als een speler bewoog, veroorzaakte dat een "Guru Meditation Error" en was de speler af. 
In latere versies van de Amiga ROM (KickStart) werd de melding verwijderd, maar sommige gebruikers kozen ervoor om deze via een patch weer in te bakken. 
 
Maar wat is het?

Vele programmeurs hebben nooit begrepen hoe belangrijk deze melding eigenlijk is. Voor hen is het slechts een verzameling van vreemde cijfers. Maar deze cijfers kunnen je eigenlijk precies vertellen wat er fout ging. En als je weet wat er fout ging, is het in de meeste gevallen niet moeilijk om de "bug" te vinden!
 
Als de Amiga dreigt vast te lopen, kan het gebeuren dat het systeem (Exec) doorheeft dat dat er iets mis zal gaan en grijpt in door de huidige taak te stoppen (halten). Exec opent vervolgens een systeemvenster met (bijvoorbeeld) onderstaand bericht:
 
Software error - task held

Finish all disk activity

Select CANCEL to reset/debug

 

Retry                         Cancel
 

Dit gaf soms tijd om belangrijke bestanden op de achtergrond (Amiga Multitasking rulez!) op te slaan voordat je antwoord gaf op deze gewetensvraag (Als je CANCEL klikte kreeg je bezoek van de Guru). Gewetensvraag, omdat de Amiga in de problemen zat en ieder moment kon vastlopen en als je op dat moment data aan het wegschrijven was liep je het risico dat de gehele disk beschadigd raakte waardoor alle data kwijt was! Een lege diskette die je enkel gebruikte ten tijde van dit soort terminale keuzes. Soms was de Exec niet in staat om de huidige opdracht te stoppen, en kwam de Guru direct op bezoek...
 
De GURU Alerts

De Guru Alerts kwamen in twee smaken. In AmigaOS 1.x (Kickstart 1.1, 1.2 en 1.3) waren alle alerts rood. AmigaOS 2.x en 3.x introduceerde de "Recoverable Alerts" en deze waren geel, met uizondering van somige zeer vroege versies van 2.x waar ze groen waren. In het algemeen waren de kritische Dead-End alerts in alle versies van het besturingssysteem altijd rood. In veel gevallen kon je na Recoverable Alerts je werk nog voortzetten. Toch werd door de experts aangeraden te rebooten na elke alert omdat het systeem niet meer stabiel - en dus te vertrouwen zou zijn. 
 
Als de Amiga echt vastloopt, zal de powerLED enkele seconden knipperen en zal een Alert geactiveerd worden, zoals bijvoorbeeld:
 
 
 

Om dichter bij de oorzaak te komen kun je nu de foutmelding decoderen. Als de Guru Meditation getoond werd, waren de options (1) het systeem herstarten met de linker muisknop of (2) ROMWack op te roepen door middel van de rechter muisknop. (ROMWack is een ingebouwde minimalistische debugger die toegankelijk is door een 9600 
bit/s terminal aan de seriële poort te koppelen.)
 

Er bestaan twee verschillende type nummers: De CPU Errors (680x0 Processor Traps) en System Software Errors.
 
CPU Errors (#0000000x.yyyyyyyy)
De x kan de onderstaande waarden hebben:
2 Bus error Hardware fout
3 Address Error Word access op odd byte grens
4 Illegal Instruction  
5 Devide by zero  
6 CHK Instruction  
7 TRAPV Instruction  
8 Privilege Violation  
9 Trace  
A Opcode 1010 Emulation Instruction-word waarde tussen A000-AFFF
B Opcode 1111 Emulation Instruction-word waard tussen F000-FFFF
 
De yyyyyyyy geeft het adres aan van de opdracht die fout ging. (Het is meestal je eigen programma dat het probleem veroorzaakte). Als je een Guru Meditation nummer kreeg zoals #00000005.00C13870, betekent dit dus dat een programma op adres C13870, een variabele door nul probeerde te delen (devide a value by zero). Omdat je nu weet wat de fout is hoef je enkel op de plekken te zoeken waar het programma de mogelijkheid had om een waarde door nul te delen, wat niet al te moeilijk zou moeten zijn.
 
 
System Software Errors ( #aabbcccc.dddddddd)
Het eerste cijfer van het nummer (a) vertelt ons of de foutmelding een Recoverable Error of een Dead End Alert is. Met andere woorden, of er nog redding mogelijk is. Als dit niet het geval is, zal het nummer starten met een 8. Is dit wel het geval, start het nummer met een 0. Bij fatale errors wordt het scherm tevens zwart, terwijl bij herstelbare fouten het scherm enkel iets naar beneden zakt.
 
Het eerste deel (aa) vertelt ons tevens welk Device, welke Library of welke Resource de veroorzaker was van het probleem:


 

LIBRARIES DEVICES RESOURCES OTHERS
01 Exec Library 10 Audio Device 20 CIA Resource 30 BootStrap
02 Graphics Library 11 Console Device 21 Disk Resource 31 Workbench
03 Layers Library 12 GamePort Device 22 Misc Resource 32 Disk Copy
04 Intuition Library 13 Keyboard Device    
05 Math Library 14 TrackDisk Device    
06 CList Library 15 Timer Device    
07 AmigaDOS Library      
08 RAM Handler Library      
09 Icons Library      

 

Om een voorbeeld te geven, een nummer 04 aan het begin betekent dus: Een herstelbare foutmelding in de Intuition Library. Een nummer 84 betekent dus een fatale fout in the Intuition Library.

Het tweede veld (bb) van het Guru Meditation nummer geeft ons een algemene indicatie over de oorzaak:
01  Geen geheugen (meer)

02  Library kon niet aangemaakt worden

03  Library kon niet geopend worden

04  Device kon niet geopend worden

05  Resource kon niet geopend worden

06  Input/Output (I/O) Error

07  Geen Signaal
Een nummer zoals 8201cccc betekent dus een fatale foutmelding in de Graphics Library, en het probleem werd veroorzaakt door geheugen problemen (niet genoeg geheugen).
 
Het laatste veld (cccc) voor de punt geeft iets gedetailleerde informatie. Hieronder een lijst van sommige gebruikelijke Guru Meditation nummers. De informatie is genomen uit de headerfile "exec/alerts.h" (v1.3).
 
EXEC LIBRARY GRAPHICS LIBRARY
01000000 02000000
81000001 68000 exception vector checksum 82010000 Graphics out of Memory
81000002 Execbase checksum 82010006 Long frame, no memory
81000003 Library checksum failure 82010007 Short frame, no memory
81000004 No memory to make Library 82010009 Text, no memory for TmpRas
81000005 Corrupted memory list 8201000A BltBitMap, no memory
81000006 No memory for interrupt servers 8201000B Regions, memory not available
81000007 InitStruct() of an APTR source 82010030 MakevPort, no memory
81000008 A semaphore is in illegal state 82011234 Emergency memory not available
81000009 Freeing memory already freed  
8100000A Illegal 68k exception taken  
 
LAYERS LIBRARY TRACKDISK LIBRARY
03000000 14000000
83010000 Layers out of memory 14000001 Calibrate: seek error
  14000002 Delay: error on timer wait

 

TIMER DEVICE RAM LIBRARY
15000000 08000000
15000001 Bad request 08000001 No overlays in library seglists
15000002 Powersupply doesn't supply ticks  

 

INTUITION LIBRARY AMIGA DOS LIBRARY
04000000
84000001 Unknown gadet type
04000001 Recovery form of AN_GadgetType
84010002 Create port, no memory
04010003 Item plane alloc, no memory
04010004 Sub alloc, no memory
84010005 Plane alloc, no memory
84000006 Item box top < 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
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

 

DISK RESOURCEK.RESOURCE BOOTSTRAP
21000000
21000001 Get unit: already has disk
21000002 Interrupt: no active unit
30000000
30000001 Boot code returned an error

 

 

En dan, tenslotte, het nummer na de punt (dddddd dd) kan drie dingen betekenen:
(1) Het adres van de taak die het probleem veroorzaakte. Of (2) als de error optrad vanwege een soort van geheugen allocatie/deallocatie, dan is dit het adres van het memory block. Of (3) als de Exec echt de kluts kwijt is, dan is dit het nummer 48454C50, wat zich in ASCII laat vertalen in HELP. (48=H, 45=E, 4C=L, 50=P)

Met deze informatie zou je beter in staat moeten zijn om de fout te achterhalen. In de meeste gevallen, zoniet altijd, is het sneller te restarten, het hele voorval te vergeten en lekker verder te gamen. In de andere gevallen, happy troubleshooting!

 

RJ Mical vertelt over de oorsprong van de Guru Meditation

 

 

             
By DUI-WA.com
© Commodore IG - 1980-2017

Powered by Joomla 1.7 Templates