Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

Versão 1 Próxima »

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.

Abrangência ERP 10 e 11

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 da pilha de stack (200) fosse atingido, a aplicação "congelava", mostrando no Log de console do TOTVS | Application Server a mensagem abaixo : 

**************************************** *** Stack Overflow found *** *** theThreadProc -DoExecute() *** **************************************** 

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 troca de nível de processamento se a memória reservada para stack ultrapassou os 90% de ocupação. Em caso afirmativo, a aplicação será finalizada com a ocorrência de erro fatal AdvPL   "stack depth overflow".

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 atnidigo, foi alterada para  "stack depth overflow in function ...".
  • Proteção realizada em conformidade com o processo de melhoria contínua da ferramenta.

  • Sem rótulos