절전 모드에서 깨어난 직후 SIGSEGV 주소 경계 오류

절전 모드에서 깨어난 직후 SIGSEGV 주소 경계 오류

에서 다시 시작한 후 hybrid-sleep로그인할 수 있으며( ) 처음에는 괜찮은 것 같습니다 . swaylock예상대로 작동하고 절전 모드 로 전환해도 셸은 여전히 ​​열려 있습니다.pwdjournalctl -xe

그러나 잠시 후 수십 초 후에 종료하면 journalctl(실제로 잠자기 상태인지 확인하고 싶었을 뿐) CPU 부하가 증가하고 팬이 회전하는 소리가 들립니다. 동시에 동일한 셸에서 실행하려고 하는 모든 작업도 함께 들립니다( pwd다시). 예) SIGSEGV - 주소 경계 오류가 발생합니다.

그래서 종료 명령도 내릴 수 없어서 전원 버튼을 이용해 강제 종료해야 합니다. 재부팅 후 journalctl --boot=-1잠자기 상태가 된 후에도 항목이 없으며 깨어나지 않은 것 같습니다. 나는 그것들이 RAM에만 저장되어 있고 종료할 때 동일한 세그폴트로 디스크에 쓰지 못한다고 가정합니다.

동작은 매우 불규칙합니다. 위의 초안을 작성한 후 다시 테스트하여 swaylock전체 비밀번호 대신 단일 키를 입력하여 "로그인"(우회)할 수 있었지만 개방형(복구) 셸에서 실행을 시도했습니다. 명령이 터미널 에뮬레이터와 충돌하고 이전과 마찬가지로 명령을 다시 열 수 없습니다(키 바인딩이 실행하는 명령도 segfault일 수 있음).

원인이 무엇인지 어떤 아이디어가 있습니까? 아니면 시스템이 안정적인 경우에도 로그에 액세스하지 않고 어떻게 디버깅할 수 있나요?


관련성이 있을 수 있는 일부 정보. 관련성이 있거나 의심스러운 정보를 제안할 수 있는 사람이 있으면 더 편집하겠습니다.

# /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&boot resume_offset커널 매개변수를 사용하여 부팅하지 않았다는 것입니다. 나는 이것이 최대 절전 모드 부팅이 아닌 재개 부팅에만 필요하다고 생각했습니다.그렇지 않은 것 같다.

관련 정보