Ошибки памяти в Ubuntu, но не в MemTest86 +

8

Я получил несколько ошибок btrfs и ext4. После решения проверить мою оперативную память я получил следующие повторяющиеся ошибки с memtester. Я всегда получаю похожие ошибки после небольшого запуска memtester. Обычно через час, но это заняло 4-5 часов за один раз.

Оперативная память моего компьютера запаяна. Я получил дополнительный пустой слот. В BIOS нет настроек для отключения встроенной памяти.

Я побежал:

  • Memtest86 + за 8 проходов (~ 8 часов)
  • MemTest86 на 18 проходов (~ 9 часов)
  • memtesterи stressapptestпо умолчанию Fedora 27, установленный на USB-накопитель (~ 10 часов)
  • memtesterи stressapptestв Ubuntu 17.10 Live по умолчанию (~ 2 часа)
  • memtesterи stressapptestна Ubuntu 17.10 на флешке (~ 8 часов)
  • # debsums --changed единственным измененным файлом было изображение темы.

Они не печатали никаких ошибок.

Я использую Ubuntu 17.10 (обновленный с 17.04) с ядром по умолчанию. Ядро не испорчено. Это ноутбук ASUS с Intel Haswell i3.

  • Также протестировано с Linux 4.14.13 и 4.15.0-rc3, rc4, mainline.
  • Также протестировано с продувкой пакета intel-microcode.

Ошибка воспроизводима, либо Nouveau отключен или включен, двоичные драйверы nvidia не загружены.

Занесены в черный список следующие модули: mtd intel_spi_platform intel_spiпотому что они не загружаются при установке Fedora 27 по умолчанию, и они, кажется, кирпич некоторых ноутбуков Lenova. Ошибки не прекратились.

uname -aвыход

Linux hostname 4.13.0-19-generic #22-Ubuntu SMP Mon Dec 4 11:58:07 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

# lsmodвыход

https://paste.ubuntu.com/26222245/

# lsmodВыход Fedora 27

https://paste.ubuntu.com/26226473/

Текущая ситуация

Я положил свой жесткий диск в ноутбук (резервный ноутбук), который, как я знал, был хорошим, и провел там тесты. Я получил ошибки. Теперь я уверен, что это проблема программного обеспечения. Я никогда не мог вызвать ошибки на своем ноутбуке с новой Ubuntu или с Fedora, пытающейся много-много часов.

Что мне делать?

Образец ошибок:

Loop 6:
  Stuck Address       : ok         
  Random Value        : ok
  Compare XOR         : ok
  Compare SUB         : ok
  Compare MUL         : ok
  Compare DIV         : ok
  Compare OR          : ok
  Compare AND         : ok
  Sequential Increment: ok
  Solid Bits          : ok         
  Block Sequential    : ok         
  Checkerboard        : ok         
  Bit Spread          : ok         
  Bit Flip            : testing 262
FAILURE: 0x00000000 != 0xfffffffeffffffff at offset 0x0ef94000.
FAILURE: 0x00000000 != 0x100000000 at offset 0x0ef94008.
FAILURE: 0x00000000 != 0xfffffffeffffffff at offset 0x0ef94010.
FAILURE: 0x00000000 != 0x100000000 at offset 0x0ef94018.
FAILURE: 0x00000000 != 0xfffffffeffffffff at offset 0x0ef94020.
FAILURE: 0x00000000 != 0x100000000 at offset 0x0ef94028.
FAILURE: 0x00000000 != 0xfffffffeffffffff at offset 0x0ef94030.
FAILURE: 0x00000000 != 0x100000000 at offset 0x0ef94038.
  Walking Ones        : ok         
  Walking Zeroes      : ok         
  8-bit Writes        : ok
  16-bit Writes       : ok

Похожая ошибка с обоими слотами оперативной памяти заполнена:

Loop 1:
  Stuck Address       : ok         
  Random Value        : ok
  Compare XOR         : ok
  Compare SUB         : ok
  Compare MUL         : ok
  Compare DIV         : ok
  Compare OR          : ok
  Compare AND         : ok
  Sequential Increment: ok
  Solid Bits          : ok         
  Block Sequential    : ok         
  Checkerboard        : ok         
  Bit Spread          : testing   4
FAILURE: 0x00000000 != 0x00000050 at offset 0x7da80000.
FAILURE: 0x00000000 != 0xffffffffffffffaf at offset 0x7da80008.
FAILURE: 0x00000000 != 0x00000050 at offset 0x7da80010.
FAILURE: 0x00000000 != 0xffffffffffffffaf at offset 0x7da80018.
FAILURE: 0x00000000 != 0x00000050 at offset 0x7da80020.
FAILURE: 0x00000000 != 0xffffffffffffffaf at offset 0x7da80028.
FAILURE: 0x00000000 != 0x00000050 at offset 0x7da80030.
FAILURE: 0x00000000 != 0xffffffffffffffaf at offset 0x7da80038.
  Bit Flip            : setting 141

Ошибка stressapptest:

Report Error: miscompare : DIMM Unknown : 1 : 157s
Hardware Error: miscompare on CPU 2(0x2) at 0x7fcc0726e000(0xb0d18:DIMM Unknown): read:0x0000000000000000, reread:0x0000000000000000 expected:0x4a4a4a4a4a4a4a4a
Report Error: miscompare : DIMM Unknown : 1 : 157s
Hardware Error: miscompare on CPU 2(0x2) at 0x7fcc0726e008(0xb0d18:DIMM Unknown): read:0x0000000000000000, reread:0x0000000000000000 expected:0x4a4a4a4a4a4a4a4a
Report Error: miscompare : DIMM Unknown : 1 : 157s
Hardware Error: miscompare on CPU 2(0x2) at 0x7fcc0726e010(0xb0d18:DIMM Unknown): read:0x0000000000000000, reread:0x0000000000000000 expected:0x4a4a4a4a4a4a4a4a
Report Error: miscompare : DIMM Unknown : 1 : 157s
Hardware Error: miscompare on CPU 2(0x2) at 0x7fcc0726e018(0xb0d18:DIMM Unknown): read:0x0000000000000000, reread:0x0000000000000000 expected:0x4a4a4a4a4a4a4a4a
Report Error: miscompare : DIMM Unknown : 1 : 157s
Hardware Error: miscompare on CPU 2(0x2) at 0x7fcc0726e020(0xb0d18:DIMM Unknown): read:0x0000000000000000, reread:0x0000000000000000 expected:0x4a4a4a4a4a4a4a4a
Report Error: miscompare : DIMM Unknown : 1 : 157s
Hardware Error: miscompare on CPU 2(0x2) at 0x7fcc0726e028(0xb0d18:DIMM Unknown): read:0x0000000000000000, reread:0x0000000000000000 expected:0x4a4a4a4a4a4a4a4a
Report Error: miscompare : DIMM Unknown : 1 : 157s
Hardware Error: miscompare on CPU 2(0x2) at 0x7fcc0726e030(0xb0d18:DIMM Unknown): read:0x0000000000000000, reread:0x0000000000000000 expected:0x4a4a4a4a4a4a4a4a
Report Error: miscompare : DIMM Unknown : 1 : 157s
Hardware Error: miscompare on CPU 2(0x2) at 0x7fcc0726e038(0xb0d18:DIMM Unknown): read:0x0000000000000000, reread:0x0000000000000000 expected:0x4a4a4a4a4a4a4a4a

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

Неважно, слабо связанная информация ниже

Об ошибках btrfs; Я использовал 17.04. Я спрашивал в btrfs 'irc. Мне сказали, что это может быть аппаратная ошибка или ошибка управления памятью. Часть страницы метаданных btrfs была заполнена нулями, как я уже испытывал сейчас. Я запустил memtester всего за несколько проходов, переключился на ext4 и возложил вину на двоичный драйвер nvidia.

Команды и их параметры, которые я использую:

# stressapptest -M 10000 -s 1800

10000 - это доступная память, которую я могу проверить. Я получаю это через free -m-s` секунды.

# memtester 4096

Процессор ноутбука имеет 2 ядра, поэтому я обычно запускаю два экземпляра. 4096 это половина текущей доступной памяти черезfree -m

Артём
источник
1
Я бы заменил плохую оперативную память, но я не знаю, возможно ли это с запаянными чипами оперативной памяти. Достаточно ли новый компьютер для замены в рамках гарантии?
Судод
@sudodus Да, его гарантия еще не истекла. Я RMA, если я не могу найти решение. Я обнаружил, что, несмотря на то, что нет официального способа, люди нашли способы отключить запаянные бараны на некоторых ноутбуках, перепрыгивая через некоторые контрольные точки.
Артём
Чтобы быть более уверенным, попробуйте memtest86+с любой установки Ubuntu LiveCD.
N0rbert
@ N0rbert Я провел несколько тестов с memtest86 - умиротворяющим - с отрицательными результатами. Но они были короткие -4 повторения, сегодня вечером я проведу тест на ночь.
Артём
2
@sudodus, я полагаю, что memtest86 + может проверить собственную память, однако это не должно быть проблемой. Да, я несколько раз ремонтировал раздел ext4, так как он сломался, вероятно, из-за ошибок, связанных с памятью. К сожалению, я не смог восстановить раздел btrfs, так как каким-то образом метаданные были повреждены до того, как они были записаны на диск, и мой раздел btrfs, вероятно, распространил их с помощью скраба btrfs и испортил некоторые из них.
Артём

Ответы:

1

Удаленный ответ был близок

Ответ на этот вопрос и ответы был удален:

Вы уже пытались переустановить Ubuntu, потому что это звучит как сбой управления памятью на уровне ОС

Мой ответ аналогичен, поскольку включает управление памятью очень низкого уровня; KASLR на уровне ядра.

Что делает KASLR

KASLR означает K ernel ddress S Темп L ayout R andomization. Я никогда не слышал это вслух, но, по-моему, я произнес это «Casler». Подумайте, дружелюбный призрак в машине. KASLR - это мера безопасности для рандомизации того, какие области памяти находятся в модулях ядра. Теория состоит в том, что ядро ​​сложнее взломать, когда нельзя полагаться на один и тот же фрагмент кода, всегда находящийся в одной и той же области памяти.

Операция KASLR может рассматриваться как противоположность тестерам памяти, которые периодически читают и записывают в те же области памяти, не ожидая ИЗМЕНЕНИЙ. Эти противоположности привлекли меня (идиома заметила), чтобы выполнить поиск в Google по KASLR и ошибкам памяти. В частности, один, казалось бы, не связанный, может заслуживать сообщения на github со ссылкой на эти вопросы и ответы. Причина в том, что они думают, что они единственные, на кого влияет смещение адресов памяти (если я правильно читаю их поток). Первые три попадания принадлежат RedHat, на который я не хочу ссылаться, потому что их веб-сайты являются частичными публикациями для поисковых роботов Google, а затем они заставляют вас платить за чтение.

Существуют известные проблемы, когда KASLR загружает «ядро» ядра в середину карты памяти, чего не должно быть. К сожалению, я не могу вспомнить ссылку, которую я нашел на прошлой неделе, чтобы включить в ответ сегодня вечером. Ссылка содержала патч / обходной путь для указания KASLR не использовать определенные области памяти.

После подтверждения известных проблем с KASLR и областями памяти я прокомментировал вопрос об отключении KASLR и повторном запуске тестов памяти. В ответе указано, что он, похоже, успешен, поэтому я публикую этот ответ.

Как отключить KASLR

Хотя я использую параметр командной строки ядра grub "kaslr" уже пару лет, он стал ядром по умолчанию, начиная с версии 4.12 . Чтобы исключить загрузку KASLR, используйте edit /etc/default/grubи измените эту строку:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nokaslr"

У вас могут быть другие варианты, кроме «тихий» и «всплеск». Важным шагом является добавление «nokaslr» и оставление других параметров на месте.

Затем сохраните файл и запустите:

sudo update-grub

Конечно, другой способ отключить KASLR - просто использовать старое ядро, например 4.4.0, в Ubuntu 16.04.1, когда KASLR не был автоматически включен.

WinEunuuchs2Unix
источник
0

Проблема очень похожа на случайное повреждение бит ОЗУ. По моему опыту, MemTest86 - «слишком простой» тест для аппаратного обеспечения. Он найдет действительно плохую память, но небольшие проблемы часто останутся незамеченными.

Если вы хотите узнать, хорошая ли у вас память, попробуйте запустить Prime95 в режиме самопроверки / пыток, настроенном на использование как можно большего объема оперативной памяти.

Еще одним хорошим тестом является проведение двухстороннего теста на гребном молотке в течение нескольких часов.

Я верю, что если Prime95 и двухсторонний гребной молот не могут найти проблем с вашей памятью, это, вероятно, работает правильно. Тем не менее, простой запуск MemTest86, компиляция программ, установка ОС, игра в игры могут показаться работающими, даже если у вас немного плохая память (там было, сделали это - и получили поврежденные данные в долгосрочной перспективе).

Микко Ранталайнен
источник