최신 업데이트에서 gnome-software가 세그폴트를 시작했습니다. 물론 부모님은 이 사실을 눈치 채지 못하실 겁니다. 이는 보안 업데이트에 대한 알림을 받지 못하고 PC가 끔찍하고 안전하지 않게 된다는 것을 의미합니다. [1] Google의 첫 번째 페이지에는 이 Debian 데스크톱이 보안 업데이트 알림을 제공할 수 없는 이유를 설명하는 내용이 전혀 표시되지 않습니다(다시,한숨을 쉬다).
혹시 다음 증상을 본 사람이 있나요? 설명을 해드릴까요? 영구적인 수정을 인정합니까?
(근본 원인 누락: Debian 데스크톱은 다른 데스크톱에 비해 리소스가 부족합니다.)
sudo journalctl
libgs_plugin_systemd-updates.so의 NULL 포인터 역참조임을 나타냅니다. (명령 포인터의 마지막 세 자리는 각 경우에 동일합니다.)
Nov 22 14:59:39 drystone kernel: pool[2781]: segfault at 0 ip 00007f86c4d6f6d6 sp 00007f86b92249d0 error 4 in libgs_plugin_systemd-updates.so[7f86c4d6e000+2000]
로그에 따르면 2017년 10월 18일부터 오늘까지 66번 충돌이 발생했습니다. gnome-software의 현재 버전이 2017-09-23으로 업그레이드되었습니다. 내 컴퓨터를 Debian Wheezy에서 Stretch로 업그레이드했을 때 이런 일이 일어났습니다. 업그레이드 후 즉시 gnome-software를 열 수 있다는 것을 알고 있습니다.
오늘은 시작할 때마다 gnome-software-dbgsym을 설치하기 전까지 충돌이 발생합니다. -dbgsym 패키지를 제거해도 다시 충돌이 시작되지 않았습니다. 아파트의 상태와 관련이 있어야 합니다. 미래를 위해 systemd-coredump
.
내가 찾을 수 있는 가장 가까운 것은그놈 소프트웨어 분할 오류 일치방금 로그인했어요보고서완전히 다른 프로그램의 경우. 이는 "libgs_plugin_systemd-updates segfault"의 결과에 나타납니다. (문제의 Kali 버전에는 Debian Stretch와 동일한 바이너리가 포함되어 있는 것으로 추측됩니다.) 이 오류 메시지를 좀 더 구체적으로 검색해 보면 현재 Google 색인에는 Kali 보고서와 내 질문만 포함되어 있습니다.
$ apt-cache policy gnome-software
gnome-software:
Installed: 3.22.5-1
Candidate: 3.22.5-1
Version table:
*** 3.22.5-1 500
500 http://ftp.uk.debian.org/debian stretch/main amd64 Packages
100 /var/lib/dpkg/status
그리고 apt-get upgrade
gnome-software(또는 packagekit)에 보류 중인 업데이트가 없음을 보여줍니다.
$ gnome-software
14:59:38:0408 Gs failed to call gs_plugin_add_updates_historical on packagekit-offline: The package id's 'curl;7.52.1-5+deb9u2;amd64;debian-stable-main&
[전단. 이 경고는 충돌이 발생하지 않을 때 발생합니다.]
&xwayland;2:1.19.2-1+deb9u2;amd64;debian-stable-main' are not valid
Segmentation fault
[1] Debian 데스크탑에는 충돌 팝업이 없습니다.
우리 부모님은 이것을 다중 사용자 시스템으로 사용하는 데 익숙하셨고 시스템을 종료하기 전에 gdm에서 로그아웃하실 수도 있습니다. 이는 재부팅 및 업데이트 설치를 위한 멋진 체크박스를 표시하지 않습니다. 저희 부모님은 먼저 로그아웃도 하지 않고 그냥 종료하시는 편이신 것 같아요. 좋습니다. 최소한 종료할 때 "다시 시작하고 업데이트 설치"라는 메시지가 표시되어야 합니다. (기본적으로 체크박스로 나타납니다.)
답변1
TL;DR PackageKit에는 버그가 있습니다(특히 오프라인 업데이트 - systemd에 대한 다양한 참조는 이를 사용하여 오프라인 업데이트가 구현되기 때문입니다). 이는 데비안용 Google Chrome 패키지를 질식시킵니다. 나는 이것을 업스트림에보고했습니다..
pk-update-icon
의 행을 설치하고 주석 달기/제거/편집하여 NotShowIn=KDE;GNOME;
이 문제를 해결할 수 있습니다 /etc/xdg/autostart/pk-update-icon.desktop
. 빠르게 테스트하려면 pk-update-icon
를 사용하여 실행해야 할 수도 있습니다 pk-update-icon --delay=0
. 개인적으로 아이콘 알림 문제로 인해 Gnome 확장 TopIcons Plus와 결합하겠습니다.
한 달 후 크래시가 다시 시작되어 다음과 같은 역추적을 캡처할 수 있었습니다.
Thread 9 "pool" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffcffff700 (LWP 2689)]
gs_plugin_add_updates (plugin=0x555555885d00, list=0x555557735af0, cancellable=<optimized out>, error=<optimized out>)
at gs-plugin-systemd-updates.c:122
(gdb) bt full 3
#0 gs_plugin_add_updates (plugin=0x555555885d00, list=0x555557735af0, cancellable=<optimized out>, error=<optimized out>) at gs-plugin-systemd-updates.c:122
app = 0x5555558af7c0
split = 0x0
i = 1
error_local = 0x0
package_ids = 0x7fffc0073d00
#1 0x00005555555ad795 in gs_plugin_loader_run_results (plugin_loader=plugin_loader@entry=0x555555849c30, function_name=0x5555555ca453 "gs_plugin_add_updates", flags=2228800, cancellable=cancellable@entry=0x555557764b60, error=error@entry=0x7fffcfffeaf0) at gs-plugin-loader.c:723
error_local = 0x0
ptask2 = 0x7fffc006c030
list = 0x555557735af0
plugin_func = 0x7fffe405d600 <gs_plugin_add_updates>
plugin = 0x555555885d00
exists = <optimized out>
ret = <optimized out>
i = 8
ptask = 0x7fffc00757f0
__func__ = "gs_plugin_loader_run_results"
#2 0x00005555555ad9b7 in gs_plugin_loader_get_updates_thread_cb (task=0x555558116a70, object=0x555555849c30, task_data=0x7fffc40bd520, cancellable=0x555557764b60) at gs-plugin-loader.c:1171
method_name = <optimized out>
state = 0x7fffc40bd520
error = 0x0
ret = <optimized out>
(More stack frames follow...)
소스 코드gs-플러그인-systemd-updates.c:
121 split = pk_package_id_split (package_ids[i]);
122 gs_app_add_source (app, split[PK_PACKAGE_ID_NAME]);
위에서는 분할 = 0x0(NULL 포인터)입니다. pk_package_id_split()ID가 유효하지 않은 경우에만 NULL이 반환됩니다.
(gdb) p package_ids[0]
$1 = (gchar *) 0x7fffc407f720 "google-chrome-stable;63.0.3239.84-1;amd64;google"
(gdb) p package_ids[1]
$2 = (gchar *) 0x7fffc4087e20 "_inc.-stable-main"
(gdb) p package_ids[2]
$3 = (gchar *) 0x0
(gdb) p i
$5 = 1
ID가 잘못된 것 같습니다 _inc.-stable-main
. pkcon get-updates
두 개의 ID 텍스트가 포함된 패키지만 표시합니다. 그러나 pkcon get-offline-updates
동일한 오류를 나타내는 것 같습니다. ( apt-get --dry-run upgrade
업그레이드 가능한 패키지 하나만 표시)
$ pkcon get-updates
Normal google-chrome-stable-63.0.3239.84-1.amd64 (google,_inc.-stable-main) The web browser from Google
$ pkcon offline-get-prepared
Prepared updates:
google-chrome-stable-63.0.3239.84-1.amd64
(null)
ㅋ. pk-offline.c:
/* return raw package ids */
return g_strsplit (prepared_ids, ",", -1);