Package: libglib2.0-0 Version: 2.58.2-4 Severity: normal Tags: patch upstream
Dear Maintainer, Upstream bug has been fixed, see: https://gitlab.gnome.org/GNOME/glib/issues/1645 Tested that applying e695ca9f310c393d8f39694f77471dbcb06daa9e.patch from issue on the debian package fixes the issue for me. * What led up to the situation? Opening gtk file dialog or file browser, root being btrfs subvolume probably related. * What was the outcome of this action? Crash on assertion. (pcmanfm:7963): GLib-GIO-CRITICAL **: 12:39:01.511: g_unix_is_system_fs_type: assertion 'fs_type != NULL && *fs_type != '\0'' failed (pcmanfm:7963): GLib-GIO-CRITICAL **: 12:39:01.511: g_unix_is_system_device_path: assertion 'device_path != NULL && *device_path != '\0'' failed * What outcome did you expect instead? Not crash. -- System Information: Debian Release: buster/sid APT prefers unstable APT policy: (500, 'unstable') Architecture: arm64 (aarch64) Kernel: Linux 4.19.16 (SMP w/6 CPU cores; PREEMPT) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /usr/bin/dash Init: systemd (via /run/systemd/system) Versions of packages libglib2.0-0 depends on: ii libc6 2.28-5 ii libffi6 3.2.1-9 ii libmount1 2.33.1-0.1 ii libpcre3 2:8.39-11 ii libselinux1 2.8-1+b1 ii zlib1g 1:1.2.11.dfsg-1 Versions of packages libglib2.0-0 recommends: ii libglib2.0-data 2.58.2-4 ii shared-mime-info 1.10-1 ii xdg-user-dirs 0.17-2 libglib2.0-0 suggests no packages. -- no debconf information
>From e695ca9f310c393d8f39694f77471dbcb06daa9e Mon Sep 17 00:00:00 2001 From: Ondrej Holy <oh...@redhat.com> Date: Wed, 9 Jan 2019 11:04:13 +0100 Subject: [PATCH] gunixmounts: Fix segfaults caused by new filter of mounts Commit ed88b23f added libmount-based implementation to filter out mounts with repeated device path. Unfortunately, this introduced a new bug, which may cause segfaults from in certain configurations. The problem is that `mnt_table_uniq_fs ()` is called from the loop which already operates with the `fs` structs from that table. It may happen that the current `fs` is removed from the table, which may consequently lead to segfaults. Closes: https://gitlab.gnome.org/GNOME/glib/issues/1645 --- gio/gunixmounts.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gio/gunixmounts.c b/gio/gunixmounts.c index 8cbd70f5f..6dc774158 100644 --- a/gio/gunixmounts.c +++ b/gio/gunixmounts.c @@ -486,6 +486,11 @@ _g_get_unix_mounts (void) if (mnt_table_parse_mtab (table, NULL) < 0) goto out; + /* Use only the first mount for device, see comment from _g_get_unix_mounts + * in #else branch. + */ + mnt_table_uniq_fs (table, MNT_UNIQ_FORWARD, uniq_fs_source_cmp); + iter = mnt_new_iter (MNT_ITER_FORWARD); while (mnt_table_next_fs (table, iter, &fs) == 0) { @@ -494,11 +499,6 @@ _g_get_unix_mounts (void) unsigned long mount_flags = 0; gboolean is_read_only = FALSE; - /* Use only the first mount for device, see comment from _g_get_unix_mounts - * in #else branch. - */ - mnt_table_uniq_fs (table, MNT_UNIQ_FORWARD, uniq_fs_source_cmp); - device_path = mnt_fs_get_source (fs); if (g_strcmp0 (device_path, "/dev/root") == 0) device_path = _resolve_dev_root (); -- 2.18.1