Pular para o conteúdo principal

Recentemente, diagnostiquei um aparente problema de compilador para um cliente OpenVOS. Ele tem dois módulos executando o OpenVOS Release 17.1. Ele conseguiu compilar com sucesso um programa em um deles, mas o compilador gcc diagnosticou um “erro interno do compilador” quando tentou compilá-lo no outro módulo. Tentei reproduzir o problema aqui, mas não consegui. Então, ocorreu-me que o problema deve ser específico do módulo que apresenta a falha, e não um problema com o compilador. A princípio, pensei que poderia ser devido às alterações nos valores padrão do limite de comandos que fizemos no OpenVOS Release 17.1. Vários programas, incluindo gcc e gmake, falharão no Release 17.1 se os valores do limite de comandos não forem definidos como valores consistentes, nem como valores infinitos. Mas esse cliente havia comentado o comando set_default_cmd_limits de amostra em module_start_up.cm, então ele já estava usando valores infinitos, que é o que recomendamos nesta versão. Em seguida, pedi ao cliente para verificar o syserr_log no momento do erro do compilador. Como era de se esperar, ele encontrou mensagens indicando que seu módulo havia ficado sem espaço de paginação. Embora seus limites de espaço de endereço não limitassem seu uso, ele não tinha espaço de paginação suficiente e, portanto, o sistema operacional não teve escolha a não ser impedi-lo de solicitar memória virtual adicional. Isso levou a uma exceção de endereçamento no gcc, o que resultou na mensagem de erro obscura. Depois de criar um novo arquivo de paginação em um de seus discos, ele conseguiu compilar seu enorme programa fonte.

A moral da história é que, quando você recebe um erro estranho (que nunca viu antes ou não entende), nunca é demais verificar o log syserr para ver se o OpenVOS registrou alguma mensagem. Nesse caso, o log syserr continha uma série de mensagens acompanhando o progresso até o esgotamento do espaço de paginação. Como o erro era reproduzível, a conexão era bastante óbvia.

Se você tiver dúvidas sobre as mensagens no syserr_log, pode publicá-las no Fórum OpenVOS ou entrar em contato com o Centro de Assistência ao Cliente local.

 

© 2024 Stratus Technologies.