Árvore de páginas

Melhoria - Alteração no tratamento da ocorrência "Memory full"

A partir da build atual, as ocorrências críticas de falha de alocação de memória são registradas no log de console da aplicação com informações adicionais e com a mensagem "Memory Allocation Failure".


AbrangênciaERP 10

Situação

Nas builds anteriores do TOTVS Application Server, uma falha de alocação de memória no servidor poderia gerar mensagens e ocorrências críticas no TOTVS Application Server, tais como: "Access Violation", "String index out of bounds" e "Memory full". Observe os exemplos:

 //===================================================== Exception code: C0000005 ACCESS_VIOLATION Fault address: 0A901BFD 01:00000BFD C:\Mp8\bin_081215p_ftp\server\SHSMP.DLL Impossivel Ler IMAGEHLP.DLL Call stack: Address Frame Logical addr Module //=====================================================

/*-------------------------------------------------------ERRO THREAD ([121212], Julio, TEC-AUTOQUAD) 29/01/2009 09:51:12 Stack :Memory full(tStrRef) in file c:\advtec9\lib_base\stringz.hpp at line 140 on PL169HIST(PLSA169.PRW) 05/01/2007 line : 3463(...)

/*-------------------------------------------------------ERRO THREAD ([121212], Julio, TEC-AUTOQUAD) 30/01/2009 09:51:13 Stack :string index out of bounds in file c:\advtec9\lib_base\stringz.hpp at line 671 on MSAPP:RUNAPP(APLIB000.PRW) 30/10/2006 line : 671(...)


Ocorrência

Após uma falha de alocação de memória, a aplicação pode tornar-se instável, congelar e apresentar comportamentos inesperados, sendo necessário parar e reiniciar o sistema. Na maioria dos casos, a falha está relacionado à disponibilidade de memória na máquina onde o TOTVS Application Server está sendo executado ou ao limite de memória alocada pelo TOTVS Application Server.

Melhoria e alterações  de comportamento

A partir da build atual, o tratamento de alocação de memória foi revisado e alterado para gerar uma ocorrência inicial única, entitulada como "Memory Allocation Failure", com informações adicionais sobre a operação interna que apresentou falha, facilitando o diagnóstico deste tipo de situação.

A seguir, observe as novas mensagens que serão apresentadas no console do TOTVS Application Server:

[FATAL][SERVER] [THROW] Memory Allocation Failure ( 38504 bytes ) at file C:\AdvTec9\interfacetst\apwinnt.cpp line 818

Esta mensagem informará o tamanho do bloco de memória solicitado que falhou a alocação e qual a rotina interna que disparou a ocorrência de falha. No entanto, mesmo com a nova mensagem unificada, após haver uma ocorrência desta natureza reproduzida e registrada no log de console, o comportamento do TOTVS Application Server poderá apresentar ocorrências de Access Violation e outras críticas, porém com o registro dessa mensagem, é possível verificar no log de console que a ocorrência precursora das demais foi efetivamente uma falha de alocação de memória.

Como a ocorrência de falha de locação de memória pode gerar outros efeitos colaterais, inclusive impedir o tratamento de uma ocorrência prévia de falha, foi implementada uma proteção na rotina de tratamento de falha de execução, para se durante a execução das rotinas internas de recuperação de erro e geração de log, ocorrer uma falha de alocação de memória, que impeça o erro de ser recuperado, o TOTVS Application Server vai registrar no console uma mensagem de falha crítica de alocação , vide abaixo. Após apresentar esta mensagem, o TOTVS Application Server será finalizado automaticamente, encerrando todos os processos em execução e o serviço.

[FATAL][SERVER] APPLICATION SHUTDOWN DUE UNRECOVERABLE MEMORY ALLOCATION FAILURE

Neste caso, e exclusivamente neste caso, é preferível que o serviço do TOTVS Application Server finalize, pois em situações como estas o TOTVS Application Server pode apresentar travamento de processos, que potencialmente prejudica  a operação do ambiente, até que seja perceptível que um ou mais usuários estão com as aplicações  sem responder.
 

Informações adicionais 



  • Sem rótulos