Что такое SEGV_MAPERR? - PullRequest
       27

Что такое SEGV_MAPERR?

67 голосов
/ 16 июня 2009

Что такое SEGV_MAPERR, почему оно всегда приходит SIGSEGV?

Ответы [ 2 ]

162 голосов
/ 23 января 2015

Существует два распространенных типа SEGV , что является ошибкой в ​​результате неверного доступа к памяти:

  1. Была получена страница с неправильными разрешениями. Например, это было только для чтения, но ваш код пытался записать в него. Это будет сообщено как SEGV_ACCERR .
  2. Была получена страница, которая вообще не отображается в адресном пространстве приложения. Это часто будет результатом разыменования нулевого указателя или указателя, который был поврежден с небольшим целочисленным значением. Это сообщается как SEGV_MAPERR .

Документация вида (индексированный исходный код Linux) для SEGV_MAPERR находится здесь: http://lxr.free -electrons.com / идент? I = SEGV_MAPERR .

38 голосов
/ 16 июня 2009

Это ошибка сегментации. Скорее всего, проблема с висящим указателем или переполнение буфера.

SIGSSEGV - это сигнал, который завершает его в зависимости от проблемы, ошибки сегментации.

Проверьте наличие висячих указателей, а также проблему переполнения.

Включение дампов ядра поможет вам определить проблему.

...