Os programas executados em segundo plano podem fazer bom uso do tratamento de um SIGSEGV, apenas para registrar o fato de que isso aconteceu junto com o contexto antes de sair. Isso fornece não apenas uma indicação do que deu errado em um arquivo de log, mas também informações úteis para incluir em um relatório de bug. Sim, o sinal pode ser ignorado, mas isso é somente através de ação deliberada e quase sempre é uma má ideia (a menos que você esteja testando em um kernel experimental com um subsistema vmm com bugs conhecidos).
Infelizmente, uma vez que o sinal é capturado, QUALQUER COISA é suspeita. Por exemplo, usar qualquer coisa que aloque memória no manipulador SEGV é muito provavelmente uma má idéia. O mesmo vale para funções variadicas como printf (). Então, sim, enquanto um aplicativo está lidando com o sinal, ele pode não estar fazendo isso de forma eficaz, por isso você só vê vestígios dele no dmesg.
De qualquer forma, sim, o sinal é enviado para a aplicação, no entanto SEGV não é um sinal em tempo real e pode ser mesclado pelo kernel. Ou seja, se um programa acessa a memória, ele não tem permissão para acessar 15 vezes, há uma boa chance de que apenas um SEGV seja realmente entregue, dependendo do tempo de acesso à memória ilegal.
Em manipuladores SEGV, open () write () e close () são seus amigos e usam um registro de depuração especial (por exemplo, um fluxo FILE de registro que pode ter sido aberto anteriormente).