gdk-pixbuf loaders.cache path difference causing crash in arch-based distro (manjaro)
It would crash around every hour with an a logged error that began like this:
ct 12 01:30:44 tt43 riseup-vpn_riseup-vpn.desktop[14397]: Gtk:ERROR:../../../../gtk/gtkiconhelper.c:494:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /org/gtk/libgtk/icons/48x48/status/image-missing.png: Unrecognized image file format (gdk-pixbuf-error-quark, 3)
Oct 12 01:30:44 tt43 riseup-vpn_riseup-vpn.desktop[14397]: SIGABRT: abort
The crash would always be preceded by this error:
Oct 01 16:13:31 tt43 bitmask-systray[1227]: Cannot open pixbuf loader module file '/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders.cache': No such file or directory
This likely means that your installation is broken.
Try running the command
gdk-pixbuf-query-loaders > /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders.cache
to make things work again for the time being.
Oct 01 16:13:31 tt43 bitmask-systray[1227]: Could not load a pixbuf from icon theme.
The problem was because bitmask-systray was looking for the loaders.cache file in /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0 which is presumably the debian path to this file. In arch there is no "x86_64-linux-gnu" directory, so the required path is /usr/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
Once it became clear that the path difference was the problem, this a symlink made a good workaround:
ln -sr /usr/lib /usr/lib/x86_64-linux-gnu
Since creating this symlink it has not crashed at all. I understand that this project is being developed on debian and probably isn't intending to support arch-based distos. I primarily post this here so that anyone else having the same problem will find it.