Sem saber mais alguma informação, especialmente a natureza do processo envolvido, eu teria que dizer, sim, eu acho que está morrendo entre pidof
e kill
. Você poderia usar killall
em vez de basicamente todo o seu bloco de código. A condição de corrida ainda estaria presente, mas a janela seria mais curta.
Because in all likelihood this code is fine and in fact something else kills the process between the two lines, is there "what killed me" diagnostic sort of checker thing somewhere that I could use to at least debug why I'm getting these warnings?
O envio de sinais não é registrado no UNIX, então você não pode, em geral, saber "o que me matou". O que você poderia fazer facilmente, pelo menos, é executar o processo em questão em um script de shell wrapper. Isso pode pelo menos registrar o motivo pelo qual o processo morreu.
#!/bin/sh
proc
logger "proc died with status $?"
$?
estará entre 0 e 127 se o processo sair normalmente e maior que 128 se tiver morrido devido ao recebimento de um sinal, com o número do sinal sendo $?
-128.