LoginSignup
1
0

More than 1 year has passed since last update.

ubuntu 22.04のgnomeのエラーがでていた原因を調べたらメモリが壊れていた

Posted at

要約

ubuntu 22.04でGUIログインしたら,「システムプログラムの問題が見つかりました」が表示されるようになった.
ログを眺めると,gnomeのプロセスがシグナル11でkillされていた.
gnomeを入れなおしても同様にシグナル11でkillされるので,メモリ故障を疑い,memtest86を実行した.
すると,特定のメモリだけErrorを吐くことが分かった.

本題

環境

CPU : AMD Ryzen Threadripper
RAM : Corsair Memory 16GB x4 (合計 64GB)
GPU : GeForce RTX 4090
OS : Ubuntu 22.04

主用途は深層学習の実行である.

状況

遠隔ログインでサーバを使おうと毎朝ログインを試みても使えないという苦情があった.
また,Gnomeのログイン画面でも,マウスカーソルは動くがクリックが効かず,キーボードの反応もないという状態であった.
サーバを強制終了しもう一度起動すると,動作が重いもののGnomeのログイン画面からログインでき,webブラウザやterminalを使うことができた.
ログインに成功すると,「システムプログラムの問題が見つかりました」が表示され,詳細を確認するとgnomeのプロセスがシグナル11でkillされていることが分かった.

対応1

gnomeのプログラムが何かの影響で破損してしまったのではないかと考え,gnomeを入れなおすことにした.

$ sudo apt install ubuntu-desktop --reinstall

しかし,状況は改善せず,gnomeのプロセスがシグナル11でkillされていることが分かった.

対応2

linuxがシグナル11でkillするときは,不正なメモリ参照をしたときである.
gnomeが不正なメモリ参照をするようなプログラムだとは考えにくいので,メモリが破損して,おかしいメモリ参照をしているのではないかと疑った.
メモリチェックツールとして有名なmemtest86を走らせることにした.
memtest86は以下の手順で導入した.

$ wget https://www.memtest86.com/downloads/memtest86-usb.zip
$ unzip memtest86-usb.zip
$ /sbin/gdisk -l memtest86-usb.img
[省略]
Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048          524287   255.0 MiB   0700  MemTest86
   2          524288         1048575   256.0 MiB   EF00  EFI System Partition
   3         1048576         2097118   512.0 MiB   0700  DMA Test Partition
## 重要なのは EFI System PartitionのStart sector

$ sudo mkdir -p /mnt
$ sudo mount -o loop,offset=$(({EFI System PartitionのStart sector}*512)) memtest86-usb.img /mnt/ ##今回はoffset=$((524288*512))
$ cd /mnt
$ sudo mkdir /boot/efi/EFI/memtest
$ sudo cp -r EFI/BOOT/* /boot/efi/EFI/memtest
$ df -h | grep efi
/dev/nvme0n1p1              93M  5.2M   88M   6% /boot/efi
## 重要なのは 左側のfilesystem

$ efibootmgr -v
BootCurrent: 0001
Timeout: 1 seconds
BootOrder: 0001,0002,0003,0004
Boot0001* ubuntu        HD(1,GPT,833852b7-45e0-42d9-8e19-5dbf6e9c2b7d,0x800,0x2f000)/File(\EFI\ubuntu\shimx64.efi)
Boot0002* UEFI:CD/DVD Drive     BBS(129,,0x0)
Boot0003* UEFI:Removable Device BBS(130,,0x0)
Boot0004* UEFI:Network Device   BBS(131,,0x0)
## 重要なのはBootCurrentで指定されている値(今回は0001)と,そのBoot0001のHD(1,...)にある始めの数字(今回は1)である

$ sudo efibootmgr -c --disk {/boot/efiのある左側のfilesystem} --part {Boot000xのHDの始めの値} --loader /EFI/memtest/BOOTX64.efi --label "memtest"
## 具体例は以下のようになる
$ sudo efibootmgr -c --disk /dev/nvme0n1p1 --part 1 --loader /EFI/memtest/BOOTX64.efi --label "memtest"

## ここはBoot000xの順番を見て,memtestが前から2番目になるようにする
$ sudo efibootmgr -o 1,5,2,3,4

以下のコマンドを打つと,再起動時にmemtestが起動するようになる.

$ sudo efibootmgr -n 2

このようにして導入したmemtest86を実行すると,Errorが頻繁に起こることを確認した.
メモリを一枚ずつ差し,一つ一つ確認すると,Errorが頻繁に起こるメモリが1枚のみあった.
これより,メモリが破損していることが確認された.

参考にしたサイト

https://pyopyopyo.hatenablog.com/entry/20160528/p1
https://qiita.com/foursue/items/8548c4402c0651ba5aaa

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0