Xが非常に大きい場合、「Xのsegfault」カーネルログメッセージはどういう意味ですか?

Xが非常に大きい場合、「Xのsegfault」カーネルログメッセージはどういう意味ですか?

私のデバイスのメモリが不足しています。一晩memtestを実行すると、失敗したすべてのアドレスが0x7d0000000 - 0x7f0000000この範囲内にあることがわかりました。 RAMを交換する予定ですが、それまでは周囲の2GBチャンクを無効にしましたmemmap=

# cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-6.5.0-25-generic root=UUID=5277c53f-b2cd-4301-8fdf-0b2119430870 ro memmap=2G$0x0000000790000000 quiet splash vt.handoff=7

次のコマンドラインオプションはカーネルで認識されているようです。

[    0.000000] user-defined physical RAM map:
[    0.000000] user: [mem 0x0000000000000000-0x000000000009efff] usable
[    0.000000] user: [mem 0x000000000009f000-0x00000000000fffff] reserved
[    0.000000] user: [mem 0x0000000000100000-0x0000000019e6a017] usable
[    0.000000] user: [mem 0x0000000019e6a018-0x0000000019e7ae57] usable
[    0.000000] user: [mem 0x0000000019e7ae58-0x000000002cb82fff] usable
[    0.000000] user: [mem 0x000000002cb83000-0x000000002ed2ffff] reserved
[    0.000000] user: [mem 0x000000002ed30000-0x000000002edacfff] ACPI data
[    0.000000] user: [mem 0x000000002edad000-0x000000002f29bfff] ACPI NVS
[    0.000000] user: [mem 0x000000002f29c000-0x000000002fd0efff] reserved
[    0.000000] user: [mem 0x000000002fd0f000-0x000000002fd0ffff] usable
[    0.000000] user: [mem 0x000000002fd10000-0x000000003cffffff] reserved
[    0.000000] user: [mem 0x00000000e0000000-0x00000000efffffff] reserved
[    0.000000] user: [mem 0x00000000fe000000-0x00000000fe010fff] reserved
[    0.000000] user: [mem 0x00000000fec00000-0x00000000fec00fff] reserved
[    0.000000] user: [mem 0x00000000fed00000-0x00000000fed03fff] reserved
[    0.000000] user: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
[    0.000000] user: [mem 0x00000000ff000000-0x00000000ffffffff] reserved
[    0.000000] user: [mem 0x0000000100000000-0x000000078fffffff] usable
[    0.000000] user: [mem 0x0000000790000000-0x000000080fffffff] reserved
[    0.000000] user: [mem 0x0000000810000000-0x00000008beffffff] usable

ただし、通常、予約されたアドレス範囲内でまだセグフォルトが発生します。

Mar 09 20:47:40 srv0 kernel: udisksd[656]: segfault at 7fe974786218 ip 00007fe974786218 sp 00007ffcd10d1848 error 7 in libbd_swap.so.3.0.0[7fe974785000+2000] likely on CPU 7 (core 3, socket 0)

~によるとこのページ、これはudiskdが予約されたアドレスに書き込もうとしていると解釈する必要があります0x7fe974786218(エラー7)。一見すると、この0x7fアドレスはmemtestで見つかった不良RAMと一致しているように見えますが、140 TBの値を指すため、サイズは数桁異なります。私のコンピュータには32GBがあります。

メモリアドレスではない場合、segfault at Xこの値は何を表しますか?

ベストアンサー1

ここでアドレス空間が混乱しています。仮想メモリ~のudisksプロセスのプロセスアドレス空間。予約しました物理アドレス空間

セグメントは、プロセスが物理ページにマップされていないか、アクセスが許可されていない仮想メモリアドレスにアクセスしようとしたときに発生します。

物理アドレスと仮想アドレスは互いに関連しません。仮想アドレスを物理アドレスにマッピングするテーブルを保持することがプロセッサの機能である。メモリ管理ユニット。ここで問題は、ソフトウェアが間違ったメモリアドレスにアクセスしたことです。つまり、バグです。

もちろん、バグはソフトウェアのバグではないかもしれませんが、予約されていない破損したRAMによって引き起こされるという事実は誰も知りません。昨夜のメモリテストが今日もまだ有効であるという保証はありません。特に、複数の物理アドレス範囲に問題がある場合は、さらにそうです。正直なところ、あなたがやっていることは非常に危険です。あなたはあなたのメモリがランダムにデータを破損する可能性があることを知っており、問題のあるすべてのメモリを理想的に保持してその使用を防ぎたいと思います。パソコンを使って行う場合問題、私はそうしません。メモリを交換する予定だったので、RAMモジュール全体を削除してください。可能であれば、再度作業を開始するか、RAMをすばやく交換してください。

おすすめ記事