从睡眠中醒来后不久 SIGSEGV 地址边界错误

从睡眠中醒来后不久 SIGSEGV 地址边界错误

从 a 恢复后hybrid-sleep,我可以登录 ( swaylock),最初看起来没问题 -按预期运行pwdjournalctl -xe当我将其置于睡眠状态时,shell 仍然打开。

但过了一会儿,几十秒,当我退出时journalctl(我只是想确认它实际上已经睡着了)CPU 负载增加,我听到风扇旋转,以及我尝试在同一个 shell 中运行的任何内容(pwd再次) ,比如说)导致 SIGSEGV - 地址边界错误。

因此,我什至无法发出关闭命令,因此我必须使用电源按钮强制关闭它。重新启动后,journalctl --boot=-1进入睡眠状态后就没有任何条目,就像从未醒来一样。我假设当我看到它们时,它们仅存储在 RAM 中,当我关闭时,它无法将它们写入具有相同段错误的磁盘。

该行为非常不稳定 - 在起草上述内容后,我再次测试并能够swaylock通过输入单个键(而不是我的完整密码)来“登录”(绕过),但我尝试在打开(恢复)shell 中运行的任何命令都会导致终端仿真器崩溃,并且和以前一样,我无法再重新打开任何命令(我的键绑定运行的命令可能也出现段错误)。

有什么想法可能是什么原因吗?或者甚至当系统稳定时我如何在不访问日志的情况下调试它?


一些可能相关的信息,如果有人可以提出可能相关/可疑的内容,我将编辑更多内容:

# /etc/systemd/system/swapfile.swap
[Unit]
Description=providing a swapfile

[Swap]
What=/swapfile
Priority=20

[Install]
WantedBy=multi-user.target
# /etc/systemd/system/swapfile-creation.service
[Unit]
Description=creating a swap file at /swapfile
ConditionPathExists=!/swapfile
Before=swapfile.swap

[Service]
Type=oneshot
ExecStart=/bin/sh -c 'dd if=/dev/zero of=/swapfile bs=1M count="$(expr "$(cat /sys/power/image_size)" / 1024 / 1024)" status=progress'
ExecStart=/usr/bin/chmod 600 /swapfile
ExecStart=/usr/bin/mkswap /swapfile

[Install]
RequiredBy=swapfile.swap

我本来要包含该systemd-boot条目(或我用来创建它的脚本),但实际上我意识到我还没有测试过断电情况——这是从 RAM 恢复时发生的。我将仔细检查(未使用的)磁盘暂挂是不是罪魁祸首,它在从普通恢复时不起作用systemctl suspend

答案1

我不确定具体原因;但我的问题的根源最终是我没有用resume&启动resume_offset内核参数启动。我原以为这些只是在恢复启动时才需要;不是冬眠的靴子,而是似乎并非如此

相关内容