Zren / plasma-applets

This monolithic repo has been broken up into individual repos for each widget.
84 stars 23 forks source link

Event Calendar causes plasmashell crash if an event summary contains emojis #60

Open MattMcHackit opened 7 years ago

MattMcHackit commented 7 years ago

After adding a Google calendar, clicking Event Calendar causes plasmashell to freeze and then crash. Problem does not occur with no calendar added. Reproduced on multiple installs of Antergos with both Plasma 5.8 and Plasma 5.9.

Zren commented 7 years ago

So it opens fine when you're not logged into google calendar? It's only when the events are loaded that it crashes? How many calendars do you have? Are they all shown?

MattMcHackit commented 7 years ago

Yep. That's correct. I only have the one calendar active and shown.

Zren commented 7 years ago

Any errors in ~/.xsession-errors?

MattMcHackit commented 7 years ago

Have just re-added the calendar and seems to be working ok now. Apologies. I'll update if the problem recurs.

Zren commented 7 years ago

How is it installed on antergos? Through the "download new widgets" GUI or via a package manager that downloads from git master?

Zren commented 7 years ago

Ah Antergos is just AUR right? So the package manager installs to /usr/share/plasma/plasmoids/, but might be overloaded if you also installed an older version via the GUI to ~/.local/share/plasma/plasmoids/.

MattMcHackit commented 7 years ago

That's right. Antergos is basically little more than a GUI Arch installer. I think you might be right on the cause. Thank you so much for your help :-)

MattMcHackit commented 7 years ago

Has recurred after trying to update to git version 0.40. Could this be to do with unpurged previous configs? How can I clear them? Thank you. Also, nothing in ~/.xsession-errors

Zren commented 7 years ago

Do you have Qt 5.8.0?

Zren commented 7 years ago

Does the tag tiledmenu-39 work still?

Zren commented 7 years ago

Er eventcalendar-39 **

Zren commented 7 years ago

Reason I ask is because slytry on https://store.kde.org/p/998901 reported this crash too with v30 and v40 on Antergos too. However it worked for you so I wasn't sure.

slytry: Crashes on plasma 5.9. Would you update please?
Antergos, KDE 5.9.0, Qt 5.8.0, v. 30 Event Calendar.
But now I update and check if it keeps crashing. Even with v.40 Plasma keeps crashing, exactly when the events of the calendar are showed

MattMcHackit commented 7 years ago

I am on Qt 5.8.0. How do I try the tag?

Zren commented 7 years ago

git checkout eventcalendar-39 then sh ./reinstall. You can confirm it installed correctly by checking the version in the config.

MattMcHackit commented 7 years ago

Ok, I'll try now...

MattMcHackit commented 7 years ago

git checkout eventcalendar-39 results in fatal: Not a git repository (or any of the parent directories): .git

Zren commented 7 years ago

Ah woops, you'll need to this first:

https://github.com/Zren/plasma-applets/tree/master/org.kde.plasma.eventcalendar#b-install-via-github

git clone https://github.com/Zren/plasma-applets.git
cd plasma-applets/org.kde.plasma.eventcalendar
git checkout eventcalendar-39
sh ./reinstall
MattMcHackit commented 7 years ago

Have followed the instructions and v39 is reinstalled. Problem remains :-(

MattMcHackit commented 7 years ago

As long as the Google account is logged out, there are no crashes. It's still better than the default clock; would be really useful if it worked properly, though!

Zren commented 7 years ago

Not sure if arch fixed something, or if my virtual machine environment isn't a perfect reproduction. I installed Antergos in virtualbox.

MattMcHackit commented 7 years ago

Still no improvement here, and the version of Arch/Antergos I'm using is an exact match.

MattMcHackit commented 7 years ago

Interesting... now seems to work with the contacts and local holidays calendars, but dies if I add my main calendar...

Zren commented 7 years ago

If you get the time, could you turn on debugging output (new) in the new v41 (bottom of the general tab). Then login to gmail, select a calendar that works and enable it. Reload the events. Then turn on the bad calendar.

Then email me the logs (logs will contain your access token). My gmail is zrenfire.

It seems like it's your calendar event data that's foobaring it. Hopefully I can reproduce it with the event data.

Zren commented 7 years ago

Hum, maybe it's the unicode/emoji characters? On my version of KDE Neon, I tried installing the Noto emoji character set I think. And the emojis in your events have blank spaces.

where as in my antergos vm, it looks like the characters are missing.

Try changing the event names with those in the current visible month (Jan 29 - Mar 11). If it's not that then it's something else.

MattMcHackit commented 7 years ago

Hi Chris

Thanks! :-) That appears to have fixed it! Removed the emoji characters and now the calendar works as expected.

Thank you again!

Matt

On 13 Feb 2017, at 23:41, Chris Holland notifications@github.com wrote:

Hum, maybe it's the unicode/emoji characters? On my version of KDE Neon, I tried installing the Noto emoji character set I think. And the emojis in your events have blank spaces.

where as in my antergos vm, it looks like the characters are missing.

Try changing the event names with those in the current visible month. If it's not that then it's something else.

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub, or mute the thread.

Zren commented 7 years ago

User in the opendesktop.org comments had the same issue. https://store.kde.org/p/998901/

So this was a change to either:

Or.... I'm using Text not Label which means it's not using native rendering. Innnnteresting.

fabastrid commented 7 years ago

What do you mean with innnnteresting?

Zren commented 7 years ago

As in I can probably change it to use a Label and/or use set it to native rendering in the next version and get you guys to test if it works without affecting other users. I'm not 100% if that will fix it though, it's just a path forward.

If it doesn't I'll need to look into how coloured emoji's were first implemented, the bug tracker for emoji related bug, if they were ever tested in QML / Plasma's QML widgets, and as a last hope, skim through Qt for any related changes.

The thing is though, that the Antergos setup in my VM is showing them as missing characters, so I still don't know how to reproduce the crash.

fabastrid commented 7 years ago

Ok, hope you can find a way to get it. I'm missing the plasmoid too much! Thank you.

Zren commented 7 years ago

Hmmm. Do any of you have window title labels in the taskbar? If so, does visiting the following url cause plasmashell to crash? It has 🤑 in the title, so since that tab is selected in your browser window, the title will be the window title, shown in the label in the taskbar.

https://en.wikipedia.org/w/index.php?title=%F0%9F%A4%91&redirect=no

It seems that emojis show up fine in the taskmanager label in kde neon for me, even though they doesn't show up in eventcalender. Here's how taskmanager is doing it:

https://github.com/KDE/plasma-desktop/blob/master/applets/taskmanager/package/contents/ui/Task.qml#L471

It ensures textFormat: Text.PlainText and uses Label. I think this is the default value though.

If we look at text: model.display, it's the property of a cpp model libtaskmanager. I can't find anything interesting in taskmodel.cpp though that cleans up the title. The fact that it's a C++ string, versus a json decoded javascript string in eventcalendar might be the key.

I looked into filtering all emojis with regex, but it doesn't seem to work. Using \u0F911 didn't work, nor did \u{0F911} which is Ruby syntax, but pasting 🤑 into the regex did. I don't want to try making a blacklist of characters at this rate. I might try making a whitelist, but I might miss a foreign character set and create another bug.

Hmmm, I just noticed that it shows up as %F0%9F%A4%91 when url encoded.

fabastrid commented 7 years ago

I have no problem opening the wikipedia page, no crash here

Zren commented 7 years ago

Uhhhg. Just found out that plasmoidviewer doesn't render emojis. So I've been tinkering away wondering why they're not showing up, but just now I tried it live in plasmashell and it showed up fine. I'm guessing plasmashell either loads the Kemoticon library or sets the emoji size or something. So emoji's do work in KDE Neon.

I also found out that I need to use UTF-16 (hex) character codes like \ud83e\udd11 == 🤑. Found out by using "🤑".charCodeAt(0) and "🤑".charCodeAt(1) (since the emoji is 2 characters wide). See C/C++/Java source code "\uD83E\uDD11") here: http://www.fileformat.info/info/unicode/char/1F911/index.htm

So this pretty much confirms that Label + NativeRendering is needed I think. I'll push a v42 in a few minutes.

MattMcHackit commented 7 years ago

Cool, I'll re-add a calendar entry with an emoji in it and try it out as soon as it drops.

Zren commented 7 years ago

Should be live now, tell me the results after you update (you need to restart plasmashell for the new version of eventcalendar to load btw).

MattMcHackit commented 7 years ago

All updated. No crashing, the emoji are not displayed, however -- a blank space character is rendered instead. At least I can see everything and it doesn't topple the system! Thank you for all your work so far!

Zren commented 7 years ago

Awesomesauce. Thanks for the persistent testing guys.

fabastrid commented 7 years ago

On v42 no crash. Great work. I don't know why, but many emoji are working for me, not all, but many of them. I want to understand which ones are ok, I'll let you know. Thank you.