[GRASS-user] GRASS 7 error code 9

Glynn Clements glynn at gclements.plus.com
Sat Nov 19 17:08:37 EST 2011

Hamish wrote:

> note that at a region size of 46341 x 46341 we
> get to 2^31 cells, and to the point where a signed
> 32bit integer overflows and wraps backwards on
> itself. If that were the case I'd suspect a malloc
> error or a segfault not SIGKILL, but it may be a
> clue.

The value of 9 indicates that the child process (etc/r.watershed.seg)
terminated either with exit(9) or due to signal 9 (SIGKILL). The
latter seems more likely (i.e. SIGKILL from the kernel's "OOM-killer"
is quite likely for a process which uses too much memory, while I
can't see any mechanism by which exit(9) would occur).

If the kernel runs low on either physical or virtual memory, it
identifies a process which is using a lot of memory and kills it as if
by sending SIGKILL (although SIGKILL isn't actually "sent"; it can't
be blocked, ignored or caught, so the kernel just deletes the process;
if the parent calls wait() etc on the process, it is reported that the
process was terminated via SIGKILL).

AFAICT, r.watershed requires far more memory than just the size of the
underlying raster data. It's possible that it isn't interpreting the
memory= parameter correctly. It's also possible that the kernel is
including the memory used for caching the segment file in deciding
which process to kill.

Glynn Clements <glynn at gclements.plus.com>

More information about the grass-user mailing list