É possível que o aplicativo, seu processo pai ou qualquer um de seus pais tenha definido o sinal SIGTERM a ser ignorado. Essa configuração é herdada entre chamadas para fork () e persiste entre exec ().
Você pode diagnosticar isso usando strace (1) nos vários processos e enviando manualmente um SIGTERM. Se a saída de strace mostrar o sinal sendo recebido, ele não o estará ignorando.