Skip to main content

J'ai récemment diagnostiqué un problème apparent de compilation pour un client d'OpenVOS. Il possède deux modules fonctionnant avec la version 17.1 d'OpenVOS. Il a réussi à compiler un programme sur l'un d'eux, mais le compilateur gcc a diagnostiqué une "erreur de compilation interne" lorsqu'il a essayé de le compiler sur l'autre module. J'ai essayé de reproduire le problème ici, mais je n'ai pas réussi à reproduire le problème. Il m'est donc apparu que le problème devait être spécifique au module présentant la défaillance, plutôt qu'un problème avec le compilateur. Au début, j'ai pensé que cela pouvait être dû aux modifications des valeurs limites de commande par défaut que nous avons apportées dans la version 17.1 d'OpenVOS. Un certain nombre de programmes, dont gcc et gmake, échoueront dans la version 17.1 si les valeurs limites des commandes ne sont pas fixées à des valeurs cohérentes, ni à des valeurs infinies. Mais ce client avait commenté l'exemple de commande set_default_cmd_limits dans module_start_up.cm, il utilisait donc déjà des valeurs infinies, ce que nous recommandons dans cette version. Ensuite, j'ai demandé au client de regarder dans le syserr_log au moment de l'erreur de compilation. Il a bien sûr trouvé des messages indiquant que son module n'avait plus d'espace de pagination. Même si les limites de son espace d'adressage ne limitaient pas son utilisation, il n'avait pas assez d'espace de pagination, et le système d'exploitation n'avait donc pas d'autre choix que de l'empêcher de demander de la mémoire virtuelle supplémentaire. Cela a conduit à une exception d'adressage dans gcc, qui a donné lieu à l'obscur message d'erreur. Une fois qu'il a créé un nouveau fichier de pagination sur l'un de ces disques, il a pu construire son énorme programme source.

La morale de l'histoire est que lorsque vous obtenez une erreur étrange (une que vous n'avez jamais vue auparavant, ou que vous ne comprenez pas), il n'y a jamais de mal à regarder dans le journal du système pour voir si OpenVOS a enregistré des messages. Dans ce cas, son journal syserr contenait une série de messages suivant la progression vers l'épuisement de l'espace de pagination. Comme l'erreur était reproductible, le lien était assez évident.

Si vous avez des questions concernant les messages du syserr_log, vous pouvez les poster sur le forum OpenVOS ou contacter votre centre d'assistance clientèle local.

 

2024 Stratus Technologies.