Aplicativo parcialmente travando? Como posso capturar exceções inatacáveis?

Eu tenho um programa escrito em C #, executando em um dispositivo Windows CE (no Compact Framework). Ele processa ações mínimas do usuário (cliques no botão), usa porta serial e comunicação TCP / IP.

O problema é que às vezes o software é desligado por si próprio. Em segundo plano, o aplicativo (ou partes do aplicativo) ainda parece estar em execução (pelo menos em um caso documentado) porque usa a porta serial, portanto, reiniciar o aplicativo não ajuda. Não consigo reproduzir o problema, pois ocorre na maioria dos casos em que não há interação do usuário, nenhuma comunicação de porta serial e a comunicação de rede são todas as mensagens "ainda estou vivo", o software trava aparentemente sem motivo. (Eu tento fazer com que isso aconteça no modo de depuração para saber pelo menos onde está o problema no código, se for um erro de software, mas até agora não tive sorte).

Como estou ficando sem ideias, a pergunta é: qual bug ou exceção, ação do SO ou mau funcionamento do hardware pode causar esse comportamento?

O problema foi observado em diferentes dispositivos do mesmo tipo, portanto, não deve haver erro de hardware. (Ou todo o meu hardware tem o mesmo erro.) As exceções são tratadas, portanto não deve ser uma exceção. As exceções não tratadas também são tratadas, portanto, também não deve ser uma exceção não tratada. (Meu palpite é que é causado por umStackoverflowException porque não conheço outras exceções que não possam ser capturadas, mas não há recursão no código, pelo menos não de boa vontade, portanto também não deve ser uma possibilidade.)

questionAnswers(3)

yourAnswerToTheQuestion