절전 모드에서 깨어날 때 우분투 18.04 오류 : 스왑 장치에서 읽기 오류 APIC 0x3 [64046.478371]

랩톱을 몇 시간 동안 절전 모드로 전환 한 후 세션을 다시 시작하려고하면 다음 오류가 발생합니다.

스왑 장치의 읽기 오류

로그인 화면에이 상황이 발생한 후로드하는 데 약 30 초가 걸립니다. 로그인하면 화면이 1 ~ 2 초 동안 공백으로 표시되며 더 이상 열려있는 프로그램이 없습니다. “시스템 문제가 감지되었습니다”라는 메시지가 나타납니다. “보고서 보내기”를 클릭하면 다음과 같은 알림이 나타납니다.

“Xorg”프로그램이 예기치 않게 종료되었습니다. 컴퓨터에 사용 가능한 메모리가 부족하여 문제를 자동으로 분석하고 개발자에게 보고서를 보낼 수 있습니다.

지금까지 시도한 것은 사용 가능한 스왑 공간을 늘리는 것입니다. 처음에는 약 2GB였으며 9GB의 다른 스왑 파일을 만들었습니다. 이것은 도움이되지 않았습니다. 충돌 후 점유 된 스왑 공간 (swapon 명령에 따라)은 항상 약 170MB입니다.

세션을 다시 시작할 때의 스왑 장치에서 읽기 오류까지의 DMESG는 다음과 같습니다.

[64046.474054] ACPI : 저수준 이력서 완료
[64046.474162] ACPI : EC : EC 시작
[64046.474162] PM : 플랫폼 NVS 메모리 복원
[64046.475139] 비 부팅 CPU 활성화 ...
[64046.475196] x86 : 부팅 SMP 구성 :
[64046.475196] smpboot : 부팅 노드 0 프로세서 1 APIC 0x2
[64046.475663] 캐시 : 부모 cpu1이 잠자기 상태가 아니어야합니다.
[64046.475859] CPU1이 가동되었습니다
[64046.475910] smpboot : 부팅 노드 0 프로세서 2 APIC 0x4
[64046.476330] 캐시 : 부모 cpu2가 잠자기 상태가 아니어야합니다.
[64046.476506] CPU2가 가동되었습니다
[64046.476539] smpboot : 부팅 노드 0 프로세서 3 APIC 0x6
[64046.477071] 캐시 : 부모 cpu3이 잠자기 상태가 아니어야합니다.
[64046.477255] CPU3이 작동 중입니다
[64046.477274] smpboot : 부팅 노드 0 프로세서 4 APIC 0x1
[64046.477721] 캐시 : 부모 cpu4가 잠자기 상태가 아니어야합니다.
[64046.477922] CPU4가 작동 중입니다
[64046.477947] smpboot : 부팅 노드 0 프로세서 5 APIC 0x3
[64046.478371] 캐시 : 부모 cpu5가 잠자기 상태가 아니어야합니다.
[64046.478571] CPU5가 작동 중입니다
[64046.478591] smpboot : 부팅 노드 0 프로세서 6 APIC 0x5
[64046.479018] 캐시 : 부모 cpu6이 잠자기 상태가 아니어야합니다.
[64046.479229] CPU6이 작동 중입니다
[64046.479247] smpboot : 부팅 노드 0 프로세서 7 APIC 0x7
[64046.479675] 캐시 : 부모 cpu7이 잠자기 상태가 아니어야합니다.
[64046.479899] CPU7이 가동 중입니다
[64046.485913] ACPI : 시스템 절전 상태 S3에서 깨어남
[64046.639206] ACPI : EC : 이벤트 차단 해제
[64046.639711] sd 2 : 0 : 0 : 0 : [sda] 디스크 시작
[64046.873289] usb 1-11 : xhci_hcd를 사용하여 최고 속도 USB 장치 번호 2 재설정
[64046.976869] ata4 : SATA 링크 다운 (SStatus 4 SControl 300)
[64046.976892] ata2 : SATA 링크 다운 (SStatus 4 SControl 300)
[64047.149289] usb 1-6 : xhci_hcd를 사용하여 고속 USB 장치 번호 40 재설정
[64047.437370] psmouse serio1 : 시냅틱 : 쿼리 된 최대 좌표 : x [..5660], y [..4570]
psmouse serio1 : 시냅틱 : 쿼리 된 최소 좌표 : x [1364 ..], y [1284 ..]
[64047.922603] OOM 킬러가 활성화되었습니다.
[64047.922605] 작업 재시작 중 ... 완료
[64047.928727] 열 Thermal_zone1 : 열 영역을 읽지 못했습니다 (-61).
[64047.930036] 블루투스 : hci0 : 부트 로더 수정 버전 0.0 빌드 2 주 52 2014
[64047.935036] 블루투스 : hci0 : 기기 개정판이 5입니다
[64047.935037] 블루투스 : hci0 : 보안 부팅이 활성화되었습니다
[64047.935038] 블루투스 : hci0 : OTP 잠금 사용
[64047.935038] 블루투스 : hci0 : API 잠금 사용
[64047.935039] 블루투스 : hci0 : 디버그 잠금이 비활성화되었습니다.
[64047.935040] 블루투스 : hci0 : 최소 펌웨어 빌드 1 주 10 2014
[64047.935042] 블루투스 : hci0 : 장치 펌웨어 찾기 : intel / ibt-11-5.sfi
[64047.944372] PM : 종료 일시 중지
[64048.050329] 스왑 장치의 읽기 오류 (8 : 0 : 1543400288)
[64048.460888] [drm] RC6 켜짐

다른 정보가 필요하면 알려주십시오.



답변

현재 사용중인 Ubuntu 18.04 커널에 중요한 버그 수정이 누락되었습니다.

이에 대한 픽스는 이미 업스트림 Linux 커널 버전 4.16.8에 있습니다. (정지 버그는 커널 버전 4.15에서 효과적으로 시작되었습니다). 우분투는이 작은 패치를 업스트림에서 선택하기 만하면됩니다. 이 버그로 인해 일시 중단 직후 Xorg가 중단됩니다. 즉, 전체 그래픽 로그인 세션이 중단됩니다.

이 버그는 종종 표시 되지 않고 발생합니다 Read-error on swap device. 대부분의 경우 커널 로그에 오류가 없었습니다. (A 몇 번, 그것은 보였다 EXT4-fs errorBuffer I/O error대신). 또한 이러한 오류 메시지는 하드웨어 오류로 인해 발생할 수 있습니다. 이 문제를 진단 할 때는보다 분명한 다른 세부 사항에 중점을 두십시오.

테스트 커널은이 우분투 버그가 끝날 때 사용할 수 있습니다 (예 : https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1776887/comments/5).

지금까지 아무도 우분투 테스트 커널을 중단 한 결과를보고 한 사람이 없습니다. 누군가가 성공을보고 할 수 있다면 우분투 개발자가 마침내 버그 수정을 포함하도록 권장 할 것입니다. 그래도 잘못 될 수 있습니다. 이걸 어떻게 잡고 있는지 100 % 확실하지 않습니다.

알려진 해결 방법도 있습니다. 옵션을 포함하도록 커널 명령 행을 구성하면 충돌을 피할 수 있습니다 scsi_mod.scan=sync.

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1776887


이 업스트림 버그는 Ubuntu 사용자에게 영향을주는 것으로 확인되었습니다 [1]. 수정 커밋 (아래)에 따라 가장 빈번한 증상은 랩탑이 시스템 절전 모드에서 해제 될 때 Xorg / Xwayland의 충돌, 즉 전체 GUI를 종료하는 것입니다. 버그 빈도는 며칠에 한 번 설명됩니다 [2].

[1] 예를 들어이 사용자는 버그 및 매우 구체적인 해결 방법을 확인합니다 :
https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/1760450/comments/11

[2] 예를 들어 다음과 같은 충돌 로그 :
https://bugzilla.redhat.com/show_bug.cgi?id=1553979#c23

이것은 blk-core.c의 버그입니다. 하나의 하드웨어 드라이버에만 국한되지는 않습니다. 기술적으로 suspend 버그는 모든 SATA 장치에서 사용하는 SCSI 코어에 의해 트리거됩니다 .

이 커밋에는 끔찍한 버그가 있음을 빠르고 안정적으로 입증하는 테스트도 포함됩니다.

NVMe에 루트가있는 경우에만이 버그를 피할 수 있습니다. Xorg 충돌을 피하는 다른 방법은 모든 RAM을 사용하지 않으면 Xorg의 콜드 페이지가 바뀌는 압력이 없습니다. 또한 즉시 일시 중지 + 다시 시작하면 Xorg 충돌이 재현되지 않습니다. (이것은 한 시점에서 테스트를 좌절 시켰으며, 점심 시간에 시스템이 중단 된 후에 만 ​​트리거되었습니다.)

수정 : “블록 : 어디서나 인터럽트 대기를 사용하지 마십시오”

커널 4.17 :
https://github.com/torvalds/linux/commit/1dc3039bc87ae7d19a990c3ee71cfd8a9068f428

커널 4.16.8 :
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/?h=linux-4.16.y&id=7859056bc73dea2c3714b00c83b253d4c22bf7b6

4.15.0-24.26 (ubuntu 18.04)의 수정 사항 없음 :
https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/bionic/tree/block/blk-core.c ? id = 우분투 -4.15.0-24.26 # n856

즉,이 버그는 여전히 우분투 소스 패키지 linux-4.15.0-24.26 (및 4.15.0-23.25)에 있습니다. 이 버그가 발생하는 것으로 알려진 시스템의 하드웨어 정보 (lspci-vnvn.log)를 첨부합니다.

앨런 감사합니다

해결 방법 : 커널 매개 변수 사용 : scsi_mod.scan = sync


답변