Pular para o conteúdo principal

Recentemente diagnostiquei um aparente problema de compilação para um cliente OpenVOS. Ele tem dois módulos executando o OpenVOS Release 17.1. Ele foi capaz de compilar com sucesso um programa em um deles, mas o compilador gcc diagnosticou um "erro interno do compilador" quando ele tentou compilá-lo no outro módulo. Eu tentei duplicar o problema aqui, mas não consegui reproduzir o problema. Então me ocorreu que o problema deve ser específico para o módulo que exibe a falha, ao invés de um problema com o compilador. No início, pensei que poderia ser devido às mudanças nos valores limite de comando padrão que fizemos na versão 17.1 do OpenVOS. Vários programas, incluindo o gcc e o gmake, falharão na Versão 17.1 se os valores limite do comando não forem definidos para valores consistentes, nem definidos para valores infinitos. Mas este cliente tinha comentado o comando de exemplo set_default_cmd_limits no módulo_start_up.cm, então ele já estava usando valores infinitos, que é o que recomendamos nesta versão. Em seguida, pedi ao cliente que olhasse no syserr_log no momento do erro do compilador. Com certeza, ele encontrou mensagens indicando que seu módulo tinha ficado sem espaço de paginação. Embora seus limites de espaço de endereçamento não limitassem seu uso, ele não tinha espaço de paging suficiente, e assim o sistema operacional não tinha outra escolha senão impedi-lo de solicitar memória virtual adicional. Isto levou a uma exceção de endereçamento no gcc, o que levou a uma obscura mensagem de erro. Uma vez que ele criou um novo arquivo de paging em um destes discos, ele foi capaz de construir seu enorme programa fonte.

A moral da história é que quando você recebe um erro estranho (um que você não viu antes, ou um que você não entende), nunca dói olhar no log do syserr para ver se o OpenVOS registrou alguma mensagem. Neste caso, seu log de syserr continha uma série de mensagens rastreando o progresso em direção ao esgotamento do espaço de paginação. Como o erro era reprodutível, a conexão era bastante óbvia.

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

 

© 2024 Stratus Technologies.