Ir al contenido principal

Recientemente diagnostiqué un aparente problema de compilación para un cliente de OpenVOS. Tiene dos módulos que ejecutan la versión 17.1 de OpenVOS. Pudo compilar con éxito un programa en uno de ellos, pero el compilador gcc diagnosticó un "error interno de compilación" cuando intentó compilarlo en el otro módulo. Intenté duplicar el problema aquí, pero no pude reproducir el problema. Así que se me ocurrió que el problema debía ser específico del módulo que presentaba el fallo, y no un problema del compilador. Al principio, pensé que podría deberse a los cambios en los valores límite de los comandos por defecto que hicimos en la versión 17.1 de OpenVOS. Varios programas, incluidos gcc y gmake, fallarán en la versión 17.1 si los valores límite de los comandos no se establecen en valores consistentes, ni se establecen en valores infinitos. Pero este cliente había comentado el ejemplo del comando set_default_cmd_limits en module_start_up.cm, por lo que ya estaba usando valores infinitos, que es lo que recomendamos en esta versión. A continuación, le pedí al cliente que mirara en el syserr_log en el momento del error de compilación. Por supuesto, encontró mensajes que indicaban que su módulo se había quedado sin espacio de paginación. Aunque los límites de su espacio de direcciones no limitaban su uso, no tenía suficiente espacio de paginación, por lo que el sistema operativo no tenía más remedio que evitar que solicitara memoria virtual adicional. Esto condujo a una excepción de dirección en gcc, que provocó el oscuro mensaje de error. Una vez que creó un nuevo archivo de paginación en uno de estos discos, pudo construir su enorme programa fuente.

La moraleja de la historia es que cuando recibes un error extraño (uno que no has visto antes, o uno que no entiendes), nunca está de más mirar en el registro del sistema para ver si OpenVOS registró algún mensaje. En este caso, su registro de syserr contenía una serie de mensajes que rastreaban el progreso hacia el agotamiento del espacio de paginación. Como el error era reproducible, la conexión era bastante obvia.

Si tiene preguntas acerca de los mensajes del syserr_log, puede publicarlas en el Foro de OpenVOS o puede contactar con su Centro de Asistencia al Cliente local.