在最新的更新传奇中,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 包并没有让它再次开始崩溃。这一定是关于 apt 的状态。对于未来,我通过安装systemd-coredump
.
我能找到的最接近的是匹配的 gnome-software 段错误,它恰好记录在针对完全不同程序的报告中。这出现在“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,这不会显示漂亮的 tickybox 来重新启动和安装更新。 显然我的父母倾向于直接关闭而不先注销。所以这很好,至少他们在关闭时仍然应该看到“重新启动并安装更新”。(它显示为默认勾选的复选框)。
TL;DR PackageKit 有问题(特别是离线更新 - 对 systemd 的各种引用是因为离线更新是使用它实现的)。它阻塞了 Debian 的 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 结合使用。一个月后崩溃再次开始,因此我能够捕获以下回溯。
源代码gs-plugin-systemd-updates.c:
我们上面有 split = 0x0 (NULL 指针)。 pk_package_id_split()仅在 id 无效时返回 NULL。
似乎无效的 id 是
_inc.-stable-main
.pkcon get-updates
仅显示一个包含来自两个 id 的文本的包。但是pkcon get-offline-updates
似乎说明了相同的错误。(apt-get --dry-run upgrade
显示只有一个可升级包)。哈哈。 pk-offline.c: