Bug 494135 - Media Player widget on panel causes plasmashell to freeze
Summary: Media Player widget on panel causes plasmashell to freeze
Status: RESOLVED FIXED
Alias: None
Product: plasmashell
Classification: Plasma
Component: Media Player widget (show other bugs)
Version: git-stable-Plasma/6.1
Platform: Arch Linux Linux
: NOR crash
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-10-04 19:25 UTC by walmartshopper
Modified: 2024-10-09 14:48 UTC (History)
4 users (show)

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


Attachments
backtrace (529.75 KB, text/plain)
2024-10-04 19:25 UTC, walmartshopper
Details

Note You need to log in before you can comment on or make changes to this bug.
Description walmartshopper 2024-10-04 19:25:07 UTC
Created attachment 174433 [details]
backtrace

SUMMARY
When a media player widget is added to a panel, playing music from Spotify sometimes causes plasmashell to freeze and become unresponsive with high cpu.  Plasmashell has been freezing on average 3-5 times over a standard work day

STEPS TO REPRODUCE
1. Add a media player widget to a panel
2. Play music from spotify
3. Continue playing music.  Sometimes it freezes quickly and other times it freezes after several hours.

OBSERVED RESULT
plasmashell freezes and needs to be killed

EXPECTED RESULT
plasmashell doesn't freeze

SOFTWARE/OS VERSIONS
Operating System: Arch Linux 
KDE Plasma Version: 6.1.5
KDE Frameworks Version: 6.6.0
Qt Version: 6.7.3
Kernel Version: 6.11.1-1-cachyos (64-bit)
Graphics Platform: Wayland
Processors: 24 × 13th Gen Intel® Core™ i7-13700KF
Memory: 31.2 GiB of RAM
Graphics Processor: AMD Radeon RX 7900 XTX
Manufacturer: ASUS

OTHER 
I originally thought I was affected by https://bugs.kde.org/show_bug.cgi?id=492634 but based on my backtrace I was told this is a different bug and asked to create a new bug report.
Comment 1 walmartshopper 2024-10-04 19:26:50 UTC
I forgot to mention that removing the media player from the panel causes the crashes to stop.
Comment 2 Akseli Lahtinen 2024-10-07 10:32:28 UTC
Possibly relevant parts of the backtrace:

#18 QSvgTinyDocument::draw (this=<optimized out>, p=0x7ffcdf1853f8, id=<optimized out>, bounds=<optimized out>) at /usr/src/debug/qt6-svg/qtsvg/src/svg/qsvgtinydocument.cpp:297
        node = 0x5e5188568390
        elementBounds = {xp = -271, yp = 446.99992000000009, w = 4, h = 4}
        originalTransform = {m_matrix = {{371.25, 0, 0}, {0, 1, 0}, {100608.75, -446.99992000000009, 1}}, m_type = 1, m_dirty = 2}
        pen = {d = {d = 0x5e518ffd5f30}}
        parentApplyStack = {<QList<QSvgNode*>> = {<QListSpecialMethods<QSvgNode*>> = {<QListSpecialMethodsBase<QSvgNode*>> = {<No data fields>}, <No data fields>}, d = {d = 0x5e5190db7eb0, ptr = 0x5e5190db7ec0, size = 2}}, <No data fields>}
        parent = <optimized out>
        currentTransform = {m_matrix = {{371.25, 0, 0}, {0, 1, 0}, {201588.75, -888.98732000000007, 1}}, m_type = 2, m_dirty = 2}
#19 0x000077f3d0865e20 in KSvg::SvgPrivate::findInCache (this=<optimized out>, elementId=..., ratio=1, s=...) at /usr/src/debug/ksvg/ksvg-6.6.0/src/ksvg/svg.cpp:619
        size = {wd = 1485, ht = 4}
        actualElementId = {d = {d = 0x5e51885998e0, ptr = 0x5e51885998f0 u"topright", size = 8}, static _empty = 0 u'\000'}
        id = {d = {d = 0x5e51911ee460, ptr = 0x5e51911ee470 u"81421435604997704", size = 17}, static _empty = 0 u'\000'}
        p = {<QPaintDevice> = {_vptr.QPaintDevice = 0x77f3cee2d548 <vtable for QPixmap+16>, painters = 1}, data = {d = 0x5e5193a63530}}
        finalRect = {xp = 0, yp = 0, w = 1485, h = 4}
        renderPainter = {static staticMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x77f3ced445e0 <_ZN12_GLOBAL__N_1L40qt_meta_stringdata_CLASSQPainterENDCLASSE.lto_priv.0>, data = 0x77f3ced44500 <_ZL34qt_meta_data_CLASSQPainterENDCLASS.lto_priv.0>, static_metacall = 0x0, relatedMetaObjects = 0x0, metaTypes = 0x77f3cee30ec0 <_Z27qt_incomplete_metaTypeArrayIN12_GLOBAL__N_142qt_meta_stringdata_CLASSQPainterENDCLASS_tEJN9QtPrivate20TypeAndForceCompleteIN8QPainter10RenderHintESt17integral_constantIbLb1EEEENS3_I6QFlagsIS5_ES7_EENS3_IS4_S7_EEEE.lto_priv.0>, extradata = 0x0}}, d_ptr = std::unique_ptr<class QPainterPrivate> = {get() = 0x5e518b72d990}}
#20 0x000077f3d08673bd in KSvg::Svg::image (this=<optimized out>, size=..., elementID=...) at /usr/src/debug/ksvg/ksvg-6.6.0/src/ksvg/svg.cpp:901
        pix = {<QPaintDevice> = {_vptr.QPaintDevice = 0x5e518f3feee0, painters = 22224}, data = {d = 0x7ffcdf1856a0}}
#21 0x000077f3bd70084d in KSvg::SvgItem::updatePolish (this=0x5e51880d0050) at /usr/src/debug/ksvg/ksvg-6.6.0/src/declarativeimports/svgitem.cpp:253
#22 0x000077f3cf84954f in QQuickWindowPrivate::polishItems (this=0x5e518629e040) at /usr/src/debug/qt6-declarative/qtdeclarative/src/quick/items/qquickwindow.cpp:348
        item = 0x5e51880d0050
        itemPrivate = <optimized out>
        itemsRemaining = <optimized out>
        polishLoopDetector = {itemsToPolish = <optimized out>, numPolishLoopsInSequence = 0}

Something in ksvg?
Comment 3 Fushan Wen 2024-10-09 14:48:19 UTC
Should be fixed in 6.2