Signals
Reasons for why they can happen, besides kill(2):
SIGILL
Number: 4
- Binary was most likely compiled for a different CPU with CPU-specific instructions.
SIGABRT
Number: 6
Program abort(3)ed itself.
- assert() failed.
- Some other self-check failed.
SIGFPE
Number: 8
- Division by zero.
- FIXME: What else?
SIGKILL
Number: 9
- Killed by kernel, for example Linux's Out of Memory killer. dmesg may show the reason.
SIGSEGV
Number: 11
Tried to access unmapped memory.
- Invalid pointer.
- NULL pointer dereference.
- Pointer to memory that was mmap(2)ed at some point, but munmap(2)ed by now.
SIGBUS
Number: 7 (Linux), 10 (Solaris)
- Unaligned memory access with CPU not capable of it.
- mmap(2)ed file on NFS couldn't be read/written.