Summary: | media-sound/clementine USE=projectm with dev-qt/qtgui[egl] - when opening visualizations menu, segmentation fault in QEglContext::createSurface(QPaintDevice*, QEglProperties const*) () from /usr/lib64/qt4/libQtGui.so.4 | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | Alex Efros <powerman-asdf> |
Component: | Current packages | Assignee: | Lars Wendler (Polynomial-C) (RETIRED) <polynomial-c> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | dschridde+gentoobugs, jstein, sound |
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Bug Depends on: | |||
Bug Blocks: | 588908 | ||
Attachments: |
thread apply all bt full
bt short bt full |
Description
Alex Efros
2014-12-20 17:52:06 UTC
Please attach the gdb backtrace output matching that segmentation fault. I've removed "No symbol table info available." printed every second line from gdb output. I'll attach file with `thread apply all bt full`. Program received signal SIGSEGV, Segmentation fault. 0x000067a2500a6e28 in QEglContext::createSurface(QPaintDevice*, QEglProperties const*) () from /usr/lib64/qt4/libQtGui.so.4 (gdb) bt full #0 0x000067a2500a6e28 in QEglContext::createSurface(QPaintDevice*, QEglProperties const*) () from /usr/lib64/qt4/libQtGui.so.4 #1 0x000067a2505f6df8 in ?? () from /usr/lib64/qt4/libQtOpenGL.so.4 #2 0x000067a250575148 in QGLWidget::event(QEvent*) () from /usr/lib64/qt4/libQtOpenGL.so.4 #3 0x000067a24f9434ec in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4 #4 0x000067a24f94a9ed in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4 #5 0x000067a252d43c3d in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib64/qt4/libQtCore.so.4 #6 0x000067a24f9aa478 in QWidget::setParent(QWidget*, QFlags<Qt::WindowType>) () from /usr/lib64/qt4/libQtGui.so.4 #7 0x000067a24f9ab355 in QWidget::setParent(QWidget*) () from /usr/lib64/qt4/libQtGui.so.4 #8 0x000067a24fe584ba in QAbstractScrollArea::setViewport(QWidget*) () from /usr/lib64/qt4/libQtGui.so.4 #9 0x000005a66d6e08b2 in VisualisationContainer::Init() () #10 0x000005a66d6e15c0 in VisualisationContainer::showEvent(QShowEvent*) () #11 0x000067a24f9a9764 in QWidget::event(QEvent*) () from /usr/lib64/qt4/libQtGui.so.4 #12 0x000067a24fdb9aa1 in QFrame::event(QEvent*) () from /usr/lib64/qt4/libQtGui.so.4 #13 0x000067a24fe59683 in QAbstractScrollArea::event(QEvent*) () from /usr/lib64/qt4/libQtGui.so.4 #14 0x000067a24f9434ec in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4 #15 0x000067a24f94a9ed in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4 #16 0x000067a252d43c3d in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib64/qt4/libQtCore.so.4 #17 0x000067a24f9a69fd in QWidgetPrivate::show_helper() () from /usr/lib64/qt4/libQtGui.so.4 #18 0x000067a24f9a8a29 in QWidget::setVisible(bool) () from /usr/lib64/qt4/libQtGui.so.4 #19 0x000005a66d717e7e in ?? () #20 0x000067a252d5ccff in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib64/qt4/libQtCore.so.4 #21 0x000067a24f93a37f in QAction::triggered(bool) () from /usr/lib64/qt4/libQtGui.so.4 #22 0x000067a24f93c7ac in QAction::activate(QAction::ActionEvent) () from /usr/lib64/qt4/libQtGui.so.4 #23 0x000067a24fe0087c in ?? () from /usr/lib64/qt4/libQtGui.so.4 #24 0x000067a24fe058ef in ?? () from /usr/lib64/qt4/libQtGui.so.4 #25 0x000067a24f9a9aa6 in QWidget::event(QEvent*) () from /usr/lib64/qt4/libQtGui.so.4 #26 0x000067a24fe09f1b in QMenu::event(QEvent*) () from /usr/lib64/qt4/libQtGui.so.4 #27 0x000067a24f9434ec in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4 #28 0x000067a24f94ab55 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4 #29 0x000067a252d43c3d in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib64/qt4/libQtCore.so.4 #30 0x000067a24f94a1f2 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /usr/lib64/qt4/libQtGui.so.4 #31 0x000067a24f9d9393 in ?? () from /usr/lib64/qt4/libQtGui.so.4 #32 0x000067a24f9d7971 in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib64/qt4/libQtGui.so.4 #33 0x000067a24fa049c2 in ?? () from /usr/lib64/qt4/libQtGui.so.4 #34 0x000067a252182429 in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0 #35 0x000067a2521826b8 in ?? () from /usr/lib64/libglib-2.0.so.0 #36 0x000067a2521827c1 in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0 #37 0x000067a252d7afc7 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4 #38 0x000067a24fa04a9b in ?? () from /usr/lib64/qt4/libQtGui.so.4 #39 0x000067a252d42083 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4 #40 0x000067a252d424f5 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4 #41 0x000067a252d48d4c in QCoreApplication::exec() () from /usr/lib64/qt4/libQtCore.so.4 #42 0x000005a66d50fc4c in main () (gdb) Created attachment 392184 [details]
thread apply all bt full
I am not sure if this is bug in clementine. Does EGL actually work fine for you? Please try testing other apps with EGL and qtgui[egl]. How well does eglgears_x11 from x11-apps/mesa-progs work for you? I heard that nvidia-drivers do not support EGL well yet. # eselect opengl set nvidia # eglinfo eglinfo: symbol lookup error: eglinfo: undefined symbol: eglGetModesMESA # eglgears_x11 EGL_VERSION = 1.4 EGLUT: failed to choose a config # eglgears_screen eglgears_screen: symbol lookup error: eglgears_screen: undefined symbol: eglGetScreensMESA # eselect opengl set xorg-x11 # eglinfo libEGL warning: DRI2: failed to authenticate EGL API version: 1.4 EGL vendor string: Mesa Project EGL version string: 1.4 (DRI2) EGL client APIs: OpenGL OpenGL_ES OpenGL_ES2 OpenGL_ES3 EGL extensions string: EGL_MESA_configless_context EGL_KHR_surfaceless_context Configurations: ... # eglgears_x11 libEGL warning: DRI2: failed to authenticate EGL_VERSION = 1.4 (DRI2) ---WORKS OK--- # eglgears_screen libEGL warning: DRI2: failed to authenticate EGL_VERSION = 1.4 (DRI2) EGLUT: failed to choose a config Seems EGL is broken in your system, so why enable it for Qt? Is this is still an issue? Could you verify it against recent versions of qt/nvidia-drivers/clementine/libprojectm? # USE="egl projectm" emerge -uDN clementine has (re)emerged these packages: N media-libs/ftgl-2.1.3_rc5 N media-gfx/nvidia-cg-toolkit-3.1.0013-r3 N media-libs/libprojectm-2.1.0-r1 R media-libs/gst-plugins-bad-1.10.3 R dev-qt/qtgui-4.8.6-r4 R dev-qt/qtopengl-4.8.6-r1 R media-sound/clementine-1.3.1-r5 And yes, it's still crash: 2017-03-06_07:59:16.76086 kern.info: clementine[15050]: segfault at 10 ip 00006a180faae8a6 sp 000070bc1b01e200 error 4 in libQtGui.so.4.8.6[6a180f192000+b8f000] 2017-03-06_07:59:16.76088 kern.alert: grsec: Segmentation fault occurred at 0000000000000010 in /usr/bin/clementine[clementine:15050] uid/euid:1000/1000 gid/egid:1000/1000, parent /bin/bash[bash:15049] uid/euid:1000/1000 gid/egid:1000/1000 Here is console output while crashing: 10:03:02.016 WARN unknown QEgl::display(): Falling back to EGL_DEFAULT_DISPLAY 10:03:02.016 WARN unknown QEgl::display(): Can't even open the default display 10:03:02.016 WARN unknown QEglContext::chooseConfig(): Could not find a suitable EGL configuration 10:03:02.016 WARN unknown Requested: "type=gl,8 rgba=0,0,0,0 surface-type=window" 10:03:02.016 WARN unknown Available: Segmentation fault ok, I've tried it myself and couldn't got to work EGL with nvidia-drivers(375.26) at all (even for eglxgears_x11 eglInitialize() fails). In such conditions opengl examples from Qt segfalted the same way clementine does. So Alex, does EGL actually works on your system? And if not, why do you have it enabaled at all and are there any reasons to expect it to work someway properly? Otherwise, if it does, how you managed to do it? As for now I consider the problem is not on clementine's side, but rather on the nvidia's and/or qt4's one. ~Update~ After fixing #606584 situation changed a bit: - eglgears and eglinfo started to display meaningful information. - Qt opengl examples stopped segfaulting but stil swearing a lot and display nothing but a black square... - Clementine segfaults a bit differently: ============= (gdb) bt 20 #0 0x00007ffff1db26c0 in XVisualIDFromVisual () from /usr/lib64/libX11.so.6 #1 0x00007ffff2b5d249 in qt_x11_getX11InfoForWindow (xinfo=0x1c23530, att=...) at /usr/src/debug/dev-qt/qtgui-4.8.6-r4/qt-everywhere-opensource-src-4.8.6/src/gui/kernel/qwidget_x11.cpp:3116 #2 0x00007ffff2b50ab5 in qt_x11_getX11InfoForWindow (xinfo=0x1c23530, a=...) at /usr/src/debug/dev-qt/qtgui-4.8.6-r4/qt-everywhere-opensource-src-4.8.6/src/gui/kernel/qwidget_x11.cpp:438 #3 0x00007ffff2b5161f in QWidgetPrivate::create_sys (this=0x1c23350, window=94371921, initializeWindow=true, destroyOldWindow=true) at /usr/src/debug/dev-qt/qtgui-4.8.6-r4/qt-everywhere-opensource-src-4.8.6/src/gui/kernel/qwidget_x11.cpp:599 #4 0x00007ffff2ae25ae in QWidget::create (this=0x1c572b0, window=94371921, initializeWindow=true, destroyOldWindow=true) at /usr/src/debug/dev-qt/qtgui-4.8.6-r4/qt-everywhere-opensource-src-4.8.6/src/gui/kernel/qwidget.cpp:1513 #5 0x00007ffff330dfe7 in qt_set_winid_on_widget (w=0x1c572b0, id=94371921) at /usr/src/debug/dev-qt/qtgui-4.8.6-r4/qt-everywhere-opensource-src-4.8.6/src/gui/egl/qegl_x11.cpp:327 #6 0x00007ffff330e50e in QEgl::createSurface (device=0x1c572c0, config=0xcaf36b, properties=0x0) at /usr/src/debug/dev-qt/qtgui-4.8.6-r4/qt-everywhere-opensource-src-4.8.6/src/gui/egl/qegl_x11.cpp:410 #7 0x00007ffff3309237 in QEglContext::createSurface (this=0x1cc99e0, device=0x1c572c0, properties=0x0) at /usr/src/debug/dev-qt/qtgui-4.8.6-r4/qt-everywhere-opensource-src-4.8.6/src/gui/egl/qegl.cpp:356 #8 0x00007ffff39123da in QGLWidgetPrivate::recreateEglSurface (this=0x1c23350) at /usr/src/debug/dev-qt/qtopengl-4.8.6-r1/qt-everywhere-opensource-src-4.8.6/src/opengl/qgl_x11egl.cpp:376 #9 0x00007ffff3876041 in QGLWidget::event (this=0x1c572b0, e=0x7fffffffa910) at /usr/src/debug/dev-qt/qtopengl-4.8.6-r1/qt-everywhere-opensource-src-4.8.6/src/opengl/qgl.cpp:4332 #10 0x00007ffff2a8d762 in QApplicationPrivate::notify_helper (this=0xf00210, receiver=0x1c572b0, e=0x7fffffffa910) at /usr/src/debug/dev-qt/qtgui-4.8.6-r4/qt-everywhere-opensource-src-4.8.6/src/gui/kernel/qapplication.cpp:4565 #11 0x00007ffff2a8d44d in QApplication::notify (this=0x7fffffffc890, receiver=0x1c572b0, e=0x7fffffffa910) at /usr/src/debug/dev-qt/qtgui-4.8.6-r4/qt-everywhere-opensource-src-4.8.6/src/gui/kernel/qapplication.cpp:4530 #12 0x00007ffff6e9faed in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib64/qt4/libQtCore.so.4 #13 0x00007ffff2a7df49 in QCoreApplication::sendEvent (receiver=0x1c572b0, event=0x7fffffffa910) at ../../../qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcoreapplication.h:231 #14 0x00007ffff2af844a in QWidget::setParent (this=0x1c572b0, parent=0x1c988e0, f=...) at /usr/src/debug/dev-qt/qtgui-4.8.6-r4/qt-everywhere-opensource-src-4.8.6/src/gui/kernel/qwidget.cpp:10322 #15 0x00007ffff2af7c80 in QWidget::setParent (this=0x1c572b0, parent=0x1c988e0) at /usr/src/debug/dev-qt/qtgui-4.8.6-r4/qt-everywhere-opensource-src-4.8.6/src/gui/kernel/qwidget.cpp:10173 #16 0x00007ffff308cc76 in QAbstractScrollArea::setViewport (this=0x1c988e0, widget=0x1c572b0) at /usr/src/debug/dev-qt/qtgui-4.8.6-r4/qt-everywhere-opensource-src-4.8.6/src/gui/widgets/qabstractscrollarea.cpp:547 #17 0x000000000077bb39 in VisualisationContainer::Init() () #18 0x000000000077c7a8 in VisualisationContainer::showEvent(QShowEvent*) () #19 0x00007ffff2af5837 in QWidget::event (this=0x1c988e0, event=0x7fffffffb1b0) at /usr/src/debug/dev-qt/qtgui-4.8.6-r4/qt-everywhere-opensource-src-4.8.6/src/gui/kernel/qwidget.cpp:8607 ============= Gonna to force qtgui/qtopengl[-egl] for clementine[projectm] if no objections. (In reply to Fat-Zer from comment #9) > So Alex, does EGL actually works on your system? > And if not, why do you have it enabaled at all and > are there any reasons to expect it to work someway properly? Well, one of reasons to enable these USE flags was an attempt to clarify this and find out is it works on my system in some real app. :) As I mentioned in comment 5 at least eglgears_x11 works ok. (In reply to Alex Efros from comment #11) > Well, one of reasons to enable these USE flags was an attempt to clarify > this and find out is it works on my system in some real app. :) As I > mentioned in comment 5 at least eglgears_x11 works ok. Actually, according to #5 it doesn't work... Note that when you switch to xorg implementation it is likely that it just falls back to software rendering... Mine eglgears_x11 and eglinfo run xorg-x11 implementation of OpenGL without problems or even warnings, but running clementine with dev-qt/qtgui:4[egl], dev-qt/qtopengl:4[egl] still ending with segfault in libQtOpenGL.so.4.8.7 (In reply to Jiří Moravec from comment #13) > Mine eglgears_x11 and eglinfo run xorg-x11 implementation of OpenGL without > problems or even warnings, but running clementine with dev-qt/qtgui:4[egl], > dev-qt/qtopengl:4[egl] still ending with segfault in libQtOpenGL.so.4.8.7 Which version did you test, please? (In reply to Andreas Sturmlechner from comment #14) > (In reply to Jiří Moravec from comment #13) > > Mine eglgears_x11 and eglinfo run xorg-x11 implementation of OpenGL without > > problems or even warnings, but running clementine with dev-qt/qtgui:4[egl], > > dev-qt/qtopengl:4[egl] still ending with segfault in libQtOpenGL.so.4.8.7 > Which version did you test, please? x11-apps/mesa-progs-8.3.0 Sorry, as I just found, mine error is maybe different from yours. But only manifest when qtopengl/qtgui packages are build with USE="egl". So for full disclosure mine gdb backtraces (short/full) are attached. Created attachment 507244 [details]
bt short
Created attachment 507246 [details]
bt full
And now it's look more like race condition, because when I ran it in gdb first time it hit segfault but second time clementine fully started and played music without any hiccup. Really confusing... Please test with latest snapshot. (In reply to Andreas Sturmlechner from comment #20) > Please test with latest snapshot. Assuming Clementine uses projectm to display *.milk visualisations, media-sound/clementine[projectm] seems to work without crashes so far. * media-sound/clementine-1.3.1_p20180416[projectm] * media-libs/libprojectm-2.1.0-r2 * dev-qt/qtgui-5.9.5[egl] * media-libs/mesa-18.1.0_rc3 (In reply to Andreas Sturmlechner from comment #20) > Please test with latest snapshot. # USE="egl eglfs projectm" emerge -uDNa world [ebuild N ] media-libs/ftgl-2.1.3_rc5 USE="-static-libs" [ebuild N ] media-gfx/nvidia-cg-toolkit-3.1.0013-r3 USE="-doc -examples" ABI_X86="(64) -32" [ebuild N ] media-libs/libprojectm-2.1.0-r2 USE="openmp -debug" VIDEO_CARDS="nvidia" [ebuild R ] x11-apps/mesa-progs-8.3.0 USE="egl*" [ebuild R ] dev-qt/qtgui-5.9.4-r3 USE="egl* eglfs*" [ebuild R ] media-sound/clementine-1.3.1_p20180416 USE="projectm*" [ebuild R ] media-video/vlc-2.2.8-r1 USE="projectm*" Most of visualisations works now! Some just black screen, but I see few lines like this in kernel log, may be the reason: kern.alert: grsec: denied RWX mprotect of /usr/lib64/opengl/nvidia/lib/libGLdispatch.so.0 by /usr/bin/clementine[clementine:30225] Thanks for checking back. |