Bug 492109 - Plasmashell freezes when Media Player widget switches to certain tracks
Summary: Plasmashell freezes when Media Player widget switches to certain tracks
Status: RESOLVED DUPLICATE of bug 491946
Alias: None
Product: plasmashell
Classification: Plasma
Component: general (show other bugs)
Version: 6.1.4
Platform: Fedora RPMs Linux
: NOR normal
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-08-23 22:43 UTC by Kath
Modified: 2024-08-24 16:44 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments
Video of plasmashell freezing when playing specific tracks (2.06 MB, video/webm)
2024-08-23 22:43 UTC, Kath
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Kath 2024-08-23 22:43:41 UTC
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
Comment 1 James Lyne 2024-08-23 23:42:43 UTC
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
Comment 2 Nate Graham 2024-08-24 16:44:23 UTC

*** This bug has been marked as a duplicate of bug 491946 ***