Boa tarde. Tenho um programa que executa uma Lib no linux, e em algumas vezes acabou ocorrendo o erro 49 Memory violation. Tenho uma função que cria um objeto Call em uma variavel handle, este objeto Call ativa a Lin e instancia um método da Lib. e executa o mesmo. Mas em determinado momento ocorre este erro 49 Memory Violation e trava tudo. Isso ocorre raramente, mas gostaria de descobrir uma forma disso não ocorrer e se ocorrer contornar este problema. Como posso fazer para contar este erro, pois quando ocorre preciso sair do sistema e entrar novamente. Obrigado.
Estou usando desta forma. Código: FUNCTON altera_tag RETURNS char (input tag as char, input vlr as char): CREATE CALL vCall. ASSIGN vCall:PERSISTENT = TRUE vCall:LIBRARY-CALLING-CONVENTION = "STDCALL" vCall:CALL-TYPE = DLL-CALL-TYPE vCall:RETURN-VALUE-DLL-TYPE = "short" vCall:LIBRARY = "caminho onde esta a lib.so" vCall:CALL-NAME = "regAlterarValor" vCall:NUM-PARAMETERS = 2. vCall:SET-PARAMETER (1,"character","input", tag). vCall:SET-PARAMETER (2,"character","input", vlr). vCall:INVOKE (). vin-retorno = vCall:RETURN-VALUE. DELETE OBJECT vCall. END FUNCTION. Esta função é executada diversas vezes ao dia e raramente apresenta este problema de violação, só não consegui identificar o pq que ocorre.
Luiz, eu tive esse problema "Memory Violation (49)" no ambiente de um cliente na execução de alguns programas. Eu resolvi de duas maneiras: - Era OpenEdge 10.2B05 e eu atualizei o service pack para o 08. - Depois mudei todas as chamadas de "_progres" para "mpro". No meu caso é diferente porque é um ambiente Progress caractere. Eu desejo ter ajudado pelo menos com alguma ideia do teu ambiente.