Zren / plasma-applet-eventcalendar

https://store.kde.org/p/998901/
469 stars 92 forks source link

Black Screen on Login / Crash on Arch/Manjaro (Qt 5.15.1) (EventCalendar v68 and below) #154

Open rapiz1 opened 3 years ago

rapiz1 commented 3 years ago

I don't know what version to provide. But it's necessary to bring up an issue anyway. In AUR someone also mention it.

Zren commented 3 years ago
Zren commented 3 years ago

I need the segfault logs, not the logs from when it was running fine. Unfortunately the DrKonqi is in the system tray, which you can't access when plasmashell has crashed.

Krunner should still work even if plasmashell crashes, so just press Alt+F2 during the black screen. Then run plasmawindowed org.kde.plasma.systemtray to show the system tray in an independant window.

Copy the stack trace in the developer info tab (don't submit it to kde).

You should also be able to open firefox with krunner too.

Zren commented 3 years ago

2020-09-14___20-46-00

Gonna need to be more specific. I installed plasma5-applets-eventcalendar via AUR. Looks like KHolidays is displayed. Haven't logged into Google Calendar yet.

StepinSilence commented 3 years ago

It seems that only v69 release is compatible with qt-declarative 5.15.1. I tried old v66, v67, and v68, all of them break plasmashell.

Zren commented 3 years ago

Then it's either: https://github.com/Zren/plasma-applet-eventcalendar/compare/v68...v69

Will check both this afternoon. Thanks for figuring out that it's probably people using an older version of the widget.

Does AUR not automatically update? Or are people not uninstalling eventcalendar in ~/.local/share/plasma/plasmoids/ before installing the AUR package to /usr/share/plasma/plasmoids/?

Zren commented 3 years ago
# First uninstall v69
kpackagetool5 --type=Plasma/Applet --remove org.kde.plasma.eventcalendar # ~/.local/share/plasma/plasmoids/...
pacman -R plasma5-applets-eventcalandar # /usr/share/plasma/plasmoids/...

# Then installed v68 from git
git clone https://github.com/Zren/plasma-applet-eventcalendar
cd plasma-applet-eventcalendar
git checkout v68
kpackagetool5 --type=Plasma/Applet --install package/
kstart5 -- plasmashell --replace
# crashed!

Now to isolate the commit that fixes the bug with --upgrade:

git checkout 83e08ab; kpackagetool5 --type=Plasma/Applet --upgrade package/; kstart5 -- plasmashell --replace

Note that 83e08ab works, but the commit before and after crash plasma. Also note to self, I forked a v68release branch for the v68 so that the major changes would all go in v69.

Akrai commented 3 years ago

Having this applet installed from AUR should get updated in the user side, right?

Zren commented 3 years ago

I don't use Arch/AUR, so I don't know if it updates manually or when pacman updates.


Arch Linux / Manjaro

To check if you have an older version of eventcalendar installed, run:

grep Version ~/.local/share/plasma/plasmoids/org.kde.plasma.eventcalendar/metadata.desktop /usr/share/plasma/plasmoids/org.kde.plasma.eventcalendar/metadata.desktop

If you see:

/home/zren/.local/share/plasma/plasmoids/org.kde.plasma.eventcalendar/metadata.desktop:X-KDE-PluginInfo-Version=66
/usr/share/plasma/plasmoids/org.kde.plasma.eventcalendar/metadata.desktop:X-KDE-PluginInfo-Version=69

Then you have 2 versions installed. The ~/.local/share with v66 (for the local user) overrides the /usr/share v69 install (for all users).

To enter this bug, you would have installed v66 from the Add Widgets > Download New Widgets. It installs to ~/.local/share/ as you never entered your password to install it, and it only installed to the logged in user.

Later on, the user may have noticed plasma5-applets-eventcalendar on the AUR and installed it as sudo/root. That installed it for all users.

Since the user never uninstalled the ~/.local/share version, Plasma kept using the older v66.

To fix, delete the ~/.local/share/plasma/plasmoids/org.kde.plasma.eventcalendar folder to uninstall that.


KDE Neon

For users in other distros, the Discover updater used to update widgets in ~/.local/share, but it seems buggy atm (fixed in Plasma 5.20 apparently). So make sure you have updated to v69.

grep Version ~/.local/share/plasma/plasmoids/org.kde.plasma.eventcalendar/metadata.desktop

To fix, delete the ~/.local/share/plasma/plasmoids/org.kde.plasma.eventcalendar folder to uninstall the old version, then reinstall it via Add Widgets > Download New Widgets.

cgarz commented 3 years ago

If only I had came here first. I ended up coming to the same solution after 2 hours of messing about :laughing:

I had an old version installed and it crashed plasmashell after an update. I ended up removing my plasma-org.kde.plasma.desktop-appletsrc config and starting from scratch. But even after installing the AUR package it would still crash.

Eventually I found that I had to manually remove the local folder as described above. For some reason KDE doesn't seem to be able to do it from the widget gui menu. IIRC I also had similar problems trying to install it from there in the first place.

Does AUR not automatically update?

There is probably a way to have it auto update but from my experience on Arch even the normal non AUR updates are manual by default.

And thank you so much for making this widget! It is vastly superior to all other clocks I have tried. :smiley:

Storm-Engineer commented 3 years ago

I was struggling with this crash for a while until I finally found it may be related to eventcalendar, and then Googling that led me here.

I only had the ~/.local/share install, so I deleted the folder as instructed, and installed plasma5-applets-eventcalendar from AUR and that solved it indeed. Thank you @Zren !

Does AUR not automatically update?

That depends. AUR is stuff not officially supported, so it's a case of "you are on your own, it's your responsibility to keep stuff in order." Some people do everything manually, while others, like me, use a so called "AUR helper" which is like a package manager for AUR, so when I run a system update it updates everything, AUR included.

I think the issue is that lot of people, me included, uses or used the "Add Widgets > Download New Widgets" route to get plasmoids.

jghodd commented 3 years ago

I'm not sure if I'd be butting in here, or adding to the topic. "Crash on arch (Qt 5.15.1)" fits my issue, which is also connected to qt5-declarative.

In my case, it's not EventCalandar, but the much more basic PanelSpacer. In short, setting a panel spacer to be flexible vs. static, crashes plasmashell, and the segfault is coming from libQt5Qml 5.15.1. The twist is that this issue only manifests in archlinux32, and not at all with the 64-bit archlinux.

For example, this code works on both platforms: panelSpacer = panel.addWidget("org.kde.plasma.panelspacer"); panelSpacer.writeConfig("expanding", "false"); panelSpacer.writeConfig("length", 32);

This works only on the 64-bit platform, but causes a plasmashell crash on the 32-bit platform: panelSpacer = panel.addWidget("org.kde.plasma.panelspacer");

Same with this this - works on 64-bit arch, crashes plasmashell on 32-bit arch32: panelSpacer = panel.addWidget("org.kde.plasma.panelspacer"); panelSpacer.writeConfig("expanding", "true");

I'm attaching the stack strace which poiints directly to QV4::QObjectWrapper::getProperty

It'd be great to get some feedback on this, even if you'd prefer I open this as a separate ticket.

plasmashell-stacktrace.txt

oeramo commented 3 years ago

Hello, adding to this to report that v69 of the applet still crashes latte-dock. I run Manjaro KDE and I have just updated Qt to 5.15.1, I had the eventcalendar widget on a latte dock instead of a normal plasma panel so that is what crashed upon rebooting. I have deleted the local version from Discover and installed v69 from the AUR, now the behaviour with regular plasma panels is as expected but if I add the widget to my latte dock then that is not able to restart (manually or via reboot).

Zren commented 3 years ago

https://www.reddit.com/r/kde/comments/j48t0f/today_in_my_kde_manjaro_after_an_update_and_a/

Has a screenshot with a stacktrace. It seems the plasmashell segfault is printed to journalctl -b0 by the systemd-coredump process.

It appears to be some bug in GridLayout, which makes sense as when I bisected my commits earlier, this commit might have fixed things. It made no sense why it fixed it though. Added the ?w=1 to ignore whitespace changes.

I still need to do some testing to reproduce that this fixes it, as I remember being uncertain that was the right commit when I first tested in an Arch VM.

Zren commented 3 years ago

Ooooh, looks like coredumpctl -1 info is what you're suppose to use to find the last segfault. journalctl -b0 can display them, but I was wondering why journalctl -b0 _COMM=systemd-coredump was not working to filter just them.

It looks like the implicitSize of the GridLayout has a deep stack in the popup. Possible infinite loop? or just a deep nest of visual elements? Once I removed the useless ColumnLayout and the pointless Layout.fillWidth + Layout.fillHeight it began to work for users in v69.

// PopupView.qml (FullRepresentation)
MouseArea {
    ColumnLayout {
        anchors.fill: parent
        ColumnLayout {
            Layout.fillWidth: true
            Layout.fillHeight: true

            MeteogramView {}
            TimerView {}
            MonthView {}
            AgendaView {}
        }
    }
}
Oct 03 14:56:21 chris-desktop systemd-coredump[174599]: [🡕] Process 174573 (plasmoidviewer) of user 1000 dumped core.

Stack trace of thread 174573:
#0  0x00007f681498f758 n/a (libQt5Gui.so.5 + 0x49d758)
#1  0x00007f68149930ce _ZNK17QGridLayoutEngine22ensureColumnAndRowDataEP18QGridLayoutRowDataP14QGridLayoutBoxPKdS5_N2Qt11OrientationEPK24QAbstractLayoutStyleInfo (libQt5Gui.so.5 + 0x4a10ce)
#2  0x00007f68149934d6 _ZNK17QGridLayoutEngine8sizeHintEN2Qt8SizeHintERK6QSizeFPK24QAbstractLayoutStyleInfo (libQt5Gui.so.5 + 0x4a14d6)
#3  0x00007f67f8232d5e n/a (libqquicklayoutsplugin.so + 0x10d5e)
#4  0x00007f67f82306ba n/a (libqquicklayoutsplugin.so + 0xe6ba)
#5  0x00007f67f82352b6 n/a (libqquicklayoutsplugin.so + 0x132b6)
#6  0x00007f67f8232a22 n/a (libqquicklayoutsplugin.so + 0x10a22)
#7  0x00007f6815a9b4f1 _ZN10QQuickItem15setImplicitSizeEdd (libQt5Quick.so.5 + 0x23e4f1)
#8  0x00007f67f823072f n/a (libqquicklayoutsplugin.so + 0xe72f)
#9  0x00007f67f82352b6 n/a (libqquicklayoutsplugin.so + 0x132b6)
#10 0x00007f67f8232a22 n/a (libqquicklayoutsplugin.so + 0x10a22)
#11 0x00007f6815a9b4f1 _ZN10QQuickItem15setImplicitSizeEdd (libQt5Quick.so.5 + 0x23e4f1)
#12 0x00007f67f823072f n/a (libqquicklayoutsplugin.so + 0xe72f)
#13 0x00007f67f82352b6 n/a (libqquicklayoutsplugin.so + 0x132b6)
#14 0x00007f67f8232a22 n/a (libqquicklayoutsplugin.so + 0x10a22)
#15 0x00007f6815a9b4f1 _ZN10QQuickItem15setImplicitSizeEdd (libQt5Quick.so.5 + 0x23e4f1)
#16 0x00007f67f823072f n/a (libqquicklayoutsplugin.so + 0xe72f)
#17 0x00007f67f82352b6 n/a (libqquicklayoutsplugin.so + 0x132b6)
#18 0x00007f67f8232a22 n/a (libqquicklayoutsplugin.so + 0x10a22)
#19 0x00007f6815a9b4f1 _ZN10QQuickItem15setImplicitSizeEdd (libQt5Quick.so.5 + 0x23e4f1)
#20 0x00007f67f823072f n/a (libqquicklayoutsplugin.so + 0xe72f)
#21 0x00007f67f82352b6 n/a (libqquicklayoutsplugin.so + 0x132b6)
#22 0x00007f67f8232a22 n/a (libqquicklayoutsplugin.so + 0x10a22)
#23 0x00007f6815a9b4f1 _ZN10QQuickItem15setImplicitSizeEdd (libQt5Quick.so.5 + 0x23e4f1)
#24 0x00007f67f823072f n/a (libqquicklayoutsplugin.so + 0xe72f)
#25 0x00007f67f82352b6 n/a (libqquicklayoutsplugin.so + 0x132b6)
#26 0x00007f67f8232a22 n/a (libqquicklayoutsplugin.so + 0x10a22)
#27 0x00007f6815a9b4f1 _ZN10QQuickItem15setImplicitSizeEdd (libQt5Quick.so.5 + 0x23e4f1)
#28 0x00007f67f823072f n/a (libqquicklayoutsplugin.so + 0xe72f)
#29 0x00007f67f82352b6 n/a (libqquicklayoutsplugin.so + 0x132b6)
#30 0x00007f67f8232a22 n/a (libqquicklayoutsplugin.so + 0x10a22)
#31 0x00007f6815a9b4f1 _ZN10QQuickItem15setImplicitSizeEdd (libQt5Quick.so.5 + 0x23e4f1)
#32 0x00007f67f823072f n/a (libqquicklayoutsplugin.so + 0xe72f)
#33 0x00007f67f82352b6 n/a (libqquicklayoutsplugin.so + 0x132b6)
#34 0x00007f67f8232a22 n/a (libqquicklayoutsplugin.so + 0x10a22)
#35 0x00007f6815a9b4f1 _ZN10QQuickItem15setImplicitSizeEdd (libQt5Quick.so.5 + 0x23e4f1)
#36 0x00007f67f823072f n/a (libqquicklayoutsplugin.so + 0xe72f)
#37 0x00007f67f82352b6 n/a (libqquicklayoutsplugin.so + 0x132b6)
#38 0x00007f67f8232a22 n/a (libqquicklayoutsplugin.so + 0x10a22)
#39 0x00007f6815a9b4f1 _ZN10QQuickItem15setImplicitSizeEdd (libQt5Quick.so.5 + 0x23e4f1)
#40 0x00007f67f823072f n/a (libqquicklayoutsplugin.so + 0xe72f)
#41 0x00007f67f82352b6 n/a (libqquicklayoutsplugin.so + 0x132b6)
#42 0x00007f67f8232a22 n/a (libqquicklayoutsplugin.so + 0x10a22)
#43 0x00007f6815a9b4f1 _ZN10QQuickItem15setImplicitSizeEdd (libQt5Quick.so.5 + 0x23e4f1)
#44 0x00007f67f823072f n/a (libqquicklayoutsplugin.so + 0xe72f)
#45 0x00007f67f82352b6 n/a (libqquicklayoutsplugin.so + 0x132b6)
#46 0x00007f67f8232a22 n/a (libqquicklayoutsplugin.so + 0x10a22)
#47 0x00007f6815a9b4f1 _ZN10QQuickItem15setImplicitSizeEdd (libQt5Quick.so.5 + 0x23e4f1)
#48 0x00007f67f823072f n/a (libqquicklayoutsplugin.so + 0xe72f)
#49 0x00007f67f82352b6 n/a (libqquicklayoutsplugin.so + 0x132b6)
#50 0x00007f67f8232a22 n/a (libqquicklayoutsplugin.so + 0x10a22)
#51 0x00007f6815a9b4f1 _ZN10QQuickItem15setImplicitSizeEdd (libQt5Quick.so.5 + 0x23e4f1)
#52 0x00007f67f823072f n/a (libqquicklayoutsplugin.so + 0xe72f)
#53 0x00007f67f82352b6 n/a (libqquicklayoutsplugin.so + 0x132b6)
#54 0x00007f67f8232a22 n/a (libqquicklayoutsplugin.so + 0x10a22)
#55 0x00007f6815a9b4f1 _ZN10QQuickItem15setImplicitSizeEdd (libQt5Quick.so.5 + 0x23e4f1)
#56 0x00007f67f823072f n/a (libqquicklayoutsplugin.so + 0xe72f)
#57 0x00007f67f82352b6 n/a (libqquicklayoutsplugin.so + 0x132b6)
#58 0x00007f67f8232a22 n/a (libqquicklayoutsplugin.so + 0x10a22)
#59 0x00007f6815a9b4f1 _ZN10QQuickItem15setImplicitSizeEdd (libQt5Quick.so.5 + 0x23e4f1)
#60 0x00007f67f823072f n/a (libqquicklayoutsplugin.so + 0xe72f)
#61 0x00007f67f82352b6 n/a (libqquicklayoutsplugin.so + 0x132b6)
#62 0x00007f67f8232a22 n/a (libqquicklayoutsplugin.so + 0x10a22)
#63 0x00007f6815a9b4f1 _ZN10QQuickItem15setImplicitSizeEdd (libQt5Quick.so.5 + 0x23e4f1)
Zren commented 3 years ago

@itsmeciao I can seem to reproduce the latte-dock crash with v69. I'm using Manjaro's community/latte-dock 0.9.11-1.

2020-10-03___16-40-52

Can you run the following?

coredumpctl info latte-dock > ~/Desktop/latte-dock-segfaults.log
oeramo commented 3 years ago

Hello @Zren, sorry for some reason I didn't get notified when you mentioned me, I just casually found your comment while coming to check if there were any updates.

@itsmeciao I can seem to reproduce the latte-dock crash with v69. I'm using Manjaro's community/latte-dock 0.9.11-1.

I have just tried readding eventcalendar to my latte docks and it looks like I cannot reproduce the crash anymore either. Which is strange because, other than removing eventcalendar from the docks and placing another digital clock widget, I have not made any changes to my system these past days, and Manjaro hasn't received updates since. So now I have just readded the widget to both screen's docks, applied different settings to them and I will try to play around with them a little and see if I can spot anything unusual again.

Thanks and sorry again that I did not see your comment.