Что означает код errno 14 (EFAULT)?

 
Также может означать:
КонстантаТипОС
ERROR_OUTOFMEMORYОшибка WindowsWindows
KERN_ABORTEDКод возврата ядра macOSmacOS
ippStsLSFHighСтатус Intel IPPЛюбая
NO_USER_MODE_CONTEXTКод BSODWindows
Предыдущий Следующий
EACCES ENOTBLK

EFAULT

Обычно это ошибка программы

EFAULT обычно не означает неисправность диска, файла или сетевого узла. Ядро не смогло безопасно обратиться к указателю, переданному вызывающим процессом. При чтении буфер назначения может находиться вне доступного адресного пространства; при запуске процесса неверным может быть путь либо элемент argv или envp.

Типичные причины: неинициализированный указатель, обращение после освобождения, неверная компоновка структуры, неправильная длина при формально допустимом буфере или гонка времени жизни в нативном коде. Указатель также может быть корректен сам по себе, но не покрывать весь диапазон байтов, который системный вызов должен использовать.

Как расследовать

  • Зафиксируйте точные аргументы системного вызова, адрес и длину буфера, а также поток в момент отказа.
  • Проверьте владение и время жизни буферов, передаваемых через асинхронные вызовы, callbacks, FFI или границы потоков.
  • Проверяйте размеры до преобразования к типу системного вызова и соблюдайте правила завершения массивов и векторов.
  • Используйте средства контроля памяти и минимальный воспроизводимый пример: повтор с тем же неверным указателем операцию не восстановит.

Ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.