Árvore de páginas



Melhoria - Proteções e limites do AdvPL

Esta build contém algumas proteções para execução de código AdvPL, para que sejam respeitados determinados limites do Kernel do TOTVS Application Server.


AbrangênciaERP 10

Situação

Utilização de programas AdvPL que armazenam e referenciam objetos e arrays.

Ocorrência

Caso um determinado objeto, array ou subarray, durante sua existência, fosse atribuído mais de 32767 vezes a outras variáveis ou elementos de array, referenciando o objeto original, a execução da aplicação apresentava instabilidade seguida de ocorrência de Access Violation e queda do processo.

Melhoria

Os componentes internos de execução do TOTVS Application Server foram protegidos para disparar uma ocorrência de erro AdvPL para abortar a aplicação sem causar invasão de memória, Access Violation ou instabilidade, indicando a causa da ocorrência e respectiva pilha de chamada de funções (stack).

Veja, as seguir, as novas ocorrências:
 

Reference counter overflow ( over 32700 ) on tClassInstance::addRef(): Reproduzida quando um objeto de uma determinada classe é referenciado mais de 32700 vezes. Por exemplo, criar um objeto e acrescentá-lo mais de 32700 vezes em um array, ou acrescentá-lo mais de 16350 vezes em um array e criar uma cópia deste array usando a função aClone().


Reference counter overflow ( over 32700 ) on tVarList::addRef(): Reproduzida quando utilizamos arrays, uni ou multidimensionais, e criamos novas variáveis ou elementos referenciando elementos já existentes, onde do mesmo elemento foram criadas mais de 32700 referências. O exemplo da ocorrência anterior se aplica a este, onde ao invés de objeto, são feitas referências a um array.


Reference counter overflow ( over 32700 ) on tLocalEnv::IncRefs(): Proteção colocada diretamente no Kernel, para uma situação similar às acimas descritas, que não deveria ser reproduzida. As situações que poderiam envolver esta ocorrência são tratadas em outros pontos do sistema, como a proteção de número máximo de níveis de recursão em chamada de funções e stack. Caso esta ocorrência seja reproduzida, deve-se abrir um chamado para a tecnologia TOTVS, informando a ocorrência, logs de console, arquivo de configuração (*.INI) da aplicação e demais informações que se fizerem necessárias para reproduzir tal situação.

Informações adicionais

  • As ocorrências acima são de erro AdvPL, que visam interromper o processo AdvPL que reproduziu a ocorrência citada, para que as causas sejam apuradas e para que outros processos em execução no mesmo serviço do TOTVS Application Server não sejam prejudicados. Seguindo esta premissa, outras informações e mensagens adicionais foram colocadas em pontos estratégicos do Kernel do TOTVS Application Server. Porém, com o objetivo de informar que uma determinada condição inesperada foi reproduzida, sem contudo interferir no processo ou abortar a execução. Trata-se das mensagens abaixo:

    Unlink Underflow on tClassInstance::delRef()
    Code-Block Reference UNDERFLOW on tCodeBlock::cbUnlink()
    tCodeBlockRef UNDERFLOW !!!
    Unlink Underflow on tLocalEnv::DecRefs
    Unlink Underflow on tVarList::delRef()


    Essas mensagens, se registradas no log de console do TOTVS Application Server, serão precedidas pelo texto [FATAL][SERVER], e não devem ser apresentadas no log de console em condições normais ou excepcionais. A presença dessas mensagens em algum log de console pode indicar um problema mais grave na execução de uma aplicação, que pode interferir na estabilidade do ambiente.
     
  • Melhoria realizada conforme análise das necessidades da ferramenta e melhoria contínua da plataforma de desenvolvimento do TOTVS Application Server.
     
  • Não há BOPS ou FNC relacionados.
     
  • Disponível a partir da build 7.00.090818P-091104




  • Sem rótulos