flathub / org.octave.Octave

https://flathub.org/apps/details/org.octave.Octave
16 stars 12 forks source link

plotting is broken with nvidia drivers #327

Closed dasergatskov closed 7 months ago

dasergatskov commented 8 months ago

Currently octave cannot plot on computer with proprietary nvidia drivers (crashes with signal 6). Looking further I noticed:

[📦 org.octave.Octave ~]$ ldd /app/bin/octave-cli
    linux-vdso.so.1 (0x00007ffe20904000)
    liboctinterp.so.11 => /app/lib/octave/8.4.0/liboctinterp.so.11 (0x00007fe809c00000)
    liboctave.so.10 => /app/lib/octave/8.4.0/liboctave.so.10 (0x00007fe808c00000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fe808800000)
    libgcc_s.so.1 => /usr/lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fe80b13f000)
    libc.so.6 => /usr/lib/x86_64-linux-gnu/libc.so.6 (0x00007fe808400000)
    libhdf5.so.310 => /app/lib/libhdf5.so.310 (0x00007fe808000000)
    libGraphicsMagick++.so.12 => /app/lib/libGraphicsMagick++.so.12 (0x00007fe80b0ba000)
    libGraphicsMagick.so.3 => /app/lib/libGraphicsMagick.so.3 (0x00007fe807c00000)
    libz.so.1 => /usr/lib/x86_64-linux-gnu/libz.so.1 (0x00007fe80b09f000)
    libcholmod.so.4 => /app/lib/libcholmod.so.4 (0x00007fe808aa2000)
    libumfpack.so.6 => /app/lib/libumfpack.so.6 (0x00007fe80872c000)
    libamd.so.3 => /app/lib/libamd.so.3 (0x00007fe80b08f000)
    libcamd.so.3 => /app/lib/libcamd.so.3 (0x00007fe80b07f000)
    libcolamd.so.3 => /app/lib/libcolamd.so.3 (0x00007fe80b075000)
    libccolamd.so.3 => /app/lib/libccolamd.so.3 (0x00007fe809bf3000)
    libcxsparse.so.4 => /app/lib/libcxsparse.so.4 (0x00007fe808a6b000)
    libsuitesparseconfig.so.7 => /app/lib/libsuitesparseconfig.so.7 (0x00007fe809bed000)
    libfftw3_threads.so.3.6.9 => /app/lib/libfftw3_threads.so.3.6.9 (0x00007fe808a61000)
    libfftw3.so.3.6.9 => /app/lib/libfftw3.so.3.6.9 (0x00007fe808626000)
    libfftw3f_threads.so.3.6.9 => /app/lib/libfftw3f_threads.so.3.6.9 (0x00007fe808a55000)
    libfftw3f.so.3.6.9 => /app/lib/libfftw3f.so.3.6.9 (0x00007fe807f03000)
    libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007fe807b72000)
    libGLU.so.1 => /app/lib/libGLU.so.1 (0x00007fe807afd000)
    libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007fe807aaf000)
    libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007fe8079ee000)
    libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fe8078a6000)
    libgl2ps.so.1 => /app/lib/libgl2ps.so.1 (0x00007fe8083e7000)
    libm.so.6 => /usr/lib/x86_64-linux-gnu/libm.so.6 (0x00007fe8077c3000)
    libgomp.so.1 => /usr/lib/x86_64-linux-gnu/libgomp.so.1 (0x00007fe80777a000)
    libcurl.so.4 => /usr/lib/x86_64-linux-gnu/libcurl.so.4 (0x00007fe8076d7000)
    libarpack.so.2 => /app/lib/libarpack.so.2 (0x00007fe80768e000)
    libqrupdate.so.1 => /app/lib/libqrupdate.so.1 (0x00007fe807665000)
    libopenblas.so.0 => /app/lib/libopenblas.so.0 (0x00007fe805198000)
    libreadline.so.8 => /usr/lib/x86_64-linux-gnu/libreadline.so.8 (0x00007fe80513f000)
    libpcre2-8.so.0 => /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007fe8050a4000)
    libgfortran.so.5 => /usr/lib/x86_64-linux-gnu/libgfortran.so.5 (0x00007fe804c00000)
    libquadmath.so.0 => /usr/lib/x86_64-linux-gnu/libquadmath.so.0 (0x00007fe80505c000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fe80b17e000)
    libwebp.so.7 => /usr/lib/x86_64-linux-gnu/libwebp.so.7 (0x00007fe804fe9000)
    libwebpmux.so.3 => /usr/lib/x86_64-linux-gnu/libwebpmux.so.3 (0x00007fe808a42000)
    liblcms2.so.2 => /usr/lib/x86_64-linux-gnu/liblcms2.so.2 (0x00007fe804f83000)
    libtiff.so.5 => /usr/lib/x86_64-linux-gnu/libtiff.so.5 (0x00007fe804efb000)
    libjpeg.so.62 => /usr/lib/x86_64-linux-gnu/libjpeg.so.62 (0x00007fe804b58000)
    libpng16.so.16 => /usr/lib/x86_64-linux-gnu/libpng16.so.16 (0x00007fe804b1e000)
    libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007fe808610000)
    libSM.so.6 => /usr/lib/x86_64-linux-gnu/libSM.so.6 (0x00007fe804ef0000)
    libICE.so.6 => /usr/lib/x86_64-linux-gnu/libICE.so.6 (0x00007fe804aff000)
    liblzma.so.5 => /usr/lib/x86_64-linux-gnu/liblzma.so.5 (0x00007fe804ad5000)
    libbz2.so.1 => /usr/lib/x86_64-linux-gnu/libbz2.so.1 (0x00007fe804ac1000)
    libxml2.so.2 => /usr/lib/x86_64-linux-gnu/libxml2.so.2 (0x00007fe804955000)
    libzstd.so.1 => /usr/lib/x86_64-linux-gnu/libzstd.so.1 (0x00007fe804892000)
    libGLX.so.0 => /usr/lib/x86_64-linux-gnu/libGLX.so.0 (0x00007fe80485f000)
    libGLdispatch.so.0 => /usr/lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007fe8047a6000)
    libexpat.so.1 => /usr/lib/x86_64-linux-gnu/libexpat.so.1 (0x00007fe804779000)
    libharfbuzz.so.0 => /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007fe804670000)
    libbrotlidec.so.1 => /usr/lib/x86_64-linux-gnu/libbrotlidec.so.1 (0x00007fe804ee3000)
    libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fe804644000)
    libOpenGL.so.0 => /usr/lib/x86_64-linux-gnu/libOpenGL.so.0 (0x00007fe804616000)
    libnghttp2.so.14 => /usr/lib/x86_64-linux-gnu/libnghttp2.so.14 (0x00007fe8045e6000)
    libssl.so.3 => /usr/lib/x86_64-linux-gnu/libssl.so.3 (0x00007fe80453d000)
    libcrypto.so.3 => /usr/lib/x86_64-linux-gnu/libcrypto.so.3 (0x00007fe804000000)
    libncursesw.so.6 => /usr/lib/x86_64-linux-gnu/libncursesw.so.6 (0x00007fe8044ff000)
    libicui18n.so.71 => /usr/lib/x86_64-linux-gnu/libicui18n.so.71 (0x00007fe803c00000)
    libicuuc.so.71 => /usr/lib/x86_64-linux-gnu/libicuuc.so.71 (0x00007fe803800000)
    libicudata.so.71 => /usr/lib/x86_64-linux-gnu/libicudata.so.71 (0x00007fe801a00000)
    libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fe803ac7000)
    libgraphite2.so.3 => /usr/lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007fe8044db000)
    libbrotlicommon.so.1 => /usr/lib/x86_64-linux-gnu/libbrotlicommon.so.1 (0x00007fe8044b8000)
    libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007fe8044b2000)
    libtinfow.so.6 => /usr/lib/x86_64-linux-gnu/libtinfow.so.6 (0x00007fe804471000)
    libpcre.so.1 => /usr/lib/x86_64-linux-gnu/libpcre.so.1 (0x00007fe803fb8000)

which looks odd to me since I assum most libraries should be from withing /app container. In particular:

[📦 org.octave.Octave ~]$ ldd /app/bin/octave-cli | grep GL
    libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007f157fc6c000)
    libGLU.so.1 => /app/lib/libGLU.so.1 (0x00007f157f18b000)
    libGLX.so.0 => /usr/lib/x86_64-linux-gnu/libGLX.so.0 (0x00007f157bf38000)
    libGLdispatch.so.0 => /usr/lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007f157be7f000)
    libOpenGL.so.0 => /usr/lib/x86_64-linux-gnu/libOpenGL.so.0 (0x00007f157bce2000)

Is a mix-n-match of /app and system libraries. If I have Mesa drivers installed on the system it kind-of works since the libraries are ABI compatible (?).

In any case, it used to work fine some time ago (~month?) and now it does not.
There are already bug reports on the octave's bug tracker which seem to be related to this issue.

Sincerely,

Dmitri.

Alexander-Wilms commented 8 months ago

The /usr paths refer to the org.kde.Sdk//5.15-22.08 runtime, not the system libraries.

Can you link the issues in the Octave bug tracker?

Also, if this indeed affects the non-flatpak'd version of Octave as well, this issue should be closed, since this tracker is intended for issues that only occur with the Flatpak.

dasergatskov commented 8 months ago

The issue is:

$ flatpak run  org.octave.Octave
Gtk-Message: 09:16:26.781: Failed to load module "canberra-gtk-module"
Gtk-Message: 09:16:26.781: Failed to load module "pk-gtk-module"
Gtk-Message: 09:16:26.781: Failed to load module "canberra-gtk-module"
Gtk-Message: 09:16:26.781: Failed to load module "pk-gtk-module"
qt.qpa.qgnomeplatform: Could not find color scheme  ""
Qt: Session management error: Could not open network socket
GNU Octave, version 8.4.0
Copyright (C) 1993-2023 The Octave Project Developers.
This is free software; see the source code for copying conditions.
There is ABSOLUTELY NO WARRANTY; not even for MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  For details, type 'warranty'.

Octave was configured for "x86_64-pc-linux-gnu".

Additional information about Octave is available at https://www.octave.org.

Please contribute if you find this software useful.
For more information, visit https://www.octave.org/get-involved.html

Read https://www.octave.org/bugs.html to learn how to submit bug reports.
For information about changes from previous versions, type 'news'.

octave:1> plot(1:3)
fatal: caught signal Aborted -- stopping myself...
octave:1> graphics_toolkit fltk
octave:2> plot(1:3)
Insufficient GL support
error: unable to plot due to insufficient OpenGL support
octave:3> 

(and gnuplot works)

Dmitri.

dasergatskov commented 8 months ago

https://savannah.gnu.org/bugs/index.php?64948

Not much info there though.

Dmitri.

dasergatskov commented 8 months ago

Attached is a backtrace. The relevant thread seems to be:

Thread 1 (Thread 0x7fffef561540 (LWP 110) "octave-gui"):
#0  0x00007ffff4c91204 in __pthread_kill_implementation () at /usr/lib/x86_64-linux-gnu/libc.so.6
#1  0x00007ffff4c3f04e in raise () at /usr/lib/x86_64-linux-gnu/libc.so.6
#2  0x00007ffff4c287fc in abort () at /usr/lib/x86_64-linux-gnu/libc.so.6
#3  0x00007ffff3a9dc8f in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffedcc32d6e in  () at /usr/lib/plugins/xcbglintegrations/libqxcb-glx-integration.so
#5  0x00007ffedcc331c7 in  () at /usr/lib/plugins/xcbglintegrations/libqxcb-glx-integration.so
#6  0x00007ffff33a244d in QOpenGLContext::create() () at /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#7  0x00007ffff41aa569 in QWidgetPrivate::shareContext() const () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#8  0x00007ffff41dbab9 in  () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#9  0x00007ffff41dbc22 in QOpenGLWidget::resizeEvent(QResizeEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#10 0x00007ffff41bd923 in QWidget::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#11 0x00007ffff417affe in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#12 0x00007ffff7c79826 in octave::octave_qapplication::notify(QObject*, QEvent*) (this=0x555555656880, receiver=<optimized out>, ev=<optimized out>) at libgui/src/octave-qobject.cc:147
#13 0x00007ffff3cced98 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#14 0x00007ffff41b5019 in QWidgetPrivate::sendPendingMoveAndResizeEvents(bool, bool) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#15 0x00007ffff41b9a13 in QWidgetPrivate::show_helper() () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#16 0x00007ffff41b99b9 in QWidgetPrivate::showChildren(bool) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#17 0x00007ffff41b9a2f in QWidgetPrivate::show_helper() () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#18 0x00007ffff41bc993 in QWidgetPrivate::setVisible(bool) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#19 0x00007ffff41b9999 in QWidgetPrivate::showChildren(bool) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#20 0x00007ffff41b9a2f in QWidgetPrivate::show_helper() () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#21 0x00007ffff41bc993 in QWidgetPrivate::setVisible(bool) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#22 0x00007ffff3cfa9c0 in QObject::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#23 0x00007ffff7bbd0b3 in octave::FigureWindowBase::event(QEvent*) (this=0x555555b5e210, evt=0x555555a60d00) at libgui/graphics/FigureWindow.h:35
#24 0x00007ffff417affe in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#25 0x00007ffff7c79826 in octave::octave_qapplication::notify(QObject*, QEvent*) (this=0x555555656880, receiver=<optimized out>, ev=<optimized out>) at libgui/src/octave-qobject.cc:147
#26 0x00007ffff3cced98 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#27 0x00007ffff3cd1d31 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#28 0x00007ffff3d27403 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#29 0x00007fffecf20d71 in g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#30 0x00007fffecf77028 in g_main_context_iterate.constprop () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#31 0x00007fffecf1e4a3 in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#32 0x00007ffff3d26ae6 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#33 0x00007ffff3ccd80b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#34 0x00007ffff3cd5976 in QCoreApplication::exec() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#35 0x00007ffff7c767be in octave::base_qobject::exec() (this=this@entry=0x7fffffffd0f0) at libgui/src/octave-qobject.cc:425
#36 0x00007ffff7c88aba in octave::qt_application::execute() (this=this@entry=0x7fffffffd390) at libgui/src/qt-application.cc:73
#37 0x00005555555563cf in main(int, char**) (argc=1, argv=0x7fffffffd708) at src/main-gui.cc:148

octave_flatpak_crash.txt.gz

Dmitri.

dasergatskov commented 7 months ago

After the latest update to org.freedesktop.Platform.GL.nvidia-545-23-08 (so the nvidia driver matches my system) the problem is gone.