Summary: | Plasmashell freezes when Media Player widget switches to certain tracks | ||
---|---|---|---|
Product: | [Plasma] plasmashell | Reporter: | Kath <krazykath> |
Component: | general | Assignee: | Plasma Bugs List <plasma-bugs> |
Status: | RESOLVED DUPLICATE | ||
Severity: | normal | CC: | jim+kde, kde, nate |
Priority: | NOR | ||
Version: | 6.1.4 | ||
Target Milestone: | 1.0 | ||
Platform: | Fedora RPMs | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: | |||
Attachments: | Video of plasmashell freezing when playing specific tracks |
I am also able to reproduce this, again with specific tracks triggering it 100% of the time. Plasmashell will also freeze immediately when restarting after being killed, if one of the offending tracks is already playing at the time. I got a backtrace from gdb which seems to show plasmashell is stuck trying to paint an SVG? I tried a few times and all backtraces are largely the same up to KSvg::SvgPrivate::findInCache. For example: #0 syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38 #1 0x00007ff8f2ec9962 in QtLinuxFutex::_q_futex (addr=<optimized out>, op=<optimized out>, val=<optimized out>, val2=<optimized out>, addr2=<optimized out>, val3=<optimized out>, addr=<optimized out>, op=<optimized out>, val=<optimized out>, val2=<optimized out>, addr2=<optimized out>, val3=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/thread/qfutex_linux_p.h:48 #2 QtLinuxFutex::futexWait<QBasicAtomicInteger<unsigned int> > (futex=..., expectedValue=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/thread/qfutex_linux_p.h:67 #3 futexSemaphoreTryAcquire_loop<false> (timer=..., u=..., curValue=<optimized out>, nn=17179869187) at /usr/src/debug/qt6-base/qtbase/src/corelib/thread/qsemaphore.cpp:174 #4 futexSemaphoreTryAcquire<QDeadlineTimer::ForeverConstant> (u=..., n=<optimized out>, timeout=timeout@entry=QDeadlineTimer::ForeverConstant::Forever) at /usr/src/debug/qt6-base/qtbase/src/corelib/thread/qsemaphore.cpp:239 #5 0x00007ff8f2ec999b in QSemaphore::acquire (this=<optimized out>, n=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/thread/qsemaphore.cpp:327 #6 0x00007ff8f3834b43 in blend_color_argb (count=<optimized out>, spans=<optimized out>, userData=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/gui/painting/qdrawhelper.cpp:3876 #7 0x00007ff8f346dc9e in gray_convert_glyph (worker=0x7ffdf99e5b80) at /usr/src/debug/qt6-base/qtbase/src/gui/painting/qgrayraster.c:1779 #8 0x00007ff8f3494d0f in QRasterPaintEnginePrivate::rasterize (this=0x5e7a8cbe3a90, outline=<optimized out>, callback=0x7ff8f38347b0 <blend_color_argb(int, QT_FT_Span const*, void*)>, userData=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/tools/qscopedpointer.h:105 #9 0x00007ff8f3499966 in QRasterPaintEngine::fill (this=<optimized out>, path=..., brush=...) at /usr/src/debug/qt6-base/qtbase/src/gui/painting/qpaintengine_raster.cpp:1696 #10 0x00007ff8f34ac9ad in QPaintEngineEx::draw (this=0x5e7a88935e00, path=...) at /usr/src/debug/qt6-base/qtbase/src/gui/painting/qpaintengineex.cpp:592 #11 0x00007ff8f1c00437 in QSvgPath::drawCommand (this=0x5e7a855fc420, p=0x7ffdf99e83b8, states=...) at /usr/src/debug/qt6-svg/qtsvg/src/svg/qsvggraphics.cpp:112 #12 0x00007ff8f1c1dd88 in QSvgNode::fillThenStroke (this=this@entry=0x5e7a855fc420, p=p@entry=0x7ffdf99e83b8, states=...) at /usr/src/debug/qt6-svg/qtsvg/src/svg/qsvgnode.cpp:93 #13 0x00007ff8f1c21ade in QSvgNode::draw (this=0x5e7a855fc420, p=0x7ffdf99e83b8, states=...) at /usr/src/debug/qt6-svg/qtsvg/src/svg/qsvgnode.cpp:72 #14 0x00007ff8f1c24c67 in QSvgNode::draw (this=0x5e7a855fc420, p=0x7ffdf99e83b8, states=...) at /usr/src/debug/qt6-svg/qtsvg/src/svg/qsvgnode.cpp:44 #15 QSvgG::drawCommand (this=0x5e7a855afdd0, p=0x7ffdf99e83b8, states=...) at /usr/src/debug/qt6-svg/qtsvg/src/svg/qsvgstructure.cpp:42 #16 0x00007ff8f1c21a94 in QSvgNode::draw (this=0x5e7a855afdd0, p=0x7ffdf99e83b8, states=...) at /usr/src/debug/qt6-svg/qtsvg/src/svg/qsvgnode.cpp:74 #17 0x00007ff8f1c38a61 in QSvgTinyDocument::draw (this=<optimized out>, p=0x7ffdf99e83b8, id=..., bounds=...) at /usr/src/debug/qt6-svg/qtsvg/src/svg/qsvgtinydocument.cpp:297 #18 0x00007ff8f5357e20 in KSvg::SvgPrivate::findInCache (this=<optimized out>, elementId=..., ratio=1, s=...) at /usr/src/debug/ksvg/ksvg-6.5.0/src/ksvg/svg.cpp:619 #19 0x00007ff8f53593bd in KSvg::Svg::image (this=<optimized out>, size=..., elementID=...) at /usr/src/debug/ksvg/ksvg-6.5.0/src/ksvg/svg.cpp:901 #20 0x00007ff8e3fee84d in KSvg::SvgItem::updatePolish (this=0x5e7a855ebfb0) at /usr/src/debug/ksvg/ksvg-6.5.0/src/declarativeimports/svgitem.cpp:253 #21 0x00007ff8f44469ca in QQuickWindowPrivate::polishItems (this=0x5e7a847e51f0) --Type <RET> for more, q to quit, c to continue without paging--c at /usr/src/debug/qt6-declarative/qtdeclarative/src/quick/items/qquickwindow.cpp:369 #22 0x00007ff8f4616491 in QSGThreadedRenderLoop::polishAndSync (this=0x5e7a841a92a0, w=0x5e7a8b3be920, inExpose=false) at /usr/src/debug/qt6-declarative/qtdeclarative/src/quick/scenegraph/qsgthreadedrenderloop.cpp:1616 #23 0x00007ff8f444e130 in QQuickWindow::event (this=this@entry=0x5e7a8483e3a0, event=event@entry=0x7ffdf99e8de0) at /usr/src/debug/qt6-declarative/qtdeclarative/src/quick/items/qquickwindow.cpp:1600 #24 0x00005e7a4ed7cc2c in PanelView::event (this=0x5e7a8483e3a0, e=0x7ffdf99e8de0) at /usr/src/debug/plasma-workspace/plasma-workspace-6.1.4/shell/panelview.cpp:1233 #25 0x00007ff8f4cfc51c in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x5e7a8483e3a0, e=0x7ffdf99e8de0) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:3287 #26 0x00007ff8f2d44d28 in QCoreApplication::notifyInternal2 (receiver=0x5e7a8483e3a0, event=0x7ffdf99e8de0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1142 #27 0x00007ff8f2d44d6d in QCoreApplication::sendEvent (receiver=<optimized out>, event=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1583 #28 0x00007ff8f33bc8ec in QPlatformWindow::deliverUpdateRequest (this=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/gui/kernel/qplatformwindow.cpp:792 #29 0x00007ff8f2d8c00f in QObject::event (this=0x5e7a848677d0, e=0x5e7a8859e170) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:1452 #30 0x00007ff8f4cfc51c in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x5e7a848677d0, e=0x5e7a8859e170) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:3287 #31 0x00007ff8f2d44d28 in QCoreApplication::notifyInternal2 (receiver=0x5e7a848677d0, event=event@entry=0x5e7a8859e170) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1142 #32 0x00007ff8f2d450eb in QCoreApplication::sendEvent (receiver=<optimized out>, event=0x5e7a8859e170) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1583 #33 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x5e7a83700ba0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1940 #34 0x00007ff8f2fa49ec in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1797 #35 postEventSourceDispatch (s=0x5e7a8372ece0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:244 #36 0x00007ff8f188aab9 in g_main_dispatch (context=0x7ff8e4000f00) at ../glib/glib/gmain.c:3344 #37 0x00007ff8f18ec9e7 in g_main_context_dispatch_unlocked (context=0x7ff8e4000f00) at ../glib/glib/gmain.c:4152 #38 g_main_context_iterate_unlocked.isra.0 (context=context@entry=0x7ff8e4000f00, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4217 #39 0x00007ff8f1889fc5 in g_main_context_iteration (context=0x7ff8e4000f00, may_block=1) at ../glib/glib/gmain.c:4282 #40 0x00007ff8f2fa2cbd in QEventDispatcherGlib::processEvents (this=0x5e7a8373f820, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:394 #41 0x00007ff8f2d4f01e in QEventLoop::processEvents (this=0x7ffdf99e92a0, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:100 #42 QEventLoop::exec (this=0x7ffdf99e92a0, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:182 #43 0x00007ff8f2d4934d in QCoreApplication::exec () at /usr/src/debug/qt6-base/qtbase/src/corelib/global/qflags.h:74 #44 0x00007ff8f4cf83ba in QApplication::exec () at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:2555 #45 0x00005e7a4ed58d86 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/plasma-workspace/plasma-workspace-6.1.4/shell/main.cpp:188 *** This bug has been marked as a duplicate of bug 491946 *** |
Created attachment 172897 [details] Video of plasmashell freezing when playing specific tracks SUMMARY Plasmashell freezes when switching to specific tracks in Elisa with the Media Player widget in a panel STEPS TO REPRODUCE 1. Have the Media Player widget added to a panel 2. Have a playlist in Elisa with specific tracks 3. Skip tracks until it freezes plasmashell OBSERVED RESULT Plasmashell freezes and does not recover EXPECTED RESULT Plasmashell does not freeze and remains responsive SOFTWARE/OS VERSIONS Operating System: Fedora Linux 40 KDE Plasma Version: 6.1.4 KDE Frameworks Version: 6.5.0 Qt Version: 6.7.2 Kernel Version: 6.10.6-200.fc40.x86_64 (64-bit) Graphics Platform: Wayland Processors: 16 × Intel® Core™ i9-9900K CPU @ 3.60GHz Memory: 31.1 GiB of RAM Graphics Processor: NVIDIA GeForce GTX 1080 Ti/PCIe/SSE2 ADDITIONAL INFORMATION Elisa version: 24.05.2 When it skips to a track which causes a freeze, I see the following line in my journal Aug 23 23:20:57 kathdesktop elisa[4363]: [mp3float @ 0x5588c79f7780] Could not update timestamps for skipped samples. Using pkill -9 plasmashell will restore plasmashell. Although if one of the troublesome tracks is still playing, plasmashell will not begin. I have been able to reproduce this with the same tracks that seem to trigger it. I have attached a video of how it crashes. Showing expected functionality, until it reaches a track which causes a freeze. In this example, Thirty Seconds to Mars - Walk on Water