Para o desligamento incorreto, você deve poder testar usando máquinas virtuais. Escreva um script para carregar todos os seus aplicativos e serviços. Em seguida, use uma API para eliminar a VM e, em seguida, inicialize-a novamente. Repita ... deixe seu script rodar e veja quanto tempo leva para morrer.
Para erros do kernel: encontre um antigo kernel beta, por exemplo, desde os primeiros dias do Reiser ou XFS ou EXT4. Olhe através das listas de bugs e alterações para encontrar um bug reproduzível.