Floating point error in Sway/wayland after (1) opening VLC (2) turning display off and on again (3) Right clicking on window
This is 100% reproducible for me based on these steps.
Sway version is current fbf9191fb8373e6718c61586329aaf362eeaa0c0.
VLC version info:
VLC media player 3.0.17.4 Vetinari (revision 3.0.13-8-g41878ff4f2)
VLC version 3.0.17.4 Vetinari (3.0.13-8-g41878ff4f2)
Compiled by builduser on (Nov 4 2022 04:40:27)
Compiler: gcc version 12.2.0 (GCC)
Something I think must be related is that the font of the interface actually changes when you power-cycle the display (see screenshot https://i.imgur.com/3IvitXg.png - top before, bottom after).
Clearing ~/.config/vlc doesn't fix.
Best I could do with gdb:
Thread 5 "vlc" received signal SIGFPE, Arithmetic exception.
[Switching to Thread 0x7ffff29ff6c0 (LWP 17689)]
0x00007ffff24522ef in qt_fusion_draw_arrow(Qt::ArrowType, QPainter*, QStyleOption const*, QRect const&, QColor const&) [clone .part.0] [clone .lto_priv.0] (type=Qt::RightArrow, painter=0x7ffff29fd048, option=<optimized out>, rect=..., color=...) at styles/qfusionstyle.cpp:274
Downloading 0.17 MB source file /usr/src/debug/qt5-base/qtbase/src/widgets/styles/qfusionstyle.cpp
274 arrowRect.setHeight(arrowHeight * size / arrowWidth);
(gdb) bt
#0 0x00007ffff24522ef in qt_fusion_draw_arrow(Qt::ArrowType, QPainter*, QStyleOption const*, QRect const&, QColor const&) [clone .part.0] [clone .lto_priv.0] (type=Qt::RightArrow, painter=0x7ffff29fd048, option=<optimized out>, rect=..., color=...) at styles/qfusionstyle.cpp:274
#1 0x00007ffff24481fb in qt_fusion_draw_arrow (color=..., rect=..., option=0x7ffff29fce70, painter=0x7ffff29fd048, type=Qt::RightArrow) at styles/qfusionstyle.cpp:575
#2 QFusionStyle::drawPrimitive(QStyle::PrimitiveElement, QStyleOption const*, QPainter*, QWidget const*) const (this=0x7fffe00bbc80, elem=QStyle::PE_IndicatorArrowRight, option=0x7ffff29fce70, painter=0x7ffff29fd048, widget=0x7ffff29fdf30) at styles/qfusionstyle.cpp:575
#3 0x00007ffff244d126 in QFusionStyle::drawControl(QStyle::ControlElement, QStyleOption const*, QPainter*, QWidget const*) const (this=0x7fffe00bbc80, element=<optimized out>, option=0x7ffff29fd150, painter=0x7ffff29fd048, widget=0x7ffff29fdf30) at styles/qfusionstyle.cpp:1757
#4 0x00007ffff24fbe59 in QMenu::paintEvent(QPaintEvent*) (this=0x7ffff29fdf30, e=0x7ffff29fd350) at widgets/qmenu.cpp:2856
#5 0x00007ffff23af3c4 in QWidget::event(QEvent*) (this=0x7ffff29fdf30, event=0x7ffff29fd350) at kernel/qwidget.cpp:8824
#6 0x00007ffff2378b1c in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x7ffff29fdf30, e=0x7ffff29fd350) at kernel/qapplication.cpp:3637
#7 0x00007ffff168d578 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x7ffff29fdf30, event=0x7ffff29fd350) at kernel/qcoreapplication.cpp:1064
#8 0x00007ffff23a334b in QWidgetPrivate::sendPaintEvent(QRegion const&) (this=this@entry=0x7fffe048d650, toBePainted=...) at kernel/qwidget.cpp:5477
#9 0x00007ffff23a46a6 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) (this=0x7fffe048d650, pdev=0x7fffe04b4920, rgn=..., offset=<optimized out>, flags=..., sharedPainter=<optimized out>, repaintManager=<optimized out>) at kernel/qwidget.cpp:5427
#10 0x00007ffff2384a0d in QWidgetRepaintManager::paintAndFlush() (this=0x7fffe04b49a0) at kernel/qwidgetrepaintmanager.cpp:1009
#11 0x00007ffff239b230 in QWidgetRepaintManager::sync(QWidget*, QRegion const&) (exposedRegion=..., exposedWidget=0x7ffff29fdf30, this=0x7fffe04b49a0) at kernel/qwidgetrepaintmanager.cpp:743
#12 QWidgetPrivate::syncBackingStore(QRegion const&) (region=..., this=<optimized out>) at kernel/qwidget.cpp:1767
#13 QWidgetPrivate::syncBackingStore(QRegion const&) (this=<optimized out>, region=...) at kernel/qwidget.cpp:1762
#14 0x00007ffff23d007b in QWidgetWindow::handleExposeEvent(QExposeEvent*) (event=0x7ffff29fda50, this=0x7fffe04d0890) at kernel/qwidgetwindow.cpp:1031
#15 QWidgetWindow::event(QEvent*) (this=0x7fffe04d0890, event=0x7ffff29fda50) at kernel/qwidgetwindow.cpp:347
#16 0x00007ffff2378b1c in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x7fffe04d0890, e=0x7ffff29fda50) at kernel/qapplication.cpp:3637
#17 0x00007ffff168d578 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x7fffe04d0890, event=0x7ffff29fda50) at kernel/qcoreapplication.cpp:1064
#18 0x00007ffff1b499b4 in QGuiApplicationPrivate::processExposeEvent(QWindowSystemInterfacePrivate::ExposeEvent*) (e=0x7fffe04b3b70) at kernel/qguiapplication.cpp:3261
#19 0x00007ffff1b289a5 in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) (flags=flags@entry=...) at kernel/qwindowsysteminterface.cpp:1169
#20 0x00007ffff212f710 in xcbSourceDispatch(GSource*, GSourceFunc, gpointer) (source=<optimized out>) at /usr/src/debug/qt5-base/qtbase/src/plugins/platforms/xcb/qxcbeventdispatcher.cpp:105
#21 0x00007ffff736887b in g_main_dispatch (context=0x7fffe4005070) at ../glib/glib/gmain.c:3444
#22 g_main_context_dispatch (context=0x7fffe4005070) at ../glib/glib/gmain.c:4162
#23 0x00007ffff73bf299 in g_main_context_iterate.constprop.0 (context=0x7fffe4005070, block=1, dispatch=1, self=<optimized out>) at ../glib/glib/gmain.c:4238
#24 0x00007ffff7367132 in g_main_context_iteration (context=0x7fffe4005070, may_block=1) at ../glib/glib/gmain.c:4303
#25 0x00007ffff16d820c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fffe00b0990, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#26 0x00007ffff1685d2c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7ffff29fdd40, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#27 0x00007ffff24fb758 in QMenuPrivate::exec(QPoint const&, QAction*, std::function<QPoint (QSize const&)>) (this=0x7fffe048d650, p=..., action=action@entry=0x0, positionFunction=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#28 0x00007ffff24fb873 in QMenu::exec(QPoint const&, QAction*) (this=this@entry=0x7ffff29fdf30, p=..., action=action@entry=0x0) at widgets/qmenu.cpp:2687
#29 0x00007ffff2b6dc6b in StandardPLPanel::popup(QPoint const&) (this=<optimized out>, point=<optimized out>) at gui/qt/components/playlist/standardpanel.cpp:290
#30 0x00007ffff2b6e43b in StandardPLPanel::popupPlView(QPoint const&) (this=0x7fffe043f400, point=<optimized out>) at gui/qt/components/playlist/standardpanel.cpp:169
#31 0x00007ffff16be1c0 in doActivate<false>(QObject*, int, void**) (sender=0x7fffe0a602a0, signal_index=6, argv=0x7ffff29fe0d0) at kernel/qobject.cpp:3931
#32 0x00007ffff23b0a0a in QWidget::customContextMenuRequested(QPoint const&) (this=<optimized out>, _t1=<optimized out>) at .moc/moc_qwidget.cpp:653
#33 0x00007ffff23afaa5 in QWidget::event(QEvent*) (this=0x7fffe0a602a0, event=0x7ffff29fe520) at kernel/qwidget.cpp:8850
#34 0x00007ffff245d823 in QFrame::event(QEvent*) (this=0x7fffe0a602a0, e=0x7ffff29fe520) at widgets/qframe.cpp:550
#35 0x00007ffff168d1e2 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) (receiver=receiver@entry=0x7fffe0591870, event=event@entry=0x7ffff29fe520) at kernel/qcoreapplication.cpp:1190
#36 0x00007ffff2378b0c in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=this@entry=0x7fffe0000b70, receiver=receiver@entry=0x7fffe0591870, e=e@entry=0x7ffff29fe520) at kernel/qapplication.cpp:3631
#37 0x00007ffff237d342 in QApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=<optimized out>, e=0x7ffff29fe520) at kernel/qapplication.cpp:3243
#38 0x00007ffff168d578 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x7fffe0591870, event=0x7ffff29fe520) at kernel/qcoreapplication.cpp:1064
#39 0x00007ffff23cddf4 in QWidgetWindow::handleMouseEvent(QMouseEvent*) (this=<optimized out>, event=0x7ffff29fe8c0) at kernel/qwidgetwindow.cpp:691
#40 0x00007ffff23cf15e in QWidgetWindow::event(QEvent*) (this=0x7fffe05ff410, event=0x7ffff29fe8c0) at kernel/qwidgetwindow.cpp:300
#41 0x00007ffff2378b1c in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x7fffe05ff410, e=0x7ffff29fe8c0) at kernel/qapplication.cpp:3637
#42 0x00007ffff168d578 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x7fffe05ff410, event=0x7ffff29fe8c0) at kernel/qcoreapplication.cpp:1064
#43 0x00007ffff1b3f15c in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) (e=0x7fffe0adf980) at kernel/qguiapplication.cpp:2285
#44 0x00007ffff1b289a5 in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) (flags=flags@entry=...) at kernel/qwindowsysteminterface.cpp:1169
#45 0x00007ffff212f710 in xcbSourceDispatch(GSource*, GSourceFunc, gpointer) (source=<optimized out>) at /usr/src/debug/qt5-base/qtbase/src/plugins/platforms/xcb/qxcbeventdispatcher.cpp:105
#46 0x00007ffff736887b in g_main_dispatch (context=0x7fffe4005070) at ../glib/glib/gmain.c:3444
#47 g_main_context_dispatch (context=0x7fffe4005070) at ../glib/glib/gmain.c:4162
#48 0x00007ffff73bf299 in g_main_context_iterate.constprop.0 (context=0x7fffe4005070, block=1, dispatch=1, self=<optimized out>) at ../glib/glib/gmain.c:4238
#49 0x00007ffff7367132 in g_main_context_iteration (context=0x7fffe4005070, may_block=1) at ../glib/glib/gmain.c:4303
#50 0x00007ffff16d820c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fffe00b0990, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#51 0x00007ffff1685d2c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7ffff29fec60, flags=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#52 0x00007ffff1690849 in QCoreApplication::exec() () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#53 0x00007ffff1b3a102 in QGuiApplication::exec() () at kernel/qguiapplication.cpp:1870
#54 0x00007ffff2376f2a in QApplication::exec() () at kernel/qapplication.cpp:2829
#55 0x00007ffff2aa1a0f in ThreadPlatform(void*, char*) (obj=0x55555567f130, platform_name=<optimized out>) at gui/qt/qt.cpp:644
#56 0x00007ffff2aa2a8a in ThreadXCB(void*) (data=<optimized out>) at gui/qt/qt.cpp:369
#57 0x00007ffff7dfb8fd in start_thread (arg=<optimized out>) at pthread_create.c:442
#58 0x00007ffff7e7da60 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81