2013-06-07 2 views
0

Недавно я встретил ошибку «Коррумпированная таблица страниц по адресу ffff88007eccb080» с помощью Oops: 0009 [# 1]. С информацией из http://lxr.linux.no/#linux+v3.9.4/arch/x86/mm/fault.c#L29Kernel Ошибка страницы с поврежденной страничной таблицей

Page fault error code bits: 
bit 0 == 0: no page found  1: protection fault 
bit 1 == 0: read access   1: write access 
bit 2 == 0: kernel-mode access 1: user-mode access 
bit 3 ==       1: use of reserved bit detected 
bit 4 ==       1: fault was an instruction fetch 

ошибка происходит из-за ошибки защиты и использование зарезервированного бита обнаруженных. Неужели эти источники действительно вызывают поврежденную таблицу страниц по адресу ffff88007eccb080?

Есть ли в любом случае, что я могу определить, к какому процессу подключен этот виртуальный адрес, и вызвать повреждение по этому адресу?

Спасибо

+0

Вы можете проверить, применяется ли http://lkml.org/lkml/2013/4/14/107 (хотя это код ошибки 000f, а не 0009). – Armali

ответ

0

От https://bugzilla.redhat.com/show_bug.cgi?id=859188#c43:

сообщение "Поврежденные таблицы страниц" происходит, когда код ошибки имеет PF_RSVD бит.

Значок use of reserved bit detected вызывает ошибки.

Адрес ffff88007eccb080 принадлежит к пространству ядра (который является общим для всех процессов), а не к виртуальному виртуальному адресному пространству любого пользовательского процесса.

+0

Я удаляю таблицу страниц ядра и обнаруживаю, что адрес ffff88007eccb080 принадлежит к пространству ядра с низкой памятью, как вы сказали. Таким образом, вы имеете ввиду, так как адрес ffff88007eccb080 принадлежит пространству ядра и общим для всех процессов. Один из процессов занял этот адрес и установил бит PF_RSVD, затем другой процесс пытается записать на этот адрес и вызывает эту ошибку. – Naruto

+0

Когда память ядра повреждена, это должно быть связано с ошибкой в ​​самом ядре или загружаемом модуле или аппаратном обеспечении и т. Д. Если вам повезет, это ошибка, которая уже исправлена ​​в новой версии ядра. – Armali

+0

Другой вопрос: знаете ли вы, где PR_RSVD установлен в исходном коде ядра? – Naruto

Смежные вопросы