easy-installer v0.12.0-beta crashes with "Internal Error" on Linux
Summary
The easy-installer snap package does not run (observed on Ubuntu 18.04 and opensuse Leap 15.2) at all. Starting it from a terminal shows a stack trace containing
Caused by: java.lang.UnsupportedOperationException: Internal Error
The problem
Steps to reproduce
- Install the easy-installer v0.12.0-beta snap package on Linux
- run it (e.g.
snap run easy-installer
)
What is the current behavior?
The easy-installer does not start.
What is the expected correct behavior?
The easy-installer should start.
Technical informations
Relevant logs
Exception in thread "main" java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at java.base/sun.launcher.LauncherHelper$FXHelper.main(Unknown Source)
Caused by: java.lang.UnsupportedOperationException: Internal Error
at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication.lambda$new$6(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication.<init>(Unknown Source)
at javafx.graphics/com.sun.glass.ui.gtk.GtkPlatformFactory.createApplication(Unknown Source)
at javafx.graphics/com.sun.glass.ui.Application.run(Unknown Source)
at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.startup(Unknown Source)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(Unknown Source)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(Unknown Source)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.startToolkit(Unknown Source)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(Unknown Source)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(Unknown Source)
... 5 more
Solutions
Workaround
Run the previous version v0.11.2-beta if you had it installed before and updated to v0.12.0-beta.
snap revert easy-installer --revision 14
I don't know if it is possible to specify an old version when initially installing a snap.
Possible fixes
I assume it's a wrong library version being used.
When run with sudo
one gets a little more output before the stacktrace
/snap/easy-installer/15/gnome-platform/usr/lib/x86_64-linux-gnu/libgtk-3-0/gtk-query-immodules-3.0: symbol lookup error: /snap/easy-installer/15/gnome-platform/usr/lib/x86_64-linux-gnu/libpango-1.0.so.0: undefined symbol: hb_buffer_set_invisible_glyph
g_module_open() failed for /snap/easy-installer/15/gnome-platform/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.so: /snap/easy-installer/15/gnome-platform/usr/lib/x86_64-linux-gnu/libpango-1.0.so.0: undefined symbol: hb_buffer_set_invisible_glyph
The hb_buffer_set_invisible_glyph
is supposed to come from libharfbuzz.
$ ldd /snap/easy-installer/15/gnome-platform/usr/lib/x86_64-linux-gnu/libpango-1.0.so.0
...
libharfbuzz.so.0 => /snap/easy-installer/15/usr/lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007f61671bc000)
This is a symbolic link to libharfbuzz.so.0.10702.0
which indeed does not contain the required symbol
$ strings /snap/easy-installer/15/usr/lib/x86_64-linux-gnu/libharfbuzz.so.0.10702.0 | grep invisible
<no result>
The one from the gnome snap package (libharfbuzz.so.0.20600.2
) does contain the symbol
$ strings /snap/easy-installer/15/gnome-platform/usr/lib/libharfbuzz.so.0.20600.2 | grep invisible
hb_buffer_set_invisible_glyph
hb_buffer_get_invisible_glyph
hb_buffer_get_invisible_glyph
hb_buffer_set_invisible_glyph
Assuming this is the root cause of the "Internal Error" it might be sufficient to remove the older library from the easy-installer snap package so that it would be taken from the gnome snap.
$ ls -l /snap/easy-installer/15/usr/lib/x86_64-linux-gnu/libharfbuzz*
lrwxrwxrwx 1 root root 24 13. Apr 2018 /snap/easy-installer/15/usr/lib/x86_64-linux-gnu/libharfbuzz.so.0 -> libharfbuzz.so.0.10702.0
-rw-r--r-- 1 root root 646064 13. Apr 2018 /snap/easy-installer/15/usr/lib/x86_64-linux-gnu/libharfbuzz.so.0.10702.0
The previous version of the easy-installer did not include libharfbuzz, BTW:
$ ls -l /snap/easy-installer/14/usr/lib/x86_64-linux-gnu/libharfbuzz*
zsh: no matches found: /snap/easy-installer/14/usr/lib/x86_64-linux-gnu/libharfbuzz*