Debian Stretch: Gnome-Software-Segmentierungsfehler in libgs_plugin_systemd-updates.so

Debian Stretch: Gnome-Software-Segmentierungsfehler in libgs_plugin_systemd-updates.so

In der jüngsten Update-Saga hat die Gnome-Software angefangen, einen Segmentierungsfehler zu verursachen. Meine Eltern bemerken das natürlich nicht. Es bedeutet nur, dass sie keine Benachrichtigungen über Sicherheitsupdates erhalten und der PC schrecklich und unsicher wird.[1] Die erste Seite von Google zeigt nichts, was erklären würde, warum dieser Debian-Desktop keine Benachrichtigungen über Sicherheitsupdates liefert (wieder, seufzen).

Sind die folgenden Symptome auch bei anderen aufgetreten? Können wir eine Erklärung liefern? Gibt es eine dauerhafte Lösung?

(Keine genaue Erklärung für die Grundursache: unzureichende Ressourcen für den Debian-Desktop im Vergleich zu anderen Desktops).

sudo journalctldeutet darauf hin, dass es sich hier um eine NULL-Zeiger-Dereferenzierung in libgs_plugin_systemd-updates.so handelt. (Die letzten drei Ziffern des Befehlszeigers sind in jedem Fall gleich.)

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]

Das Journal zeigt, dass es seit heute 66 Abstürze gab, beginnend am 18.10.2017. Die aktuelle Version von Gnome-Software wurde am 23.09.2017 aktualisiert. Das war, als ich die Maschine von Debian Wheezy auf Stretch aktualisiert habe. Ich weiß, dass ich Gnome-Software unmittelbar nach dem Upgrade öffnen konnte.

Heute stürzte es jedes Mal ab, wenn ich es startete, bis ich die Schritte zur Installation von gnome-software-dbgsym unternahm. Das Entfernen des Pakets -dbgsym führte nicht dazu, dass es erneut abstürzte. Es muss etwas mit dem Zustand von apt zu tun gehabt haben. Für die Zukunft habe ich die Erfassung von Backtraces durch die Installation von aktiviert systemd-coredump.

Das Nächste, was ich finden kann, ist einpassender Gnome-Software-Segmentierungsfehlerdie zufällig in einemBerichtgegen ein völlig anderes Programm. Dies tauchte in den Ergebnissen für „libgs_plugin_systemd-updates segfault“ auf. (Ich vermute, die fragliche Kali-Version enthielt dieselbe Binärdatei von Debian Stretch). Bei einer gezielteren Suche nach dieser Segfault-Meldung enthält der Index von Google derzeit nur den Kali-Bericht und meine Frage hier.


$ 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

und apt-get upgradezeigte keine ausstehenden Updates für Gnome-Software (oder 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&

[snip. diese Warnung erscheint trotzdem, wenn es nicht abstürzt]

&xwayland;2:1.19.2-1+deb9u2;amd64;debian-stable-main' are not valid
Segmentation fault

[1] Der Debian-Desktop verfügt über kein Popup bei Abstürzen.

Meine Eltern sind daran gewöhnt, dass es sich um ein Mehrbenutzersystem handelt, und es ist möglich, dass sie sich vor dem Herunterfahren bei GDM abmelden, sodass das nette Kontrollkästchen zum Neustarten und Installieren von Updates nicht angezeigt wird. Anscheinend neigen meine Eltern dazu, direkt herunterzufahren, ohne sich vorher abzumelden. Das ist also gut, zumindest sollten sie beim Herunterfahren immer noch „Neustart und Updates installieren“ sehen. (Es wird als Kontrollkästchen angezeigt, das standardmäßig aktiviert ist.)

Antwort1

TL;DR PackageKit ist fehlerhaft (insbesondere die Offline-Updates – die verschiedenen Verweise auf systemd liegen daran, dass die Offline-Updates damit implementiert werden). Es versagt beim Google Chrome-Paket für Debian. Ich habe dies upstream gemeldet.

Sie können versuchen, dies zu umgehen, indem Sie installieren und die Zeile in pk-update-iconkommentieren/entfernen/bearbeiten . Beachten Sie, dass Sie es möglicherweise mit ausführen möchten, wenn Sie schnell testen möchten . Persönlich würde ich dies mit der Gnome-Erweiterung TopIcons Plus kombinieren, da es Probleme mit den Benachrichtigungen des Symbols gibt.NotShowIn=KDE;GNOME;/etc/xdg/autostart/pk-update-icon.desktoppk-update-iconpk-update-icon --delay=0


Die Abstürze begannen nach einem Monat erneut, sodass ich den folgenden Backtrace erfassen konnte.

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...)

Quellcodegs-plugin-systemd-updates.c:

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

Wir haben oben split = 0x0 (NULL-Zeiger). pk_package_id_split()gibt nur NULL zurück, wenn die ID ungültig ist.

(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

Die ungültige ID scheint zu sein _inc.-stable-main. pkcon get-updatesZeigt nur ein Paket, das den Text aus beiden IDs enthält. pkcon get-offline-updatesScheint jedoch denselben Fehler darzustellen. ( apt-get --dry-run upgradeZeigt, dass nur ein aktualisierbares Paket vorhanden ist).

$ 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)

Lol. pk-offline.c:

/* return raw package ids */
return g_strsplit (prepared_ids, ",", -1);

verwandte Informationen