O aplicativo recebe o SIGKILL no desligamento do sistema, por que não o SIGTERM?

1

Usamos nosso aplicativo Java em X que começa em /etc/X11/Xsessions.d/9999ngoma

root@denis-laptop:~# uname -a
Linux denis-laptop 2.6.32-36-generic #79-Ubuntu SMP Tue Nov 8 22:29:26 UTC 2011 i686 GNU/Linux

Começa como uma substituição de tela inteira do GDM. Quando o sistema é desligado, parece que nosso aplicativo recebe SIGKILL e não SIGTERM (essa é a razão pela qual alguns recursos não são armazenados no disco).

Como isso pôde acontecer?

Também devo avisar, mais uma vez, que o aplicativo é iniciado exclusivamente por /etc/X11/Xsessions.d/9999ngoma . Exclusivamente significa que o Gnome é carregado somente após a saída do aplicativo (eu simplesmente não sei outra maneira de executar o aplicativo exclusivamente no X). Pode ser que o GDM receba SIGTERM e, em seguida, SIGKILL filho que não foi concluído durante o processo de inicialização da sessão do GDM (script no diretório Xsession.d).

    
por archer 20.12.2011 / 10:44

1 resposta

2

É 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.

    
por 12.02.2012 / 22:07

Tags