mixxxdj / mixxx

Mixxx is Free DJ software that gives you everything you need to perform live mixes.
http://mixxx.org
Other
4.41k stars 1.26k forks source link

Segfault when closing Mixxx during startup #13683

Open daschuer opened 2 hours ago

daschuer commented 2 hours ago

Bug Description

Today I have experienced this segfault when I was closing Mixxx during startup:

warning [Main] Preferences: skipping unsupported locale "vls"
[New Thread 0x7ffe88016700 (LWP 2377986)]
[New Thread 0x7ffe87815700 (LWP 2377987)]
warning [0x7fffb40038c0] Engine thread not scheduled with the real-time policy SCHED_FIFO

Thread 1 "mixxx" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffeb7a10c0 (LWP 2377842)]
QOpenGLContext::isValid (this=this@entry=0x0) at kernel/qopenglcontext.cpp:715
715 kernel/qopenglcontext.cpp: Datei oder Verzeichnis nicht gefunden.
(gdb) bt
#0  QOpenGLContext::isValid() const (this=this@entry=0x0)
    at kernel/qopenglcontext.cpp:715
#1  0x00007ffff65704b0 in QOpenGLContext::defaultFramebufferObject() const
    (this=0x0) at kernel/qopenglcontext.cpp:925
#2  0x00007ffff657545d in QOpenGLFunctions::glBindFramebuffer(unsigned int, unsigned int) (this=0x55556045d950, framebuffer=<optimized out>, target=36160)
    at ../../include/QtGui/../../src/gui/opengl/qopenglfunctions.h:1147
#3  QOpenGLWindowPrivate::beginPaint(QRegion const&)
    (this=0x5555604a75a0, region=...) at kernel/qopenglwindow.cpp:276
#4  0x00007ffff6566308 in QPaintDeviceWindowPrivate::paint(QRegion const&)
    (region=..., this=0x5555604a75a0) at kernel/qpaintdevicewindow_p.h:105
#5  QPaintDeviceWindowPrivate::doFlush(QRegion const&)
    (region=..., this=0x5555604a75a0) at kernel/qpaintdevicewindow_p.h:104
#6  QPaintDeviceWindow::exposeEvent(QExposeEvent*)
    (this=<optimized out>, exposeEvent=<optimized out>)
    at kernel/qpaintdevicewindow.cpp:189
#7  0x00007ffff653e9ad in QWindow::event(QEvent*)
    (this=0x5555604efb80, ev=<optimized out>) at kernel/qwindow.cpp:2347
#8  0x00007ffff656634d in QPaintDeviceWindow::event(QEvent*)
    (this=<optimized out>, event=<optimized out>)
    at kernel/qpaintdevicewindow.cpp:206
#9  0x0000555556391281 in OpenGLWindow::event(QEvent*)
    (this=0x5555604efb80, pEv=0x7fffffffd9f0)
--Type <RET> for more, q to quit, c to continue without paging--
    at /home/daniel/workspace/mixxx2/src/widget/openglwindow.cpp:64
#10 0x00007ffff6bada66 in QApplicationPrivate::notify_helper(QObject*, QEvent*)
    (this=this@entry=0x555556820780, receiver=receiver@entry=0x5555604efb80, e=e@entry=0x7fffffffd9f0) at kernel/qapplication.cpp:3700
#11 0x00007ffff6bb70f0 in QApplication::notify(QObject*, QEvent*)
    (this=0x7fffffffdda0, receiver=0x5555604efb80, e=0x7fffffffd9f0)
    at kernel/qapplication.cpp:3446
#12 0x00007ffff3c4280a in QCoreApplication::notifyInternal2(QObject*, QEvent*)
    (receiver=0x5555604efb80, event=0x7fffffffd9f0)
    at ../../include/QtCore/../../src/corelib/kernel/qobject.h:142
#13 0x00007ffff6534de6 in QGuiApplicationPrivate::processExposeEvent(QWindowSystemInterfacePrivate::ExposeEvent*) (e=0x555562e426c0)
    at kernel/qguiapplication.cpp:3077
#14 0x00007ffff6535014 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) (e=e@entry=0x555562e426c0)
    at kernel/qguiapplication.cpp:1907
#15 0x00007ffff650f35b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) (flags=flags@entry=...)
    at kernel/qwindowsysteminterface.cpp:1151
#16 0x00007fffeb03e32e in xcbSourceDispatch(GSource*, GSourceFunc, gpointer)
    (source=<optimized out>) at qxcbeventdispatcher.cpp:105
#17 0x00007ffff2aea17d in g_main_context_dispatch ()
    at /lib/x86_64-linux-gnu/libglib-2.0.so.0
--Type <RET> for more, q to quit, c to continue without paging--
#18 0x00007ffff2aea400 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#19 0x00007ffff2aea4a3 in g_main_context_iteration ()
    at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#20 0x00007ffff3c9a435 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x5555568b09b0, flags=...)
    at kernel/qeventdispatcher_glib.cpp:422
#21 0x00007ffff3c413ab in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fffffffdcd0, flags=..., flags@entry=...)
    at ../../include/QtCore/../../src/corelib/global/qflags.h:140
#22 0x00007ffff3c49116 in QCoreApplication::exec() ()
    at ../../include/QtCore/../../src/corelib/global/qflags.h:120
#23 0x0000555555a0f1a6 in (anonymous namespace)::runMixxx
    (args=..., pApp=0x7fffffffdda0)
    at /home/daniel/workspace/mixxx2/src/main.cpp:109
#24 main(int, char**) (argc=<optimized out>, argv=<optimized out>)
    at /home/daniel/workspace/mixxx2/src/main.cpp:245

The crash itself happens inside pApp->exec(); My guess is that we need to flush the event loop at one point when shutting down.

Version

2.4.1

OS

Ubuntu Focal

ronso0 commented 2 hours ago

Different issue, though this can also happen when keyevents are sent while the respective controls haven't been created, yet.

Swiftb0y commented 2 hours ago

that same error/backtrace or just crashing in general?

ronso0 commented 2 hours ago

no, shold crash in release builds, I only saw the (fatal) debug asserts.

daschuer commented 28 minutes ago

I see also these debug assertions before it segfaults.