guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ‘staging’ and GNOME updates


From: Ricardo Wurmus
Subject: Re: ‘staging’ and GNOME updates
Date: Thu, 25 Apr 2019 14:57:43 +0200
User-agent: mu4e 1.0; emacs 26.1

Timothy Sample <address@hidden> writes:

> Ricardo Wurmus <address@hidden> writes:
>
>>> After running GNOME 3.28 for a while, I’ve had several crashes.  It used
>>> to crash whenever I opened a URL from Emacs, but fiddling with dconf has
>>> fixed that.  It currently crashes every time I run ERC (I’ve turned on
>>> notifications there), and I can’t seem to fix it.
>>>
>>> Interestingly, there is a discussion about this on the Arch Linux forums
>>> <https://bbs.archlinux.org/viewtopic.php?pid=1778640>.  I’m not sure if
>>> there’s anything useful for us in there, though.
>>
>> This message seems relevant:
>>
>>     https://bbs.archlinux.org/viewtopic.php?pid=1778640#p1778640
>>
>>     My issue was caused by using ubuntu-cairo. It was incompatible with
>>     librsvg 2.42.3, which caused a crash when gnome attempted to load an
>>     SVG when trying to display the notification. It also caused the
>>     close window button to not appear in the overview.
>
> I did see this, but I couldn’t really connect it to the problem at hand.
> It is interesting that the close window buttons in the overview are a
> problem for us, too <https://issues.guix.info/issue/33693>.
>
>>> It looks like GNOME Shell passes some bad icon data into GTK+, which
>>> results in a null filename that gets dereferenced.  (GNOME Shell is not
>>> in the backtrace – it tells GTK+ to run this thread from the
>>> “load_texture_async” function in “st-texture-cache.c”.
>>>
>>> I think the “bad” user files are not the root cause here.  There’s
>>> definitely something wrong with notifications.  (I just plugged in a USB
>>> drive and, sure enough, GNOME Shell crashed.)  The notification daemon
>>> code is written in JavaScript (“js/ui/notificationDaemon.js”).  I
>>> glanced at it and its Git history, but couldn’t find anything.
>>
>> I don’t think it’s notifications per se, but rendering SVGs.  When
>> application_state exists, GNOME shell tries to restore application
>> windows and their icons are likely SVG files that should be rendered.
>>
>> Chris reported elsewhere that GNOME sometimes crashes when the Activity
>> tab is accessed — that’s where the application starter is, which
>> displays icons.
>>
>> I believe we should be using librsvg-next in the closure of gnome-shell.
>> We may also want to use gdk-pixbuf+svg instead of just gdk-pixbuf, but
>> again replacing librsvg with librsvg-next throughout.  I’m guessing that
>> the problem is entirely due to using an outdated variant of librsvg.
>>
>> What do you think?
>
> To be honest, I don’t know.  From my side, I haven’t seen anything that
> suggests SVGs might be the problem.  I just checked an application that
> no longer has an icon since the update, and it doesn’t provide an SVG.
> On the other hand, Emacs, which does provide an SVG, is fine.  I can’t
> find anything in the backtrace that suggests SVG problems either.
>
> That said, software is complicated and this is best lead we have.  Maybe
> the crash I’m seeing is fallback code that gets called when SVGs aren’t
> quite working.  I did try patching GTK+ the other day (for testing
> something else), but gave up when I realized that it means recompiling
> WebKitGTK, which takes forever.  I’ll try and patch everything later and
> leave my computer to compile overnight.  Or, maybe I could pull Epiphany
> out of our GNOME package, and avoid WebKitGTK (now that GNOME Shell
> doesn’t need it).  Either way, I will try and test this.  If nothing
> else, it might fix the bug linked above.

I built the VM with this diff:

--8<---------------cut here---------------start------------->8---
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 5583af576b..98e2a75777 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -2189,7 +2189,7 @@ engineering.")
     (inputs
      `(("gtk+" ,gtk+)
        ("gtk+-2" ,gtk+-2)
-       ("librsvg" ,librsvg)
+       ("librsvg" ,librsvg-next)
        ("libxml2" ,libxml2)
        ("glib" ,glib)))
     (native-inputs
@@ -3278,7 +3278,7 @@ services for numerous locations.")
        ("cups" ,cups)
        ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
        ("libwacom" ,libwacom)
-       ("librsvg" ,librsvg)
+       ("librsvg" ,librsvg-next)
        ("xf86-input-wacom" ,xf86-input-wacom)
        ("wayland" ,wayland)
        ("network-manager" ,network-manager)))
@@ -3864,7 +3864,7 @@ for application developers.")
        ("libxml2" ,libxml2)
        ("libsoup" ,libsoup)
        ("libpeas" ,libpeas)
-       ("librsvg" ,librsvg)
+       ("librsvg" ,librsvg-next)
        ("lirc" ,lirc)
        ("gnome-desktop" ,gnome-desktop)
        ("gstreamer" ,gstreamer)
@@ -4072,7 +4072,7 @@ supports playlists, song ratings, and any codecs 
installed through gstreamer.")
       ("libexif" ,libexif)
       ("libpeas" ,libpeas)
       ("libjpeg" ,libjpeg)
-      ("librsvg" ,librsvg)
+      ("librsvg" ,librsvg-next)
       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
       ("gtk+" ,gtk+)))
    (home-page "https://wiki.gnome.org/Apps/EyeOfGnome";)
@@ -5991,7 +5991,7 @@ properties, screen resolution, and other GNOME 
parameters.")
        ("upower" ,upower)
        ;; XXX: These requirements were added in 3.24, but no mention in NEWS.
        ;; Missing propagation? See also: <https://bugs.gnu.org/27264>
-       ("librsvg" ,librsvg)
+       ("librsvg" ,librsvg-next)
        ("geoclue" ,geoclue)))
     (synopsis "Desktop shell for GNOME")
     (home-page "https://wiki.gnome.org/Projects/GnomeShell";)
@@ -6397,7 +6397,7 @@ associations for GNOME.")
        ("dconf"                     ,dconf)
        ("desktop-file-utils"        ,desktop-file-utils)
        ("eog"                       ,eog)
-       ("epiphany"                  ,epiphany)
+       ;("epiphany"                  ,epiphany)
        ("evince"                    ,evince)
        ("file-roller"               ,file-roller)
        ("gedit"                     ,gedit)
@@ -7267,7 +7267,7 @@ Bluefish supports many programming and markup languages.")
      `(("gdk-pixbuf" ,gdk-pixbuf) ; for loading SVG files.
        ("gtk+" ,gtk+)
        ("gtkmm" ,gtkmm)
-       ("librsvg" ,librsvg)
+       ("librsvg" ,librsvg-next)
        ("libxml2" ,libxml2)
        ("libwnck" ,libwnck)))
     (home-page "https://wiki.gnome.org/Apps/SystemMonitor";)
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 6e63ca6614..b87b3649c3 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -528,7 +528,7 @@ in the GNOME project.")
   (package (inherit gdk-pixbuf)
     (name "gdk-pixbuf+svg")
     (inputs
-     `(("librsvg" ,librsvg)
+     `(("librsvg" ,librsvg-next)
        ,@(package-inputs gdk-pixbuf)))
     (arguments
      '(#:configure-flags '("-Dinstalled-tests=false")
--8<---------------cut here---------------end--------------->8---

GDM shows up but the GNOME shell cannot be started after log in.

It also did not fix the icon problem.

But!  Wrapping gnome-shell in LD_LIBRARY_PATH for gdk-pixbuf does fix
both problems!  With this diff I could log in fine and see the closing
icon in the window overview after starting an application.

--8<---------------cut here---------------start------------->8---
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 5583af576b..0be09a8b4f 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -2189,7 +2189,7 @@ engineering.")
     (inputs
      `(("gtk+" ,gtk+)
        ("gtk+-2" ,gtk+-2)
-       ("librsvg" ,librsvg)
+       ("librsvg" ,librsvg-next)
        ("libxml2" ,libxml2)
        ("glib" ,glib)))
     (native-inputs
@@ -3278,7 +3278,7 @@ services for numerous locations.")
        ("cups" ,cups)
        ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
        ("libwacom" ,libwacom)
-       ("librsvg" ,librsvg)
+       ("librsvg" ,librsvg-next)
        ("xf86-input-wacom" ,xf86-input-wacom)
        ("wayland" ,wayland)
        ("network-manager" ,network-manager)))
@@ -3864,7 +3864,7 @@ for application developers.")
        ("libxml2" ,libxml2)
        ("libsoup" ,libsoup)
        ("libpeas" ,libpeas)
-       ("librsvg" ,librsvg)
+       ("librsvg" ,librsvg-next)
        ("lirc" ,lirc)
        ("gnome-desktop" ,gnome-desktop)
        ("gstreamer" ,gstreamer)
@@ -4072,7 +4072,7 @@ supports playlists, song ratings, and any codecs 
installed through gstreamer.")
       ("libexif" ,libexif)
       ("libpeas" ,libpeas)
       ("libjpeg" ,libjpeg)
-      ("librsvg" ,librsvg)
+      ("librsvg" ,librsvg-next)
       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
       ("gtk+" ,gtk+)))
    (home-page "https://wiki.gnome.org/Apps/EyeOfGnome";)
@@ -5932,7 +5932,8 @@ properties, screen resolution, and other GNOME 
parameters.")
                  `("LD_LIBRARY_PATH" ":" prefix
                    ,(map (lambda (pkg)
                            (string-append (assoc-ref inputs pkg) "/lib"))
-                         '("gnome-bluetooth" "librsvg" "libgweather"))))
+                         '("gdk-pixbuf"
+                           "gnome-bluetooth" "librsvg" "libgweather"))))
                (for-each
                 (lambda (prog)
                   (wrap-program (string-append out "/bin/" prog)
@@ -5969,6 +5970,7 @@ properties, screen resolution, and other GNOME 
parameters.")
        ("evolution-data-server" ,evolution-data-server)
        ("gcr" ,gcr)
        ("gdm" ,gdm)
+       ("gdk-pixbuf" ,gdk-pixbuf+svg)
        ("gjs" ,gjs)
        ("gnome-bluetooth" ,gnome-bluetooth)
        ("gnome-desktop" ,gnome-desktop)
@@ -5991,7 +5993,7 @@ properties, screen resolution, and other GNOME 
parameters.")
        ("upower" ,upower)
        ;; XXX: These requirements were added in 3.24, but no mention in NEWS.
        ;; Missing propagation? See also: <https://bugs.gnu.org/27264>
-       ("librsvg" ,librsvg)
+       ("librsvg" ,librsvg-next)
        ("geoclue" ,geoclue)))
     (synopsis "Desktop shell for GNOME")
     (home-page "https://wiki.gnome.org/Projects/GnomeShell";)
@@ -6397,7 +6399,7 @@ associations for GNOME.")
        ("dconf"                     ,dconf)
        ("desktop-file-utils"        ,desktop-file-utils)
        ("eog"                       ,eog)
-       ("epiphany"                  ,epiphany)
+       ;("epiphany"                  ,epiphany)
        ("evince"                    ,evince)
        ("file-roller"               ,file-roller)
        ("gedit"                     ,gedit)
@@ -7267,7 +7269,7 @@ Bluefish supports many programming and markup languages.")
      `(("gdk-pixbuf" ,gdk-pixbuf) ; for loading SVG files.
        ("gtk+" ,gtk+)
        ("gtkmm" ,gtkmm)
-       ("librsvg" ,librsvg)
+       ("librsvg" ,librsvg-next)
        ("libxml2" ,libxml2)
        ("libwnck" ,libwnck)))
     (home-page "https://wiki.gnome.org/Apps/SystemMonitor";)
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 6e63ca6614..b87b3649c3 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -528,7 +528,7 @@ in the GNOME project.")
   (package (inherit gdk-pixbuf)
     (name "gdk-pixbuf+svg")
     (inputs
-     `(("librsvg" ,librsvg)
+     `(("librsvg" ,librsvg-next)
        ,@(package-inputs gdk-pixbuf)))
     (arguments
      '(#:configure-flags '("-Dinstalled-tests=false")
--8<---------------cut here---------------end--------------->8---

We could skip the librsvg-next changes and only push the LD_LIBRARY_PATH
fix.  If that alone fixes the problems we can do the librsvg stuff on
core-updates later.

Sound good?<

--
Ricardo




reply via email to

[Prev in Thread] Current Thread [Next in Thread]