Árvore de páginas

Implementação - Proteção no compilador AdvPL

Esta build contém uma proteção no compilador de código AdvPL, para evitar gerar um código que ultrapasse o limite de alocação de memória de pilha. Uma ocorrência de estouro de pilha não é tratável ou interceptável, e pode comprometer a disponibilidade do servidor de aplicação. 

Abrangência ERP 10 e 11
Situação Compilação ou macro-execução de código AdvPL onde uma linha de código contendo muitas instruções ou operações encadeadas.
Ocorrência A não existência de limite para tal tipo de operação representa o risco de uma fórmula ser executada em um momento do programa onde a pilha de chamadas interna da aplicação está próxima do limite, o que poderia levar à queda imediata do Application Server, sem registro de qualquer observação ou informação adicional. 
Implementações
  • O consumo da memória de pilha passou a ser verificado em operaões do kernel AdvPL sujeitas a condição de estouro de pilha.
  • O compilador do AdvPL passou a ter uma restrição explícita máxima de 4096 reduções por linha. Caso uma expressão ou concatenação na mesma linha lógica ultrapasse 4096 reduções  de compilação, a compilação é finalizada com a ocorrência de erro "C3033 Expression stack overflow"   
  • Esta ocorrência também será mostrada caso uma expressão muito complexa seja executada via macro-execução. 
Informações adicionais
  • Implementação realizada mediante plano de melhoria contínua da ferramenta.
  • Com esta build atualizada,existe a possibilidade de um código-fonte ou macro-execução que funcionavam corretamente nas builds anteriores, deixem de funcionar na build atual, pois a crítica realizada no código pela build atual determinou que o limite seguro para resolução de fórmulas e expressões é potencialmente perigoso para a aplicação. Neste caso o fonte deve ser avaliado, e a fórmula ou concatenação deve ser realizada em operações menores. 

  • Sem rótulos