Bug 433415

Summary: Plasma shell crashes when messing around application audio settings in tray fly-out
Product: [Plasma] plasmashell Reporter: goldenhashtag
Component: generalAssignee: David Edmundson <kde>
Status: RESOLVED DUPLICATE    
Severity: crash CC: nate, plasma-bugs
Priority: NOR Keywords: drkonqi
Version: 5.21.0   
Target Milestone: 1.0   
Platform: openSUSE   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description goldenhashtag 2021-02-22 05:30:17 UTC
Application: plasmashell (5.21.0)

Qt Version: 5.15.2
Frameworks Version: 5.79.0
Operating System: Linux 5.10.16-1-default x86_64
Windowing System: X11
Drkonqi Version: 5.21.0
Distribution: "openSUSE Tumbleweed"

-- Information about the crash:
When used together with PulseEffects, messing around output settings via audio tray causes Plasma shell to crash.

Plasma shell version is 5.21.0. This issue won't occur in previous version (5.20 ?)

Steps to reproduce:

1.  Install PulseEffects and make sure it's running;
2.  Enable some random effects;
3.  Use whatever music player you like to play a music (This is necessary to reproduce; silent status won't make plasma shell crash; For me VLC and Lollypop can reproduce this)
4.  Open volume tray fly-out, switch to Applications tab (this is necessary, crashes won't occur when you mess around settings in Devices tab), find the music player that is playing music, change its output device to hardware output, then change back, repeat this process for mutliple times, then switch back to Devices tab, Plasma shell should crash now;
5.  If above steps won't crash Plasma shell, switch to Applications tab, in additional to step.4, also change PulseEffects application volume and output device repeatedly, then switch back to Devices tab, Plasma shell should crash now.

Above step reproduces for both my laptop and desktop, one is upgraded to 5.21.0, another is clean reinstalled to 5.21.0, both running openSUSE Tumbleweed.

This issue won't occur without PulseEffects, however an audio post-processing software that routes output devices crashes Plasma shell indicates complicated audio output setup isn't handled well.

The crash can be reproduced every time.

-- Backtrace:
Application: Plasma (plasmashell), signal: Aborted

[KCrash Handler]
#4  0x00007f989079a495 in raise () at /lib64/libc.so.6
#5  0x00007f9890783864 in abort () at /lib64/libc.so.6
#6  0x00007f983b2b7155 in pa_stream_set_read_callback (s=<optimized out>, cb=cb@entry=0x0, userdata=userdata@entry=0x0) at pulse/stream.c:2083
#7  0x00007f983b32fb6a in QPulseAudio::VolumeMonitor::setTarget(QPulseAudio::VolumeObject*) (this=0x564cd54a8820, target=0x0) at /usr/src/debug/plasma5-pa-5.21.0-1.1.x86_64/src/volumemonitor.cpp:75
#8  0x00007f98924d0357 in QQmlPropertyData::writeProperty(QObject*, void*, QFlags<QQmlPropertyData::WriteFlag>) const (flags=..., value=0x7ffc3d486e38, target=<optimized out>, this=<optimized out>) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-2.2.x86_64/include/QtQml/5.15.2/QtQml/private/../../../../../src/qml/qml/qqmlpropertydata_p.h:375
#9  QObjectPointerBinding::write(QV4::Value const&, bool, QFlags<QQmlPropertyData::WriteFlag>) (this=0x564cd54a9f20, result=..., isUndefined=<optimized out>, flags=...) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-2.2.x86_64/src/qml/qml/qqmlbinding.cpp:715
#10 0x00007f98924d1b2e in QQmlNonbindingBinding::doUpdate(QQmlJavaScriptExpression::DeleteWatcher const&, QFlags<QQmlPropertyData::WriteFlag>, QV4::Scope&) (this=0x564cd54a9f20, watcher=..., flags=..., scope=...) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-2.2.x86_64/src/qml/qml/qqmlbinding.cpp:258
#11 0x00007f98924cf7e4 in QQmlBinding::update(QFlags<QQmlPropertyData::WriteFlag>) (this=0x564cd54a9f20, flags=...) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-2.2.x86_64/src/qml/qml/qqmlbinding.cpp:194
#12 0x00007f98924ac84d in QQmlNotifier::emitNotify(QQmlNotifierEndpoint*, void**) (endpoint=<optimized out>, a=0x0) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-2.2.x86_64/src/qml/qml/qqmlnotifier.cpp:104
#13 0x00007f9890e544d5 in doActivate<false>(QObject*, int, void**) (sender=0x564cd21c7c50, signal_index=18, argv=argv@entry=0x0) at kernel/qobject.cpp:3778
#14 0x00007f9890e4dc60 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=sender@entry=0x564cd21c7c50, m=m@entry=0x7f9892cb4e20, local_signal_index=local_signal_index@entry=15, argv=argv@entry=0x0) at kernel/qobject.cpp:3946
#15 0x00007f98929c8753 in QQuickItem::visibleChanged() (this=this@entry=0x564cd21c7c50) at .moc/moc_qquickitem.cpp:1170
#16 0x00007f98929dd028 in QQuickItemPrivate::setEffectiveVisibleRecur(bool) (this=0x564cd3ec0a50, newEffectiveVisible=<optimized out>) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-2.2.x86_64/src/quick/items/qquickitem.cpp:6057
#17 0x00007f98929dcf9b in QQuickItemPrivate::setEffectiveVisibleRecur(bool) (this=0x564cd2365990, newEffectiveVisible=<optimized out>) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-2.2.x86_64/src/quick/items/qquickitem.cpp:6048
#18 0x00007f98929dcf9b in QQuickItemPrivate::setEffectiveVisibleRecur(bool) (this=this@entry=0x564ccbe5fe50, newEffectiveVisible=<optimized out>) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-2.2.x86_64/src/quick/items/qquickitem.cpp:6048
#19 0x00007f98929dd0f3 in QQuickItemPrivate::setVisible(bool) (this=0x564ccbe5fe50, visible=<optimized out>) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-2.2.x86_64/src/quick/items/qquickitem.cpp:5951
#20 0x00007f98924d113f in QQmlPropertyData::writeProperty(QObject*, void*, QFlags<QQmlPropertyData::WriteFlag>) const (flags=..., value=0x7ffc3d488aef, target=<optimized out>, this=<optimized out>) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-2.2.x86_64/include/QtQml/5.15.2/QtQml/private/../../../../../src/qml/qml/qqmlpropertydata_p.h:375
#21 GenericBinding<1>::doStore<bool>(bool, QQmlPropertyData const*, QFlags<QQmlPropertyData::WriteFlag>) const (flags=..., pd=<optimized out>, value=<optimized out>, this=<optimized out>) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-2.2.x86_64/src/qml/qml/qqmlbinding.cpp:342
#22 GenericBinding<1>::write(QV4::Value const&, bool, QFlags<QQmlPropertyData::WriteFlag>) (this=0x564cd3e4a930, result=..., isUndefined=<optimized out>, flags=...) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-2.2.x86_64/src/qml/qml/qqmlbinding.cpp:305
#23 0x00007f98924d1b2e in QQmlNonbindingBinding::doUpdate(QQmlJavaScriptExpression::DeleteWatcher const&, QFlags<QQmlPropertyData::WriteFlag>, QV4::Scope&) (this=0x564cd3e4a930, watcher=..., flags=..., scope=...) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-2.2.x86_64/src/qml/qml/qqmlbinding.cpp:258
#24 0x00007f98924cf7e4 in QQmlBinding::update(QFlags<QQmlPropertyData::WriteFlag>) (this=0x564cd3e4a930, flags=...) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-2.2.x86_64/src/qml/qml/qqmlbinding.cpp:194
#25 0x00007f98924ac84d in QQmlNotifier::emitNotify(QQmlNotifierEndpoint*, void**) (endpoint=<optimized out>, a=0x0) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-2.2.x86_64/src/qml/qml/qqmlnotifier.cpp:104
#26 0x00007f9890e544d5 in doActivate<false>(QObject*, int, void**) (sender=0x564cd516cfd0, signal_index=30, argv=argv@entry=0x0) at kernel/qobject.cpp:3778
#27 0x00007f9890e4de7d in QMetaObject::activate(QObject*, int, int, void**) (sender=<optimized out>, signalOffset=<optimized out>, local_signal_index=<optimized out>, argv=argv@entry=0x0) at kernel/qobject.cpp:3959
#28 0x00007f9892458f45 in QQmlVMEMetaObject::activate(QObject*, int, void**) (this=this@entry=0x564cce91f2e0, object=<optimized out>, index=<optimized out>, args=args@entry=0x0) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-2.2.x86_64/src/qml/qml/qqmlvmemetaobject.cpp:1312
#29 0x00007f989245b51d in QQmlVMEMetaObject::metaCall(QObject*, QMetaObject::Call, int, void**) (this=0x564cce91f2e0, o=<optimized out>, c=<optimized out>, _id=<optimized out>, a=<optimized out>) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-2.2.x86_64/src/qml/qml/qqmlvmemetaobject.cpp:880
#30 0x00007f989246bd40 in QQmlPropertyData::writeProperty(QObject*, void*, QFlags<QQmlPropertyData::WriteFlag>) const (flags=..., value=0x7ffc3d48a788, target=0x564cd516cfd0, this=0x7f98646c16f8) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-2.2.x86_64/include/QtQml/5.15.2/QtQml/private/../../../../../src/qml/qml/qqmlpropertydata_p.h:285
#31 QQmlPropertyPrivate::write(QObject*, QQmlPropertyData const&, QVariant const&, QQmlContextData*, QFlags<QQmlPropertyData::WriteFlag>) (object=object@entry=0x564cd516cfd0, property=..., value=..., context=<optimized out>, flags=..., flags@entry=...) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-2.2.x86_64/src/qml/qml/qqmlproperty.cpp:1271
#32 0x00007f98923990db in QV4::QObjectWrapper::setProperty(QV4::ExecutionEngine*, QObject*, QQmlPropertyData*, QV4::Value const&) (engine=0x564ccb99a8e0, object=0x564cd516cfd0, property=0x7f98646c16f8, value=...) at /usr/include/qt5/QtCore/qflags.h:120
#33 0x00007f9892399ad7 in QV4::QObjectWrapper::setQmlProperty(QV4::ExecutionEngine*, QQmlContextData*, QObject*, QV4::String*, QV4::QObjectWrapper::RevisionMode, QV4::Value const&) (value=..., revisionMode=QV4::QObjectWrapper::IgnoreRevision, name=<optimized out>, object=0x564cd516cfd0, qmlContext=<optimized out>, engine=0x564ccb99a8e0) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-2.2.x86_64/src/qml/jsruntime/qv4qobjectwrapper.cpp:435
#34 QV4::QObjectWrapper::setQmlProperty(QV4::ExecutionEngine*, QQmlContextData*, QObject*, QV4::String*, QV4::QObjectWrapper::RevisionMode, QV4::Value const&) (engine=0x564ccb99a8e0, qmlContext=<optimized out>, object=0x564cd516cfd0, name=<optimized out>, revisionMode=QV4::QObjectWrapper::IgnoreRevision, value=...) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-2.2.x86_64/src/qml/jsruntime/qv4qobjectwrapper.cpp:418
#35 0x00007f9892399c75 in QV4::QObjectWrapper::virtualPut(QV4::Managed*, QV4::PropertyKey, QV4::Value const&, QV4::Value*) (m=0x7f98721af588, id=..., value=..., receiver=0x7f98721af588) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-2.2.x86_64/src/qml/jsruntime/qv4qobjectwrapper.cpp:722
#36 0x00007f989232ae93 in QV4::Object::put(QV4::StringOrSymbol*, QV4::Value const&, QV4::Value*) (receiver=0x7f98721af588, v=..., name=0x7f98721af590, this=0x7f98721af588) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-2.2.x86_64/include/QtQml/5.15.2/QtQml/private/../../../../../src/qml/jsruntime/qv4string_p.h:167
#37 QV4::Lookup::setterFallback(QV4::Lookup*, QV4::ExecutionEngine*, QV4::Value&, QV4::Value const&) (l=<optimized out>, engine=0x564ccb99a8e0, object=<optimized out>, value=...) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-2.2.x86_64/src/qml/jsruntime/qv4lookup.cpp:497
#38 0x00007f9862bbcbac in  ()
#39 0x0000000000000000 in  ()
[Inferior 1 (process 3362) detached]

Possible duplicates by query: bug 432551, bug 432216, bug 432029, bug 431718, bug 431532.

Reported using DrKonqi
Comment 1 Nate Graham 2021-02-22 21:23:49 UTC

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