View Single Post
Old 04-06-2023, 12:13 AM   #476
bgme
Junior Member
bgme began at the beginning.
 
Posts: 5
Karma: 10
Join Date: Oct 2017
Device: kindle
EpubCheck plugin bug report

Hi,

The EpubCheck plugin don't work on archlinux.


Environment:

OS: Archlinux Linux 6.2.9-zen1-1-zen
Sigil: 1.9.30 (sigil 1.9.30-2)
EpubCheck: 0.4.6.3
java: java-19-openjdk (jre-openjdk 19.0.2.u7-2), java-17-openjdk (jre17-openjdk 17.0.6.u10-2), java-11-openjdk (jdk11-openjdk 11.0.18.u10-2), java-8-openjdk (jdk8-openjdk 8.362.u09-1)


Steps to reproduce:

1. install sigil and java on archlinux
2. install EpubCheck plugin
3. run EpubCheck plugin

Code:
Status: failed

Running EPUBCheck 5.0.0... please wait.
EPUBCheck Java error.
 Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/lib/jvm/java-19-openjdk/lib/libnio.so: /usr/lib/jvm/java-19-openjdk/lib/libnio.so: undefined symbol: reuseport_available
	at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
	at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:331)
	at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:197)
	at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:139)
	at java.base/jdk.internal.loader.NativeLibraries.findFromPaths(NativeLibraries.java:259)
	at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:249)
	at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:234)
	at java.base/jdk.internal.loader.BootLoader.loadLibrary(BootLoader.java:149)
	at java.base/sun.nio.fs.UnixNativeDispatcher.<clinit>(UnixNativeDispatcher.java:821)
	at java.base/sun.nio.fs.UnixFileSystem.<init>(UnixFileSystem.java:65)
	at java.base/sun.nio.fs.LinuxFileSystem.<init>(LinuxFileSystem.java:39)
	at java.base/sun.nio.fs.LinuxFileSystemProvider.newFileSystem(LinuxFileSystemProvider.java:46)
	at java.base/sun.nio.fs.LinuxFileSystemProvider.newFileSystem(LinuxFileSystemProvider.java:39)
	at java.base/sun.nio.fs.UnixFileSystemProvider.<init>(UnixFileSystemProvider.java:55)
	at java.base/sun.nio.fs.LinuxFileSystemProvider.<init>(LinuxFileSystemProvider.java:41)
	at java.base/sun.nio.fs.DefaultFileSystemProvider.<clinit>(DefaultFileSystemProvider.java:35)
	at java.base/java.util.zip.ZipFile$Source.<clinit>(ZipFile.java:1273)
	at java.base/java.util.zip.ZipFile$CleanableResource.<init>(ZipFile.java:710)
	at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:243)
	at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:172)
	at java.base/java.util.jar.JarFile.<init>(JarFile.java:345)
	at java.base/java.util.jar.JarFile.<init>(JarFile.java:316)
	at java.base/java.util.jar.JarFile.<init>(JarFile.java:255)
	at java.base/sun.launcher.LauncherHelper.getMainClassFromJar(LauncherHelper.java:551)
	at java.base/sun.launcher.LauncherHelper.loadMainClass(LauncherHelper.java:777)
	at java.base/sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:685)

Repair method:

I tried running the command directly in the terminal, and there was no undefined symbol: reuseport_available error.

Code:
/usr/bin/python3 -u /usr/share/sigil/plugin_launchers/python/launcher.py /home/qwe/.local/share/sigil-ebook/sigil/workspace/Sigil-ePiwRL /home/qwe/.local/share/sigil-ebook/sigil/workspace/Sigil-ZotwyA validation /home/qwe/.local/share/sigil-ebook/sigil/plugins/EpubCheck/plugin.py
Code:
/usr/bin/java -Dfile.encoding=UTF8 -jar /home/qwe/.local/share/sigil-ebook/sigil/plugins/EpubCheck/epubcheck.jar /home/qwe/.local/share/sigil-ebook/sigil/plugins/EpubCheck/temp.epub -q --json -
I try to list the environment variables when sigil runs the plugin and found that LD_LIBRARY_PATH was set to /usr/lib .

Code:
for name, value in os.environ.items():
	print("{0}: {1}".format(name, value))
Code:
CLUTTER_BACKEND: wayland
DBUS_SESSION_BUS_ADDRESS: unix:path=/run/user/1000/bus
DEBUGINFOD_URLS: https://debuginfod.archlinux.org
DESKTOP_SESSION: plasmawayland
DISPLAY: :1
EDITOR: vim
GLFW_IM_MODULE: ibus
GTK2_RC_FILES: /etc/gtk-2.0/gtkrc:/home/qwe/.gtkrc-2.0:/home/qwe/.config/gtkrc-2.0
GTK_IM_MODULE: fcitx
GTK_RC_FILES: /etc/gtk/gtkrc:/home/qwe/.gtkrc:/home/qwe/.config/gtkrc
HG: /usr/bin/hg
HOME: /home/qwe
INVOCATION_ID: 78914cb0278e4ce0a0e71e4823c4a149
JOURNAL_STREAM: 8:55434
KDE_APPLICATIONS_AS_SCOPE: 1
KDE_FULL_SESSION: true
KDE_SESSION_UID: 1000
KDE_SESSION_VERSION: 5
LANG: en_US.UTF-8
LD_LIBRARY_PATH: /usr/lib
LIBVA_DRIVER_NAME: radeonsi
LOGNAME: qwe
MAIL: /var/spool/mail/qwe
MANAGERPID: 1195
MOTD_SHOWN: pam
MOZ_ENABLE_WAYLAND: 1
MOZ_USE_XINPUT2: 1
MOZ_WEBRENDER: 1
OLDPWD: /home/qwe
PAM_KWALLET5_LOGIN: /run/user/1000/kwallet5.socket
PATH: /usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/opt/rocm-5.4.3/bin:/opt/rocm-5.4.3/hip/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
PLASMA_USE_QT_SCALING: 1
PWD: /home/qwe
QT_AUTO_SCREEN_SCALE_FACTOR: 0
QT_IM_MODULE: fcitx
QT_QPA_PLATFORM: wayland
QT_QPA_PLATFORMTHEME: qt5ct
QT_WAYLAND_FORCE_DPI: 96
SAL_DISABLE_OPENCL: 1
SDL_IM_MODULE: fcitx
SDL_VIDEODRIVER: wayland
SESSION_MANAGER: local/lenovo:@/tmp/.ICE-unix/1352,unix/lenovo:/tmp/.ICE-unix/1352
SHELL: /bin/zsh
SHLVL: 0
SIGIL_QT_RUNTIME_VERSION: 5.15.8
SIGIL_SHARE_PREFIX: /usr
SYSTEMD_EXEC_PID: 2977
USER: qwe
VDPAU_DRIVER: radeonsi
WAYLAND_DISPLAY: wayland-0
XAUTHORITY: /run/user/1000/xauth_eSyzsK
XCURSOR_SIZE: 24
XCURSOR_THEME: breeze_cursors
XDG_ACTIVATION_TOKEN: kwin-140
XDG_CONFIG_DIRS: /home/qwe/.config/kdedefaults:/etc/xdg
XDG_CURRENT_DESKTOP: KDE
XDG_RUNTIME_DIR: /run/user/1000
XDG_SEAT: seat0
XDG_SEAT_PATH: /org/freedesktop/DisplayManager/Seat0
XDG_SESSION_CLASS: user
XDG_SESSION_DESKTOP: KDE
XDG_SESSION_ID: 2
XDG_SESSION_PATH: /org/freedesktop/DisplayManager/Session1
XDG_SESSION_TYPE: wayland
XDG_VTNR: 1
XMODIFIERS: @im=fcitx
force_s3tc_enable: true
SigilGumboLibPath: /usr/lib/sigil/libsigilgumbo.so
After unset LD_LIBRARY_PATH before running java command, the undefined symbol: reuseport_available error disappeared.

plugin.py.patch

Code:
37a38,42
>     # remove LD_LIBRARY_PATH environment variables
>     # fix UnsatisfiedLinkError: undefined symbol: reuseport_available error
>     # https://bugs.archlinux.org/task/77183
>     os.environ.pop('LD_LIBRARY_PATH', None)
>

Last edited by bgme; 04-06-2023 at 11:06 AM.
bgme is offline   Reply With Quote