Melhoria - Ocorrência e tratamento de stack overflow
Esta build contém uma proteção adicional para uma ocorrência crítica de falta de memória de stack em processamento de programas.
Situação
Utilização de programas AdvPL, onde intencional ou acidentalmente houve recursividade de código (a função chamando ela mesma, aumentando a pilha de chamadas - stack).
Ocorrência
Caso a memória interna do TOTVS | Application Server, destinada à alocação de pilha (stack), fosse inteiramente ocupada antes do limite de itens de chamada de função ( fixo em 200 níveis ) fosse atingido, a aplicação "congelava", mostrando no Log de console do TOTVS | Application Server a mensagem abaixo :
Adicionalmente, os recursos deste processo ficavam retidos, sem que a memória e recursos utilizados fossem liberados, podendo causar outras instabilidades no ambiente.
O comportamento esperado numa condição desta natureza deveria proteger a execução de código, disparando uma ocorrência de erro fatal AdvPL antes do limite interno de memória de stack ser atingido.
Melhoria
Implementada proteção no kernel de execução de programas AdvPL, para verificar a cada novo item na pilha de funções se a memória interna reservada para stack da aplicação ultrapassou os 90% de ocupação. Em caso afirmativo, a aplicação será finalizada com a ocorrência de erro fatal AdvPL "stack memory overflow", antes da memória interna ser esgotada.
Informações adicionais
Para que não existam equívocos sobre os diferentes tipos de ocorrência relacionadas a "stack overflow", a ocorrência de erro fatal AdvPL "stack overflow in function ....", disparada quando o limite de níveis de pilha foi atingido, foi alterada para "stack depth overflow in function ...".
Proteção realizada em conformidade com o processo de melhoria contínua da ferramenta.