Ocorrência
Tentativa de reservar registro no Alias em EOF Stack de chamadas em MSROCK.eof .Tenta novamente? Essa mensagem será fechada em 5 segundos.
Ambiente
Protheus – Financeiro – A partir da versão 12.1.17
A mensagem “EOF Stack em MSRLOCK” não indica que o registro esteja bloqueado por outro usuário ou processo.
EOF significa End Of File (Fim de Arquivo).
Ou seja, a rotina tentou reservar (lock) um registro para processamento, porém o ponteiro da tabela estava em EOF, indicando que o registro esperado não foi localizado.
Em termos práticos, o erro ocorre quando o sistema tenta manipular um registro que não existe, está inválido ou possui quebra de integridade referencial.
Possíveis Causas
O erro ocorre quando:
A rotina executa um DbSeek() ou lógica equivalente;
O registro não é encontrado na tabela;
Mesmo assim, o sistema tenta realizar um lock (MSRLOCK) sobre esse registro inexistente;
Como o ponteiro está em EOF, o Protheus gera a mensagem e grava o log msrlock.eof.
Portanto, não se trata de concorrência de usuários, mas sim de dados inconsistentes ou inválidos.
Exemplos comuns de causa
Se o erro ocorre, por exemplo, ao gerar ou excluir um Documento de Saída, pode existir inconsistência em algum dado relacionado, como:
TES inválido ou inexistente
Cliente / Fornecedor / Loja com código inexistente
Produto inválido no grid
Condição de pagamento inexistente
Item, natureza, conta, ou outro código referenciado que não exista na tabela correspondente
Ou seja, algum relacionamento necessário para o processamento não foi localizado, causando a tentativa de lock em EOF.
1 Comentários