2013-08-30 1 views
7

Ho uno script python che restituisce lo stato di uscita di -9.uscita improvvisa con stato di -9

Ho cercato di ottenere la radice del problema con il modulo atexit, ma non viene chiamato.

Qualche suggerimento per aiutarmi a trovare il motivo e il punto in cui termina il mio script?

Il problema è riproducibile, Sistema operativo: Linux 3.7.10

risposta

16

La sceneggiatura è stata uccisa dal sistema operativo. I valori di ritorno negativi sono il numero del segnale utilizzato per uccidere il processo.

Lo script ha bisogno di troppa memoria. Ho trovato questo in syslog:

Out of memory: Kill process 26184 (python) score 439 or sacrifice child 
Killed process 26184 (python) total-vm:628772kB, anon-rss:447660kB, file-rss:0kB 
+0

Se si potesse condividere la parte esatta del codice in cui è stata divulgata la memoria, sarebbe meglio la risposta. –

+1

Sono felice di sapere che il sistema operativo ha ucciso il processo perché la memoria era bassa. Perché lo script ha bisogno di molta memoria è un'altra domanda. – guettli

+1

Si noti che lo stato di uscita negativo è specifico del [sottoprocesso modulo] di Python (https://hg.python.org/cpython/file/a889c5524520/Lib/subprocess.py#l1034). Shell [restituirà] (http://tldp.org/LDP/abs/html/exitcodes.html) '128 + signum'. –