Bug 494135

Summary: Media Player widget on panel causes plasmashell to freeze
Product: [Plasma] plasmashell Reporter: walmartshopper
Component: Media Player widgetAssignee: Plasma Bugs List <plasma-bugs-null>
Status: RESOLVED FIXED    
Severity: crash CC: akselmo, kde, kdedev, qydwhotmail
Priority: NOR    
Version First Reported In: git-stable-Plasma/6.1   
Target Milestone: 1.0   
Platform: Arch Linux   
OS: Linux   
See Also: https://bugs.kde.org/show_bug.cgi?id=492634
https://bugs.kde.org/show_bug.cgi?id=494238
Latest Commit: Version Fixed In:
Sentry Crash Report:
Attachments: backtrace

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