Revistas en papel
 Commodore Amiga World Nº1 - Jul/Ago 1989
Anterior
MenĂº
Logotipo

El Amiga Me Encanta ha conseguido el permiso por escrito de IDG Comunications España
para ofrecer los artículos de la revista Amiga World España.

¡GURUS FUERA! Amiga World

Todo usuario de Amiga ha tenido ocasión de encontrarse alguna vez con su
ordenador "colgado", con una de esas conocidas alertas rojas indicando que
todo se ha estropeado... Después de leer este artículo sabrás qué son y qué
hacer para alejar de tu ordenador a los molestos GURUs.

Por Alvaro Ibáñez

Uno de los más exasperantes problemas a los que se enfrentan los usuarios de Amiga son los GURUs. Se trata de la forma que tiene el Amiga de expresar que algo "en su interior" va mal, que se ha producido un fallo grave del que no puede salir. Los GURUs se pueden producir por las más variadas causas, desde un fallo de programación hasta un fallo de hardware... ¡o pueden producirse sin razón! Pero hay una constante, y es que todos tienen el mismo fatídico resultado: se pierde el control del ordenador.

Aunque los GURUs son algo espontáneo y, en cierto modo, impredecibles, existen muchas formas de disminuir su aparición, evitando así todos los problemas que ello acarrea. En este artículo encontrarás algunos consejos útiles para intentar evitarlos.

Los GURUs

son una

experiencia

incómoda a

la que están

acostumbrados

todos

los usuarios

de Amiga.


Las raíces del problema

El Amiga es un ordenador muy avanzado, así como su sistema operativo. Esto quiere decir que su sistema de funcionamiento es complejo, comparado con el de otros ordenadores personales más pequeños. Su complejidad se debe, en gran parte, a aspectos como la multitarea, el control de la memoria y los chips especiales de gráficos y sonido. Además de esto, siempre hay otro tipo de fallos determinados a tener en cuenta, como los errores de lectura/escritura en disco, o simplemente los problemas de hardware, como los pequeños fallos de corriente.

El Amiga no es un ordenador convencional, en el sentido de que permite ejecutar varios programas a la vez. Esta capacidad se conoce por Multitarea (multitasking). Cada programa o función que está en marcha recibe el nombre de tarea (task). Cuando hay varias tareas funcionando simultáneamente, cada una de ellas cree tener control total sobre el procesador 68000. Hay una especie de "zonas" de memoria reservadas para cada tarea. Es el propio Amiga el que se encarga de situar las tareas a su gusto. Cada tarea tiene su propia memoria, su propio stack, y el procesador central se encarga de hacerlas funcionar por orden, en perfecta armonía.

¿Para qué todas estas explicaciones? Conociendo la forma en que trabaja el ordenador se puede conocer también las causas de los fallos. El problema, visto de un modo general, surge cuando la "perfecta armonía" que existe entre los programas, la memoria y los periféricos, se rompe. Puede deberse a un retraso en el procesamiento de una tarea, o a un fallo en la lectura de una posición de memoria. Debe tenerse en cuenta que algunos de los chips del Amiga tienen acceso directo a la memoria, y que en este sentido actúan a veces como una tarea más un tanto especial.


Técnicas de programación

La gran mayoría de los GURUs se producen por fallos de programación. Esto sucede a veces hasta con algunos programas comerciales, que no han sido diseñados correctamente.

Al contrario que en otros ordenadores, como el C-64. en el Amiga la forma de programar ha de ser muy metódica. La primera diferencia es que no se puede programar a base de POKEs (como en el 64), puesto que en el Amiga "todo es relativo" y no hay sino unas pocas direcciones absolutas a las que POKEar. No se puede decir que haya una "memoria de pantalla" en tal dirección o que las variables se almacenan siempre a partir de tal punto, porque estos valores cambian constantemente, dependiendo de la posición en la que el Amiga quiera colocar cada tarea. En vez de POKEs (o el equivalente de otros lenguajes), deben utilizarse siempre las rutinas y librerías del sistema, que están preparadas para tal fin.

Aunque no

está

comprobado,

es muy

probable que

también los

conocidos

"virus

informáticos"

puedan causar

la aparición de

GURUS.

En el Amiga ha de tenerse muy en cuenta un concepto muy importante: los recursos. Se conocen como recursos ("resources" en inglés) todos aquellos elementos utilizables en la programación, como por ejemplo, la memoria libre, las pantallas, las librerías, las ventanas, los ficheros, los accesos a disco, etc. Es importante saber aprovechar todos los recursos desde los programas, tanto para realizar operaciones de escritura en memoria (como crear una ventana, dibujar una línea o imprimir un texto) como en las operaciones de lectura (leer el valor de una variable, o el contenido de un registro). De este modo, se asegura el correcto funcionamiento interno del programa, así como la compatibilidad con otras tareas que estén corriendo a la vez y con futuras versiones del sistema operativo del ordenador.

CONSEJOS GENERALES PARA EVITAR
LOS GURUS

1. ARRANQUE: Deja arrancar tranquilamente al ordenador (sin parar el CLI con CTRL-D). Algunas de las instrucciones del proceso de arranque son muy recomendables para el correcto funcionamiento del Workbench (buffers, disco RAM, etc.) y si no se ejecutan pueden producir fallos.

2. DISCO-RAM: Utiliza el disco RAM lo menos posible. Si se llena, es muy probable que no puedas seguir trabajando. Algunas versiones antiguas del Workbench tienen discos-RAM con muchos "bugs", y no todos los programas trabajan con él correctamente.

3. DISCO: Durante los accesos a disco, evita mover el ratón y desplazar las ventanas de un lado a otro (aunque sea muy entretenido). Al hacerlo se pueden retrasar las tareas del ordenador y producirse fallos.

4. MEMORIA: Cuando la memoria escasee (sobre todo en los Amiga 500 sin ampliación), evita dentro de lo posible, las "sobrecargas": pantallas en muy alta resolución con muchos colores, ficheros de sonido demasiado largos, textos enormes, fuentes de gran tamaño, etc. La mayor parte de los GURUS se deben a falta de memoria.

5. MULTITAREA: No abuses de la multitarea, a menos que sea absolutamente necesario, sobre todo si algunos de los programas que ejecutes son no-comerciales (pueden no estar bien diseñados).

6. PERIFÉRICOS: Nunca conectes y desconectes periféricos con el ordenador encendido: ratón, joysticks, impresora, unidad de discos, monitor... Si al hacerlo (y si no "explota" el ordenador) aparece un GURU, es muy probable que se deba a un fallo de hardware, tal vez irreparable.

7. RATÖN: No hagas click-click-click fuera de las ventanas o cuando no sea necesario. En general, no "agobies" al ratón si no le hace falta. Un solo click suele ser suficiente para que el Amiga se entere de que quieres seleccionar algo.

8. REQUESTERS y MENUS: Intenta no "volver loco" al ordenador con las opciones que selecciones. Hazlas tranquilamente con el ratón, y espera a que el ordenador las reconozca antes de seguir haciendo clicks.

9. TAREAS: Asegúrate de cerrar todas las tareas (CLI, pantallas de fondo del Amiga Basic) cuando no estés trabajando con ellas.

10. VENTANAS: Abre cuantas menos ventanas mejor, y ciérralas cuando no sean necesarias. De esta forma liberarás memoria. que puede ser necesaria para correr otras aplicaciones.

Tal vez un ejemplo lo aclare mejor: supón que quieres leer la información del teclado. Si lo haces a base de POKEs y PEEKs, todo lo que consigues es información sobre las teclas que se han pulsado (por ejemplo, la tercera tecla de la segunda fila). Esto no sólo es muy incómodo, sino que además pierdes todo tipo de compatibilidad con usuarios que utilicen otro tipo de teclado, con eñes y caracteres por el estilo. Si tu programa utiliza funciones de las librerías, como RawKey(), no sólo será más estándar, sino que además te permitirá evitar GURUs a interferencias con otros programas. De hecho, el sistema de los POKEs no permitiría la utilización de la multitarea correctamente.


Los "cuelgues" misterioros

Además de los GURUs por fallos de programación hay una serie de cuelgues que son más "misteriosos" de lo normal. Son los que producen en cualquier momento (generalmente en el más inesperado) y sin razón aparente. Puede ser al cerrar o abrir una ventana, al seleccionar una opción de un menú o mientras el ordenador está realizando una serie de cálculos. Lo peor es que, con el paso del tiempo, se está comprobado que le suceden a TODO el mundo, y todavía no se ha encontrado una explicación satisfactoria sobre su origen.

Se supone (sólo se supone) que todo se debe a "sobrecargas" en algunas partes o zonas específicas del Amiga, como la memoria, la velocidad de proceso, el acceso a disco (sobre todo el disco RAM) o el abuso de la multitarea. Si estás trabajando con muchas ventanas abiertas, pasando iconos de una a otra, utilizando el disco RAM y haciendo operaciones similares, el GURU puede pasarse por ahí en cualquier momento. Esto no quiere decir que no deba hacerse, sino sólo que... no es conveniente.

En el cuadro tienes una pequeña serie de consejos, basados en la experimentación, para evitar que esto te suceda, o al menos para disminuir el número de veces que el GURU aparezca en tu pantalla.

Pese a todos estos consejos, es muy probable que sigas teniendo problemas con los GURUs. El mejor consejo preventivo que puedes utilizar lo conocen bien muchos usuarios: graba todos tus datos frecuentemente. Aunque pierdas unos segundos grabando cada cinco minutos, siempre será mejor que perder varias horas de trabajo por intentar ahorrarte los segundos que tardas en grabar.

El mejor

consejo: graba

temporal-

mente tu

trabajo, ya

sean pantallas

de gráficos,

textos o bases

de datos.

Evitarás

disgustos.


Significado de los GURUs

Un simple aviso de GURU no serviría para nada si simplemente dijera "¡Eh, algo va mal aquí dentro!". La función principal del GURU es indicar dónde y por qué se ha producido el fallo. El Amiga comunica los GURUs haciendo aparecer una alerta roja en la que se indica la GURU MEDITATION ("Meditación GURU" o "número en el que tienen que pensar los maestros..." mediante dos números de ocho dígitos, como por ejemplo:

GURU MEDITATION:
8201000A.22A026CE

Generalmente este aviso viene precedido, en la mayoría de los casos por una ventana que aparece en el Workbench, en el que se indica lo siguiente:

Software Error. Task Held
S e l e c t   C A N C E L   to
Reset/Debug

RETRY CANCEL

Al seleccionar CANCEL, el piloto rojo de encendido parpadea, y a los pocos segundos aparece el GURU. Si no se selecciona CANCEL, sino RETRY, no sucede absolutamente nada. Si se ignora el aviso y se sigue trabajando, algunas veces (sólo algunas veces) se puede continuar con los programas que estén corriendo, para grabar la información antes del "cuelgue" que acecha al ordenador.

Junto con el GURU MEDITATION aparecen dos números. El primero contiene la información sobre el error y el segundo la dirección absoluta de memoria en la que se encontraba la tarea en el momento de detenerse (no tiene por qué ser exactamente la dirección en la que se ha producido el fallo). Este es el significado de estos dígitos:

GURU MEDITATION:       00 00 0000. 0000000
ID del Subsistema     __|  |   |       |
Error General         _____|   |       |
Error Especifico      _________|       |
Dirección de la Tarea _________________|

Cada una de estas secciones de los números del GURU tiene unos códigos estándar asociados, que indican la fuente del error. Estos códigos son los siguientes:

IDs de Subsistema        
Librerías     Otros  
CPU 00   Arranque 30
Exec 01   Workbench 31
Gráficos 02   DiskCopy 32
Layers 03      
Intuition 04   Errores Generales  
Matemático 05   No aplicable 00
Lista Copper 06   Memoria insuficiente 01
DOS 07   Error en MakeLibrary 02
RAM 08   Error en OpenLibrary 03
Iconos 09   Error en OpenResource 05
Expansión 0A   Error de Entrada/Salida 06
      Sin Señal 07
Periféricos        
Sonido 10   Errores Específicos  
Consola 11   (Por cuestiones de espacio no podemos publicar todos los errores específicos; éstos son los dígitos de los importantes.)
Port Juegos 12   EXEC.LIBRARY 8100xxxx
Teclado 13   GRAPHICS.LIBRARY 8201xxxx
Trackdisk 14   LAYERS.LIBRARY 8301xxxx
Temporizador 15   INTUITION.LIBRARY 8400xxxx
8401xxxx
0400xxxx
Recursos        
CIA 20      
Disco 21      
Varios 22      

Si el primer dígito del GURU es mayor de 3, entonces el error es del tipo no-recuperable, y a continuación se producirá un RESET. Casi todos los GURUs son de este tipo. En estos casos se debe restar 8 a ese primer dígito para obtener el valor correcto del ID del subsistema.

CONSEJOS SOBRE PROGRAMACIÓN

A continuación tienes cinco consejos muy útiles si programas tu Amiga en C o en otros lenguajes. Estan tomados de un artículo de la revista AmigaWorld, escrito por Mark L. Van Name y William B. Catchings.)

1. NO te apropies de todos los recursos del sistema a menos que sea absolutamente necesario.
Los recursos controlados por un programa no son accesibles por otro (memoria, ficheros, impresora, stack). Aunque se puede acceder a muchos de estos recursos por hardware (a base de POKEs) esto no es nada recomendable. Lo correcto es utilizar las funciones y librerías del sistema.

2. Asegúrate de recibir cada recurso que solicites.
Si un programa falla al recibir un recurso, lo más probable es que el GURU te haga una visita. Por esto es necesario hacer las comprobaciones pertinentes cada vez que abres una librería, o intentas reservar memoria.

Curiosidad: El ejemplo más típico de este problema todavía no ha sido solucionado, curiosamente, por Commodore. Se trata del famoso "bug" de la calculadora. Si abres la calculadora, quitas el disco del Workbench e intentas hacer una multiplicación, el Amiga te pedirá el Workbench para leer la librería de cálculos en coma flotante. (Mathieeedoubbas.library). Si seleccionas CANCEL en el requester, no pasará nada, pero a partir de ahí no sólo no podrás calcular nada mas, sino que ¡ni siquiera podrás apagar la calculadora! Esto se debe a que la calculadora no comprueba si la librería se ha abierto correctamente antes de utilizar sus rutinas.

3. Libera todos los recursos cuando termines tu programa.
Cuando termines tu programa, debes liberar todos los recursos que hayas utilizado: memoria, impresora, ventanas, librerías y demás. NO sólo ahorrarás tiempo y memoria, sino que además evitarás las interferencias con los otros programas.

4. No utilices la CPU innecesariamente
Algunos programas abusan innecesariamente de la CPU, perdiendo demasiado tiempo en esperas, bucles muertos y cosas similares, mientras que la CPU podría estar trabajando en otra tarea. Es conveniente utilizar funciones como Wait() o ReplyMsg() para esperar señales externas.

5. No des por supuesto nada que puedas determinar por el sistema.
Un fallo muy corriente es dar por supuesto que el programa va a ser utilizado en un ordenador que es´ta configurado como el tuyo: ancho de la pantalla, fonts, pantalla PAL, preferences... todos estos valores pueden ser comprobados antes de comenzar o ajustarlos si es necesario. De este modo se garantiza que el programa funcionará en cualquier configuración.

En el caso del ejemplo, el significado del GURU 820100A.22a026CE sería el siguiente: 82, de un error no recuperable, Por ser el primer dígito mayor de 3 hay que restarle 8 al primer dígito, y queda 02, que indica que el error se ha producido en la librería de gráficos. Los siguientes dígitos son 01, el código de error general, que indica un fallo por memoria insuficiente. Los últimos cuatro dígitos del primer número indican el error especifico, en este caso, 000A que es "no hay memoria suficiente para el bitmap del blitter".

El ejemplo, en palabras más profanas, significa que el Amiga se ha quedado sin memoria para visualizar una pantalla y, en consecuencia, la librería de gráficos ha producido un error grave que se ha convertido en GURU.

Aunque el número del GURU indica, aproximadamente, qué ha sucedido, realmente no suele servir para mucho, excepto para los programadores que cuelgan muy a menudo sus programas y quieren saber las razones.


Pero, ¿por qué?

Esta es la pregunta que seguramente se estarán haciendo muchos usuarios de Amiga. ¿Por qué los GURUs? ¿Por qué un ordenador tan avanzado como el Amiga falla tan inexplicablemente? ¿Por que no está bien diseñado? Esta pregunta habría que hacérsela a los Grandes Maestros de Commodore, que fueron quienes diseñaron el Amiga y su sistema operativo, pero es muy probable que ni siqueira ellos lo sepan. Las excusas se encaminan siempre a posibles "bugs" del sistema (debido a su complejidad) o a los programas que se utilizan, incluidos comerciales, también con "bugs".

Lo cierto es que estos problemas sólo surgen en ordenadores complejos como el Amiga. El C-64, por ejemplo, raramente se cuelga "porque sí", a menos que tenga problemas de sobrecalentamiento o un programa que especificamente esté mal y le lleve a un bucle sin fin o algo parecido. Del mismo modo, otros ordenadores igual de avanzados, como el Macintosh, el Atari ST y similares tienen su propia forma de dar GURUs, aunque, para los que no trabajan diariamente con ellos, no se haga evidente.

Es posible que dentro de un tiempo los Amigas sean más fiables, que los GURUs sean una curiosidad "de museo" y que trabajar con ellos sea como caminar sobre un suelo alfombrado con rosas. Pero mientras tanto... ¡cuidado, el GURU está al acecho!

GOMF: EL PROTECTOR
ANTI-GURUS

Existe un curioso programa de dominio público llamado GOMF (iniciales de Get Outta My Face, ¡aléjate de mi vista!) que permite interceptar los GURUs antes de que bloqueen el ordenador. Este pequeño "parche" se instala desde el Workbench y, cuando se produce un GURU, aparece un menú explicando las razones concretas del fallo, y ofreciendo opciones para desactivar la tarea que lo ha producido, intentar continuar, hacer un reset o pasar directamente al GURU. Es muy sencillo instalarlo, y aunque consume algo de memoria, merece la pena tenerlo en todos los discos de trabajo, para ahorrar sustos inesperados.


Envía esta página web a un amigo:
Esta opción está desactivada temporalmente, rogamos disculpen las molestias

Volver a la página anterior

Al menú principal