Python randomly exits with Linux OS error -9 or -15

Cameron Simpson cs at zip.com.au
Mon Apr 9 19:24:36 EDT 2012


On 09Apr2012 12:02, Janis <janis.viksne at gmail.com> wrote:
| Thank you all for the help! I will need to think a bit about the other
| suggestions.
| 
| But, Alan, as to this:
| > > How do you get -9 and -15? Exit status is supposed to be between 0 and
| > > 127.
| 
| I have the following code that has caught these:
| 
| p = subprocess.Popen([Config.PYTHON_EXE,'Load.py',"%s" % (row[1],)],
| bufsize=0, executable=None, stdin=None, stdout=None,
| stderr=subprocess.PIPE, preexec_fn=None, close_fds=False, shell=False,
| cwd='../Loader/')
| stdout, stderr = p.communicate()
| if p.returncode != 0:
| ...
| 
| So you say it's SIGKILL and SIGTERM? Then I guess these could be
| misleading statuses from those cases when I have terminated the
| sessions myself, and when there is the real problem apparently the
| caller detected nothing here. SIGKILL and SIGTERM would probably also
| explain why there was nothing in stderr.

It is certainly SIGKILL and SIGTERM. See citation from docs below.

Background: wait() and its modern counterpart waitpid() put the process exit
status into an int, which is signed.

The exit status seen _in_the_shell_ is as described (0-255) but the raw
status from the OS is encoded in an int, and will generally be negative
is the process terminated from a signal. You're meant (in C) to inspect
it via a set of macros which understand this stuff.

If you read the documentation for the subprocess module it says:

  Popen.returncode

    The child return code, set by poll() and wait() (and indirectly by
    communicate()). A None value indicates that the process hasn’t terminated
    yet.
    A negative value -N indicates that the child was terminated by signal N
    (Unix only).

So there you go. SIGKILL and SIGTERM, definitely.

RTFM. It is your friend.

Cheers,
-- 
Cameron Simpson <cs at zip.com.au> DoD#743
http://www.cskk.ezoshosting.com/cs/

Gabriel Genellina: See PEP 234 http://www.python.org/dev/peps/pep-0234/
Angus Rodgers:
  You've got to love a language whose documentation contains sentences
  beginning like this:
    "Among its chief virtues are the following four -- no, five -- no,
    six -- points: [...]"
from python-list at python.org



More information about the Python-list mailing list