我的设备内存较差。过夜运行 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
值代表什么?