What is SEGV_MAPERR?

coredump, linux, posix, segmentation-fault

Solution

There are two common kinds of SEGV, which is an error that results from an invalid memory access:

- A page was accessed which had the wrong permissions. E.g., it was read-only but your code tried to write to it. This will be reported as `SEGV_ACCERR`.

- A page was accessed that is not even mapped into the address space of the application at all. This will often result from dereferencing a null pointer or a pointer that was corrupted with a small integer value. This is reported as `SEGV_MAPERR`.

Documentation of a sort (indexed Linux source code) for `SEGV_MAPERR` is here: https://elixir.bootlin.com/linux/latest/A/ident/SEGV_MAPERR.

Problem

What is `SEGV_MAPERR`, why does it always come up with `SIGSEGV`?

Original source