| Предыдущий | Следующий |
| EACCES | ENOTBLK |
EFAULT
Обычно это ошибка программы
EFAULT обычно не означает неисправность диска, файла или сетевого узла. Ядро не смогло безопасно обратиться к указателю, переданному вызывающим процессом. При чтении буфер назначения может находиться вне доступного адресного пространства; при запуске процесса неверным может быть путь либо элемент argv или envp.
Типичные причины: неинициализированный указатель, обращение после освобождения, неверная компоновка структуры, неправильная длина при формально допустимом буфере или гонка времени жизни в нативном коде. Указатель также может быть корректен сам по себе, но не покрывать весь диапазон байтов, который системный вызов должен использовать.
Как расследовать
- Зафиксируйте точные аргументы системного вызова, адрес и длину буфера, а также поток в момент отказа.
- Проверьте владение и время жизни буферов, передаваемых через асинхронные вызовы, callbacks, FFI или границы потоков.
- Проверяйте размеры до преобразования к типу системного вызова и соблюдайте правила завершения массивов и векторов.
- Используйте средства контроля памяти и минимальный воспроизводимый пример: повтор с тем же неверным указателем операцию не восстановит.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
