Debian Stretch: error de segmentación del software gnome en libgs_plugin_systemd-updates.so

Debian Stretch: error de segmentación del software gnome en libgs_plugin_systemd-updates.so

En la última saga de actualizaciones, gnome-software ha comenzado a tener errores de segmentación. Por supuesto que mis padres no se dan cuenta de esto. Simplemente significa que no recibirán notificaciones de actualizaciones de seguridad y que la PC se volverá horrible e insegura.[1] La primera página de Google no muestra nada para explicar por qué este escritorio Debian no entrega notificaciones de actualizaciones de seguridad (de nuevo, suspiro).

¿Otras personas han visto los siguientes síntomas? ¿Podemos dar una explicación? ¿Admite una solución permanente?

(A falta de la causa raíz: recursos inadecuados para el escritorio Debian, en comparación con otros escritorios).

sudo journalctlsugiere que se trata de una desreferencia de puntero NULL en libgs_plugin_systemd-updates.so. (Los últimos tres dígitos del puntero de instrucción son los mismos en cada caso).

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]

La revista muestra que se estrelló 66 veces antes de hoy, a partir del 18 de octubre de 2017. La versión actual del software gnome se actualizó el 23 de septiembre de 2017. Esto habría sido cuando actualicé la máquina de Debian Wheezy a Stretch. Sé que pude abrir el software gnome inmediatamente después de la actualización.

Hoy fallaba cada vez que lo iniciaba, hasta que seguí los pasos para instalar gnome-software-dbgsym. La eliminación del paquete -dbgsym no hizo que comenzara a fallar nuevamente. Debe haber sido algo sobre el estado de apto. Para el futuro, habilité la captura de rastros al instalar systemd-coredump.

Lo más cercano que puedo encontrar es uncoincidencia de error de segmentación del software gnomeque resultó estar registrado en uninformecontra un programa completamente diferente. Esto apareció en los resultados de "libgs_plugin_systemd-updates segfault". (Supongo que la versión de Kali en cuestión incluía el mismo binario de Debian Stretch). Al buscar más específicamente este mensaje de error de segmentación, el índice de Google actualmente solo incluye el informe Kali y mi pregunta aquí.


$ 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

y apt-get upgradeno mostró actualizaciones pendientes para gnome-software (o 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&

[recorte. esta advertencia ocurre de todos modos cuando no falla]

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

[1] El escritorio Debian no incluye ninguna ventana emergente para indicar fallos.

Mis padres están acostumbrados a él como un sistema multiusuario y es posible que cierren sesión en gdm antes de apagarlo, lo que no mostraría el bonito cuadro para reiniciar e instalar actualizaciones. Aparentemente, mis padres tienden a cerrar sesión directamente sin cerrar sesión primero. Eso es bueno, al menos todavía deberían ver "reiniciar e instalar actualizaciones" cuando se apagan. (Aparece como una casilla de verificación que está marcada de forma predeterminada).

Respuesta1

TL;DR PackageKit tiene errores (específicamente las actualizaciones sin conexión; las diversas referencias a systemd se deben a que las actualizaciones sin conexión se implementan usándolo). Se ahoga con el paquete Google Chrome para Debian. Informé esto aguas arriba.

Puede intentar solucionar este problema instalando pk-update-icony comentando/eliminando/editando la línea NotShowIn=KDE;GNOME;en /etc/xdg/autostart/pk-update-icon.desktop. Tenga en cuenta que si desea realizar una prueba rápida pk-update-icon, es posible que desee ejecutarlo con pk-update-icon --delay=0. Personalmente, combinaría esto con la extensión de Gnome TopIcons Plus, debido a problemas con las notificaciones del ícono.


Los fallos comenzaron de nuevo después de un mes, por lo que pude capturar el siguiente rastro.

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

Código fuentegs-plugin-systemd-updates.c:

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

Hemos dividido = 0x0 (puntero NULL) arriba. pk_package_id_split()devuelve NULL solo cuando la identificación no es válida.

(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

Parece que la identificación no válida es _inc.-stable-main. pkcon get-updatesmuestra solo un paquete que contiene el texto de ambos identificadores. Sin embargo, pkcon get-offline-updatesparece ilustrar el mismo error. ( apt-get --dry-run upgrademuestra que solo hay un paquete actualizable).

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

jajaja. pk-offline.c:

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

información relacionada