AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 406339
Accepted
sourcejedi
sourcejedi
Asked: 2017-11-23 08:13:09 +0800 CST2017-11-23 08:13:09 +0800 CST 2017-11-23 08:13:09 +0800 CST

Debian Stretch:libgs_plugin_systemd-updates.so 中的 gnome-software 段错误

  • 772

在最新的更新传奇中,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 来重新启动和安装更新。 显然我的父母倾向于直接关闭而不先注销。所以这很好,至少他们在关闭时仍然应该看到“重新启动并安装更新”。(它显示为默认勾选的复选框)。

debian gnome
  • 1 1 个回答
  • 753 Views

1 个回答

  • Voted
  1. Best Answer
    sourcejedi
    2017-12-09T03:22:38+08:002017-12-09T03:22:38+08:00

    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 结合使用。


    一个月后崩溃再次开始,因此我能够捕获以下回溯。

    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-plugin-systemd-updates.c:

    121     split = pk_package_id_split (package_ids[i]);
    122     gs_app_add_source (app, split[PK_PACKAGE_ID_NAME]);
    

    我们上面有 split = 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);
    
    • 1

相关问题

  • 如何在拼音输入法中输入ü?

  • 在 Gnome3 中禁用窗口的自动最大化

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    JSON数组使用jq来bash变量

    • 4 个回答
  • Marko Smith

    日期可以为 GMT 时区格式化当前时间吗?[复制]

    • 2 个回答
  • Marko Smith

    bash + 通过 bash 脚本从文件中读取变量和值

    • 4 个回答
  • Marko Smith

    如何复制目录并在同一命令中重命名它?

    • 4 个回答
  • Marko Smith

    ssh 连接。X11 连接因身份验证错误而被拒绝

    • 3 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Marko Smith

    systemctl 命令在 RHEL 6 中不起作用

    • 3 个回答
  • Marko Smith

    rsync 端口 22 和 873 使用

    • 2 个回答
  • Marko Smith

    以 100% 的利用率捕捉 /dev/loop -- 没有可用空间

    • 1 个回答
  • Marko Smith

    jq 打印子对象中所有的键和值

    • 2 个回答
  • Martin Hope
    EHerman JSON数组使用jq来bash变量 2017-12-31 14:50:58 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Drux 日期可以为 GMT 时区格式化当前时间吗?[复制] 2017-12-26 11:35:07 +0800 CST
  • Martin Hope
    AllisonC 如何复制目录并在同一命令中重命名它? 2017-12-22 05:28:06 +0800 CST
  • Martin Hope
    Steve “root”用户的文件权限如何工作? 2017-12-22 02:46:01 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST
  • Martin Hope
    Cbhihe 将默认编辑器更改为 vim for _ sudo systemctl edit [unit-file] _ 2017-12-03 10:11:38 +0800 CST
  • Martin Hope
    showkey 如何下载软件包而不是使用 apt-get 命令安装它? 2017-12-03 02:15:02 +0800 CST
  • Martin Hope
    youxiao 为什么目录 /home、/usr、/var 等都具有相同的 inode 编号 (2)? 2017-12-02 05:33:41 +0800 CST
  • Martin Hope
    user223600 gpg —list-keys 命令在将私钥导入全新安装后输出 uid [未知] 2017-11-26 18:26:02 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve