O daemon é setuid? Processos setuid não despejam arquivos principais por padrão.
Execute sysctl fs.suid_dumpable=1
para ativar dumps setuid.
Temos um daemon interno rodando em algumas caixas RHEL 5 que periodicamente segregam. Nossos desenvolvedores querem um arquivo principal para ajudar com a depuração, mas não posso provocá-lo a produzir um.
$ sudo grep segfault /var/log/messages.1
Aug 11 21:04:13 pal108 kernel: brokend[28692]: segfault at 00000000000000a8
rip 00000031d020f908 rsp 00007fff9c60f3f0 error 4
O daemon é iniciado usando daemon
de /etc/init.d/functions
, portanto, adicionando
DAEMON_COREFILE_LIMIT=unlimited
ao seu arquivo sysconfig
deve definir ulimit
de acordo. Este parece ser o caso, de acordo com procfs
:
$ sudo grep core /proc/$(cat /var/run/brokend.pid)/limits
Max core file size unlimited unlimited bytes
E o padrão do arquivo principal aponta para um local que existe:
$ cat /proc/sys/kernel/core_pattern
"/tmp/core_%p_%e_%t"
No entanto, ainda não produzirá um arquivo principal. Alguma idéia do que poderia estar impedindo isso? Um segfault sempre significa que o sistema operacional tentará produzir um arquivo principal ou ele depende de alguma codificação específica do aplicativo para fazer isso?
O daemon é setuid? Processos setuid não despejam arquivos principais por padrão.
Execute sysctl fs.suid_dumpable=1
para ativar dumps setuid.
Sim, coredumps sempre são escritos quando um sinal é enviado para o processo que produz um núcleo f.e .:
ABRT 6 core
FPE 8 core
ILL 4 core
QUIT 3 core
SEGV 11 core
TRAP 5 core
SYS core might not be implemented
EMT core might not be implemented
BUS core core dump might fail
XCPU core core dump might fail
XFSZ core core dump might fail
echo -n "ulimit: "
ulimit -c
echo -n "For id: "
id -u
echo
no script para testá-lo.
Confira "man core", há um código de exemplo para testar o recurso do coredump. Pelo menos sob o debian existe.
Tags segmentation-fault linux