zzag / plasma5-wallpapers-dynamic

Dynamic wallpaper plugin for KDE Plasma
328 stars 18 forks source link

Plasmashell crashes on selecting dynamic wallpaper type #75

Closed rosefromthedead closed 3 years ago

rosefromthedead commented 3 years ago

On arch using wayland and plasma5-wallpapers-dynamic from the AUR, selecting the dynamic wallpaper type causes the configuration window and plasma shell to become unresponsive and crash after a few seconds. I can provide some logs but at the moment I don't know where to look for them

zzag commented 3 years ago

What dynamic wallpaper do you use?

rosefromthedead commented 3 years ago

I don't know, plasma shell crashes before I get to select one

zzag commented 3 years ago

Can you get the backtrace please?

rosefromthedead commented 3 years ago
Core was generated by `/usr/bin/plasmashell --no-respawn'.
Program terminated with signal SIGABRT, Aborted.
#0  0x00007f6ce0e6025b in pthread_sigmask@GLIBC_2.2.5 () from /usr/lib/libc.so.6
[Current thread is 1 (Thread 0x7f6cdc854340 (LWP 2348))]
(gdb) bt
#0  0x00007f6ce0e6025b in pthread_sigmask@GLIBC_2.2.5 () from /usr/lib/libc.so.6
#1  0x00007f6ce0e171bd in sigprocmask () from /usr/lib/libc.so.6
#2  0x00007f6ce272e597 in KCrash::setCrashHandler(void (*)(int)) () from /usr/lib/libKF5Crash.so.5
#3  0x00007f6ce272f180 in KCrash::defaultCrashHandler(int) () from /usr/lib/libKF5Crash.so.5
#4  <signal handler called>
#5  0x00007f6ce0e16ef5 in raise () from /usr/lib/libc.so.6
#6  0x00007f6ce0e00862 in abort () from /usr/lib/libc.so.6
#7  0x00007f6ce12169ac in QMessageLogger::fatal(char const*, ...) const () from /usr/lib/libQt5Core.so.5
#8  0x00007f6cded760fa in ?? () from /usr/lib/libQt5WaylandClient.so.5
#9  0x00007f6cded85465 in QtWaylandClient::QWaylandDisplay::flushRequests() () from /usr/lib/libQt5WaylandClient.so.5
#10 0x00007f6ce1472dc0 in ?? () from /usr/lib/libQt5Core.so.5
#11 0x00007f6ce1494665 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#12 0x00007f6ce143a3ac in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#13 0x00007f6ce1442844 in QCoreApplication::exec() () from /usr/lib/libQt5Core.so.5
#14 0x000056047668720b in ?? ()
#15 0x00007f6ce0e01b25 in __libc_start_main () from /usr/lib/libc.so.6
#16 0x000056047668733e in ?? ()

I don't know how helpful this is especially with the missing symbols...

zzag commented 3 years ago

Oh, that's weird. Can you please run plasmashell with WAYLAND_DEBUG=1 and try to reproduce the crash? I wonder why wayland connection breaks...

env WAYLAND_DEBUG=1 plasmashell --replace > log.txt 2>&1

Please redact any sensitive information in log.txt

rosefromthedead commented 3 years ago

I found out why the wayland connection breaks - turns out it was my fault. What's happening isn't a plasmashell crash but instead something is taking a really long time (roughly 30 seconds - maybe some timeout?), and I was clicking a little too much so that kwin decided plasmashell wasn't responding and hung up. I can get into the wallpaper selection menu now by clicking dynamic and not interacting with plasmashell for 30 seconds, to make sure it doesn't get killed :D Do you still want me to send the log? It's nearly 3000 lines long and that's after I remove the pointer events

zzag commented 3 years ago

That sort of explains why wayland connection breaks.

instead something is taking a really long time

Does it happen all the time? Wallpaper thumbnails are loaded asynchronously so there shouldn't be anything that blocks the main thread.

rosefromthedead commented 3 years ago

Yes, it happens every time I open the configuration menu for this plugin. Now that I have selected dynamic as my wallpaper type, the problem occurs as soon as I click on "Configure Desktop and Wallpaper..." in the plasma desktop menu.

zzag commented 3 years ago

Can you get the backtrace of plasmashell when it's frozen? You will need to attach a debugger to plasmashell process, e.g.

sudo gdb -p `pidof plasmashell`
rosefromthedead commented 3 years ago
#0  0x00007fd9c457d9ba in __futex_abstimed_wait_common64 () from /usr/lib/libpthread.so.0
#1  0x00007fd9c4577260 in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#2  0x00007fd9c553f0c4 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () from /usr/lib/libQt5Core.so.5
#3  0x00007fd9c60f3095 in ?? () from /usr/lib/libQt5DBus.so.5
#4  0x00007fd9c60b80a0 in ?? () from /usr/lib/libQt5DBus.so.5
#5  0x00007fd9c60a42dc in QDBusConnection::call(QDBusMessage const&, QDBus::CallMode, int) const () from /usr/lib/libQt5DBus.so.5
#6  0x00007fd9c60bf60b in ?? () from /usr/lib/libQt5DBus.so.5
#7  0x00007fd9c60c1722 in QDBusAbstractInterfaceBase::qt_metacall(QMetaObject::Call, int, void**) () from /usr/lib/libQt5DBus.so.5
#8  0x00007fd9c60c1888 in QDBusAbstractInterface::qt_metacall(QMetaObject::Call, int, void**) () from /usr/lib/libQt5DBus.so.5
#9  0x00007fd9799f36e7 in ?? () from /usr/lib/qt/plugins/position/libqtposition_geoclue2.so
#10 0x00007fd9c572d165 in QMetaProperty::read(QObject const*) const () from /usr/lib/libQt5Core.so.5
#11 0x00007fd9c5753b4e in QObject::property(char const*) const () from /usr/lib/libQt5Core.so.5
#12 0x00007fd9799ef534 in ?? () from /usr/lib/qt/plugins/position/libqtposition_geoclue2.so
#13 0x00007fd979a35eff in QGeoPositionInfoSource::setPreferredPositioningMethods(QFlags<QGeoPositionInfoSource::PositioningMethod>) () from /usr/lib/libQt5Positioning.so.5
#14 0x00007fd9799f111a in ?? () from /usr/lib/qt/plugins/position/libqtposition_geoclue2.so
#15 0x00007fd979aa7196 in QDeclarativePositionSource::tryAttach(QString const&, bool) () from /usr/lib/libQt5PositioningQuick.so.5
#16 0x00007fd9c6cf851f in QQmlObjectCreator::finalize(QQmlInstantiationInterrupt&) () from /usr/lib/libQt5Qml.so.5
#17 0x00007fd9c6c915b6 in QQmlIncubatorPrivate::incubate(QQmlInstantiationInterrupt&) () from /usr/lib/libQt5Qml.so.5
#18 0x00007fd9c6c91b60 in QQmlEnginePrivate::incubate(QQmlIncubator&, QQmlContextData*) () from /usr/lib/libQt5Qml.so.5
#19 0x00007fd9c6c8ca4a in QQmlComponent::create(QQmlIncubator&, QQmlContext*, QQmlContext*) () from /usr/lib/libQt5Qml.so.5
#20 0x00007fd9c06077bb in ?? () from /usr/lib/libQt5QuickTemplates2.so.5
#21 0x00007fd9c0609acc in QQuickStackView::replace(QQmlV4Function*) () from /usr/lib/libQt5QuickTemplates2.so.5
#22 0x00007fd9c0637533 in QQuickStackView::qt_metacall(QMetaObject::Call, int, void**) () from /usr/lib/libQt5QuickTemplates2.so.5
#23 0x00007fd9c6cc856e in ?? () from /usr/lib/libQt5Qml.so.5
#24 0x00007fd9c6bb0187 in QV4::QObjectMethod::callInternal(QV4::Value const*, QV4::Value const*, int) const () from /usr/lib/libQt5Qml.so.5
#25 0x00007fd9c6bdd7f2 in QV4::Runtime::CallQmlContextPropertyLookup::call(QV4::ExecutionEngine*, unsigned int, QV4::Value*, int) () from /usr/lib/libQt5Qml.so.5
#26 0x00007fd9c6bca3d2 in ?? () from /usr/lib/libQt5Qml.so.5
#27 0x00007fd9c6bce68f in ?? () from /usr/lib/libQt5Qml.so.5
#28 0x00007fd9c6b68d2e in QV4::Function::call(QV4::Value const*, QV4::Value const*, int, QV4::ExecutionContext const*) () from /usr/lib/libQt5Qml.so.5
#29 0x00007fd9c6ce4916 in QQmlJavaScriptExpression::evaluate(QV4::CallData*, bool*) () from /usr/lib/libQt5Qml.so.5
#30 0x00007fd9c6c9762d in QQmlBoundSignalExpression::evaluate(void**) () from /usr/lib/libQt5Qml.so.5
#31 0x00007fd9c6c97b11 in ?? () from /usr/lib/libQt5Qml.so.5
#32 0x00007fd9c6cc800d in QQmlNotifier::emitNotify(QQmlNotifierEndpoint*, void**) () from /usr/lib/libQt5Qml.so.5
#33 0x00007fd9c5757905 in ?? () from /usr/lib/libQt5Core.so.5
#34 0x00007fd9c6c7552e in QQmlVMEMetaObject::metaCall(QObject*, QMetaObject::Call, int, void**) () from /usr/lib/libQt5Qml.so.5
#35 0x00007fd9c6bb1424 in QV4::QObjectWrapper::setProperty(QV4::ExecutionEngine*, QObject*, QQmlPropertyData*, QV4::Value const&) () from /usr/lib/libQt5Qml.so.5
#36 0x00007fd9c6bb1aa9 in QV4::QObjectWrapper::setQmlProperty(QV4::ExecutionEngine*, QQmlContextData*, QObject*, QV4::String*, QV4::QObjectWrapper::RevisionMode, QV4::Value const&) () from /usr/lib/libQt5Qml.so.5
#37 0x00007fd9c6bb1c47 in QV4::QObjectWrapper::virtualPut(QV4::Managed*, QV4::PropertyKey, QV4::Value const&, QV4::Value*) () from /usr/lib/libQt5Qml.so.5
#38 0x00007fd9c6b7c52b in QV4::Object::virtualResolveLookupSetter(QV4::Object*, QV4::ExecutionEngine*, QV4::Lookup*, QV4::Value const&) () from /usr/lib/libQt5Qml.so.5
#39 0x00007fd9c6bca809 in ?? () from /usr/lib/libQt5Qml.so.5
#40 0x00007fd9c6bce68f in ?? () from /usr/lib/libQt5Qml.so.5
#41 0x00007fd9c6b68d2e in QV4::Function::call(QV4::Value const*, QV4::Value const*, int, QV4::ExecutionContext const*) () from /usr/lib/libQt5Qml.so.5
#42 0x00007fd9c6ce4916 in QQmlJavaScriptExpression::evaluate(QV4::CallData*, bool*) () from /usr/lib/libQt5Qml.so.5
#43 0x00007fd9c6c9762d in QQmlBoundSignalExpression::evaluate(void**) () from /usr/lib/libQt5Qml.so.5
#44 0x00007fd9c6c97b11 in ?? () from /usr/lib/libQt5Qml.so.5
#45 0x00007fd9c6cc800d in QQmlNotifier::emitNotify(QQmlNotifierEndpoint*, void**) () from /usr/lib/libQt5Qml.so.5
#46 0x00007fd9c5757905 in ?? () from /usr/lib/libQt5Core.so.5
#47 0x00007fd9c062657f in QQuickComboBox::activated(int) () from /usr/lib/libQt5QuickTemplates2.so.5
#48 0x00007fd9c0627933 in QQuickComboBox::qt_metacall(QMetaObject::Call, int, void**) () from /usr/lib/libQt5QuickTemplates2.so.5
#49 0x00007fd9c6cc856e in ?? () from /usr/lib/libQt5Qml.so.5
#50 0x00007fd9c6bae09f in ?? () from /usr/lib/libQt5Qml.so.5
#51 0x00007fd9c6baff3a in QV4::QObjectMethod::callInternal(QV4::Value const*, QV4::Value const*, int) const () from /usr/lib/libQt5Qml.so.5
#52 0x00007fd9c6bcbb37 in ?? () from /usr/lib/libQt5Qml.so.5
#53 0x00007fd9c6bce68f in ?? () from /usr/lib/libQt5Qml.so.5
#54 0x00007fd9c6b68d2e in QV4::Function::call(QV4::Value const*, QV4::Value const*, int, QV4::ExecutionContext const*) () from /usr/lib/libQt5Qml.so.5
#55 0x00007fd9c6ce4916 in QQmlJavaScriptExpression::evaluate(QV4::CallData*, bool*) () from /usr/lib/libQt5Qml.so.5
#56 0x00007fd9c6c9762d in QQmlBoundSignalExpression::evaluate(void**) () from /usr/lib/libQt5Qml.so.5
#57 0x00007fd9c6c97b11 in ?? () from /usr/lib/libQt5Qml.so.5
#58 0x00007fd9c6cc800d in QQmlNotifier::emitNotify(QQmlNotifierEndpoint*, void**) () from /usr/lib/libQt5Qml.so.5
#59 0x00007fd9c5757905 in ?? () from /usr/lib/libQt5Core.so.5
#60 0x00007fd9c6cf87eb in QQmlObjectCreator::finalize(QQmlInstantiationInterrupt&) () from /usr/lib/libQt5Qml.so.5
#61 0x00007fd9c6c915b6 in QQmlIncubatorPrivate::incubate(QQmlInstantiationInterrupt&) () from /usr/lib/libQt5Qml.so.5
#62 0x00007fd9c6c91b60 in QQmlEnginePrivate::incubate(QQmlIncubator&, QQmlContextData*) () from /usr/lib/libQt5Qml.so.5
#63 0x00007fd9c6c8ca4a in QQmlComponent::create(QQmlIncubator&, QQmlContext*, QQmlContext*) () from /usr/lib/libQt5Qml.so.5
#64 0x00007fd9c72448da in ?? () from /usr/lib/libQt5Quick.so.5
#65 0x00007fd9c7245b6b in ?? () from /usr/lib/libQt5Quick.so.5
#66 0x00007fd9c6c8694b in QQmlPropertyPrivate::write(QObject*, QQmlPropertyData const&, QVariant const&, QQmlContextData*, QFlags<QQmlPropertyData::WriteFlag>) () from /usr/lib/libQt5Qml.so.5
#67 0x00007fd9c6bb1079 in QV4::QObjectWrapper::setProperty(QV4::ExecutionEngine*, QObject*, QQmlPropertyData*, QV4::Value const&) () from /usr/lib/libQt5Qml.so.5
#68 0x00007fd9c6bb1aa9 in QV4::QObjectWrapper::setQmlProperty(QV4::ExecutionEngine*, QQmlContextData*, QObject*, QV4::String*, QV4::QObjectWrapper::RevisionMode, QV4::Value const&) () from /usr/lib/libQt5Qml.so.5
#69 0x00007fd9c6bb1c47 in QV4::QObjectWrapper::virtualPut(QV4::Managed*, QV4::PropertyKey, QV4::Value const&, QV4::Value*) () from /usr/lib/libQt5Qml.so.5
#70 0x00007fd9c6b7c52b in QV4::Object::virtualResolveLookupSetter(QV4::Object*, QV4::ExecutionEngine*, QV4::Lookup*, QV4::Value const&) () from /usr/lib/libQt5Qml.so.5
#71 0x00007fd9c6bca809 in ?? () from /usr/lib/libQt5Qml.so.5
#72 0x00007fd9c6bce68f in ?? () from /usr/lib/libQt5Qml.so.5
#73 0x00007fd9c6b69bc9 in ?? () from /usr/lib/libQt5Qml.so.5
#74 0x00007fd9c6bdd7f2 in QV4::Runtime::CallQmlContextPropertyLookup::call(QV4::ExecutionEngine*, unsigned int, QV4::Value*, int) () from /usr/lib/libQt5Qml.so.5
#75 0x00007fd9c6bca3d2 in ?? () from /usr/lib/libQt5Qml.so.5
#76 0x00007fd9c6bce68f in ?? () from /usr/lib/libQt5Qml.so.5
#77 0x00007fd9c6b68d2e in QV4::Function::call(QV4::Value const*, QV4::Value const*, int, QV4::ExecutionContext const*) () from /usr/lib/libQt5Qml.so.5
#78 0x00007fd9c6ce4916 in QQmlJavaScriptExpression::evaluate(QV4::CallData*, bool*) () from /usr/lib/libQt5Qml.so.5
#79 0x00007fd9c6c9762d in QQmlBoundSignalExpression::evaluate(void**) () from /usr/lib/libQt5Qml.so.5
#80 0x00007fd9c6c97b11 in ?? () from /usr/lib/libQt5Qml.so.5
#81 0x00007fd9c6cc800d in QQmlNotifier::emitNotify(QQmlNotifierEndpoint*, void**) () from /usr/lib/libQt5Qml.so.5
#82 0x00007fd9c5757905 in ?? () from /usr/lib/libQt5Core.so.5
#83 0x00007fd9c6cf87eb in QQmlObjectCreator::finalize(QQmlInstantiationInterrupt&) () from /usr/lib/libQt5Qml.so.5
#84 0x00007fd9c6c8b60d in QQmlComponentPrivate::complete(QQmlEnginePrivate*, QQmlComponentPrivate::ConstructionState*) () from /usr/lib/libQt5Qml.so.5
#85 0x00007fd9c6c8d930 in QQmlComponentPrivate::completeCreate() () from /usr/lib/libQt5Qml.so.5
#86 0x00007fd9c6c8dae1 in QQmlComponent::create(QQmlContext*) () from /usr/lib/libQt5Qml.so.5
#87 0x00007fd9c7249b31 in QQuickView::continueExecute() () from /usr/lib/libQt5Quick.so.5
#88 0x000055ee011b9579 in ?? ()
#89 0x000055ee011bfbc0 in ?? ()
#90 0x00007fd9c5757d86 in ?? () from /usr/lib/libQt5Core.so.5
#91 0x00007fd9c7560e93 in Plasma::Containment::configureRequested(Plasma::Applet*) () from /usr/lib/libKF5Plasma.so.5
#92 0x00007fd9c5757dc0 in ?? () from /usr/lib/libQt5Core.so.5
#93 0x00007fd9c63b8f63 in QAction::triggered(bool) () from /usr/lib/libQt5Widgets.so.5
#94 0x00007fd9c63bb845 in QAction::activate(QAction::ActionEvent) () from /usr/lib/libQt5Widgets.so.5
#95 0x00007fd9c653d3ab in ?? () from /usr/lib/libQt5Widgets.so.5
#96 0x00007fd9c6544ae2 in ?? () from /usr/lib/libQt5Widgets.so.5
#97 0x00007fd9c6400b0e in QWidget::event(QEvent*) () from /usr/lib/libQt5Widgets.so.5
#98 0x00007fd9c63bf752 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#99 0x00007fd9c63c687b in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#100 0x00007fd9c5720a2a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#101 0x00007fd9c63c587e in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) () from /usr/lib/libQt5Widgets.so.5
#102 0x00007fd9c64197cf in ?? () from /usr/lib/libQt5Widgets.so.5
#103 0x00007fd9c641c63f in ?? () from /usr/lib/libQt5Widgets.so.5
#104 0x00007fd9c63bf752 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#105 0x00007fd9c5720a2a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#106 0x00007fd9c5afa594 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () from /usr/lib/libQt5Gui.so.5
#107 0x00007fd9c5acfbb5 in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Gui.so.5
#108 0x00007fd9c309ca81 in ?? () from /usr/lib/libQt5WaylandClient.so.5
#109 0x00007fd9c3b05f9c in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#110 0x00007fd9c3b59a49 in ?? () from /usr/lib/libglib-2.0.so.0
#111 0x00007fd9c3b036f1 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#112 0x00007fd9c5779691 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#113 0x00007fd9c571f3ac in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#114 0x00007fd9c5727844 in QCoreApplication::exec() () from /usr/lib/libQt5Core.so.5
#115 0x000055ee011b120b in ?? ()
#116 0x00007fd9c50e6b25 in __libc_start_main () from /usr/lib/libc.so.6
#117 0x000055ee011b133e in ?? ()
zzag commented 3 years ago

Aha, is geoclue installed on your computer?

rosefromthedead commented 3 years ago

It is, I have 2.5.7-2 from arch repos

rosefromthedead commented 3 years ago

Welp, KDE's night colour seems to think I am at 0 lat 0 long. Not sure what is going on here, will have a look at some man pages :D

zzag commented 3 years ago

It looks like a geoclue-related issue, geoclue doesn't respond within reasonable amount of time. You can work around it by unchecking "Automatically detect location".

rosefromthedead commented 3 years ago

Yeah, my geoclue service isn't starting properly. Thank you so much for your help

rosefromthedead commented 3 years ago

Spoke too soon - I turned off "automatically detect location" and the problem still happens, with journalctl -xe showing that it is still attempting to start geoclue. Is it possible to reduce the timeout so that an error in geoclue doesn't end up with plasmashell getting killed, and to only query geoclue if the checkbox is enabled?

zzag commented 3 years ago

How many outputs do you have?

rosefromthedead commented 3 years ago

I have 2. At the time I posted the last comment, one had dynamic (no location autodetect) and one had static image wallpaper. I switched the second one to dynamic and made sure location autodetect was off and the problem still happens

zzag commented 3 years ago

Sigh, it looks like QtPositioning makes dbus calls to geoclue daemon behind our back. :(

Not sure what I can do about it. As for the timeout value, it's not configurable as far as I know. It's a fail-safe timer in QtDBus, which is buried beneath lots of code.

zzag commented 3 years ago

Just to be sure, do you see AutoDetectLocation=false in .config/plasma-org.kde.plasma.desktop-appletsrc?

rosefromthedead commented 3 years ago

Yes for both instances of dynamic wallpaper

zzag commented 3 years ago

Okay, it confirms that QtPositioning makes dbus calls behind our backs. :( As I said, there is not a lot that I can do about it unfortunately. It seems like geoclue is broken, at least it shouldn't take that long for dbus calls to complete.

rosefromthedead commented 3 years ago

Yeah, I don't know what I've done wrong but the service fails to start, something about user credentials... either way it's a shame these calls can't be inhibited but thank you for looking into it

zzag commented 3 years ago

Okay, it looks like a setup issue. Alternatively, you could try removing geoclue.