Что такое SEGV_MAPERR
, почему он всегда придумывает SIGSEGV
?
Что такое SEGV_MAPERR?
Ответ 1
Это ошибка сегментации. Скорее всего, проблема с висячим указателем или переполнение буфера.
SIGSSEGV
- это сигнал, который завершает его на основе проблемы, ошибки сегментации.
Проверьте наличие оборванных указателей, а также проблему с переполнением.
Включение дампов ядра поможет вам определить проблему.
Ответ 2
Существует два распространенных типа SEGV, который является ошибкой, вызванной недопустимым доступом к памяти:
- Доступ к странице, у которой были неправильные разрешения. Например, он был доступен только для чтения, но ваш код попытался написать ему. Это будет сообщено как SEGV_ACCERR.
- Доступ к странице, которая даже не отображается в адресное пространство приложения. Это часто возникает в результате разыменования нулевого указателя или указателя, который был поврежден с помощью небольшого целочисленного значения. Об этом сообщается как SEGV_MAPERR.
Документация о сортировке (индексированный исходный код Linux) для SEGV_MAPERR находится здесь: http://lxr.free-electrons.com/ident?i=SEGV_MAPERR.