Ho un problema in cui un processo Python sta colpendo un errore di segmentazione ma non produce un file core.
Quello che segue è un esempio di giocattolo che non produce un file core nelle seguenti distro:
- Ubuntu 12.10
- Fedora 18
ma produce file core nelle seguenti distro:
- Linux scientifico 6
- Mac OS X
La riproduzione:
$ python -c 'import time; time.sleep(120)'&
$ kill -abrt $! [1]+
Aborted python -c 'import time; time.sleep(120)'
$ ls core* ls: cannot access core*: No such file or directory
Tuttavia, se invio un segnale simile a a sleep
istanza ottengo un file principale:
$ sleep 120 &
$ kill -abrt $!
[1]+ Aborted (core dumped) sleep 120
$ ls core*
core.8603
Sulla mia scatola Fedora 18, ecco la mia /proc/sys/kernel/core_pattern
:
$ cat /proc/sys/kernel/core_pattern
core
E ho impostato il seguente:
$ ulimit -c
unlimited
Questo è riproducibile indipendentemente dal fatto che il abrtd
il servizio è in esecuzione o meno.
Sono abbastanza sicuro di aver perso alcune configurazioni di base, ma non so cosa. Grazie!
MODIFICARE : Questo può essere risolvibile eseguendo:
$ echo 1 >/proc/sys/fs/suid_dumpable
suid_dumpable
a 1
? (solo root può farlo)
ls -lL $(which python) ; python -c 'import time; time.sleep(5)' & grep core /proc/$!/limits ; ls -ld "$(readlink /proc/$!/cwd)" ; grep ^Sig /proc/$!/status ; kill $!
La sequenza sarà 1. elenca il binario di Python per verificare se non è suid; 2. elenca l'effettivo limite di base del processo per verificare se non è stato modificato; 3. elenca la directory di lavoro del processo per verificare se è scrivibile dall'utente; 4. elenca le maschere di segnalazione del processo - controlla se il file SIGABRT
(6) mostrando come 0000000000000020
non è bloccato SigBlk
, ignorato SigIgn
o catturato SigCgt
.