>Acontece que não consigo repetir o erro de forma consistente, ou seja, tem hora que dá e tem hora que não dá.
>Meu próximo passo vai ser descobrir como faze-lo acontecer sempre.
Para reproduzir a situação, experimemte colocar em seu programa uma trecho de código com erro, do tipo
local lnErro
lnErro = lnErro + 1
Gerar erros é fácil :)
>Depois preciso entender porque isto acontece.
O problema acontece quando ocorre um erro que não é tratado. Desta forma é apresentado ao usuário do sistema uma mensagem de erro com as opções "Ignore" e "Cancel". Quando o usuário escolhe a opção "Cancel" o VFP termina a execução de seu programa e sua rotina SairSistema() não vai mais estar na memória. Como vc associou a rotina ao SHUTDOWN do VFP, este irá tentar executá-la ao tentar finalizar e como não vai encontrá-la ocorre o erro que vc já conhece.
[]s
Eugênio
P.S. Caso tenha outros comentários dê um Reply, em vez de criar outra Thread :)