Bug 413855

Summary: digiKam crashes when deleting a letter in the login window (QtWebkit + libicu)
Product: [Applications] digikam Reporter: Nicofo <nicofo>
Component: Plugin-WebService-OneDriveAssignee: Digikam Developers <digikam-bugs-null>
Status: RESOLVED FIXED    
Severity: crash CC: caulier.gilles, metzpinguin
Priority: NOR    
Version: 7.0.0   
Target Milestone: ---   
Platform: Appimage   
OS: Linux   
Latest Commit: Version Fixed In: 7.0.0
Sentry Crash Report:

Description Nicofo 2019-11-05 20:23:36 UTC
STEPS TO REPRODUCE
1. Call Export To Onedrive plugin
2. A window opens where you can enter you login (Microsoft account, usually hotmail or outlook e-mail)
3. Enter your login and delete a letter of it (using 'delete' or 'backspace' key)

OBSERVED RESULT
Digikam crashes

In terminal:
/tmp/.mount_digika8YzzZy/AppRun: line 151:  6890 Segmentation fault      (core dumped) digikam $@


SOFTWARE/OS VERSIONS
Digikam 6.4 (Appimage) on Fedora 30

ADDITIONAL INFORMATION
Reproduceable also on Digikam 6.3 (Appimage) but not with 6.1 (Appimage and rpm)
Comment 1 Maik Qualmann 2019-11-05 20:43:35 UTC
Can you create a better backtrace? Compiled here with QWebEngine I can not reproduce an error. The AppImage uses the older WebKit. Even though WebKit is currently being actively developed, I still think that it does not get along well with modern websites.

Maik
Comment 2 Maik Qualmann 2019-11-05 20:49:30 UTC
Yes, it crashes in the depths of Webkit (WebCore).

Maik
Comment 3 Nicofo 2019-11-10 11:09:23 UTC
(In reply to Maik Qualmann from comment #2)
> Yes, it crashes in the depths of Webkit (WebCore).
> 
> Maik

I see you have been able to reproduce the bug. Do I still need to create a better backtrace ?
Or you plan to replace Webkit with QWebEngine in a future version of DK ?
Comment 4 caulier.gilles 2019-11-10 13:35:08 UTC
DK is already compatible with QtWebEngine. The choice is done at configuration time before to compile whole application.

One big problem with QtWebEngine is the non support of cross-compiling. QtWebKit is fully compatible with MinGW and whole digiKAm is cross compiled to provide a Windows version. We don't want to migrate 4 years of development to provide a full cross compiled application under Windwos only because one component cannot be compiled with MinGW. We don't want to use Windows here : cross compiling under Linux work like a charm, is 10 x faster than MSVC, is more powerfull with scripting... etc.

In other words, We (I) hate to use Windows to develop, hack, check and finaly package.

VoilĂ ...

Gilles Caulier
Comment 5 Nicofo 2019-11-12 12:54:03 UTC
OK, I understand, thanks for explanations.
I don't know technically the differences between QtWebKit and QtWebEngine, except the latter is more modern I believe. Also following comment #2 of Maik ("WebKit does not get along well with modern websites"), maybe it could be worthwile to have the Linux version (appimage) being compiled with QtWebEngine (and leave Windows with QtWebKit as only it is compatible with MinGW) ? Unless QtWebEngine has other drawbacks ?
Comment 6 Maik Qualmann 2019-11-12 13:02:43 UTC
On the positive side, the Windows version of QtWebKit is not affected by the crash. QWebEngine is a lot bigger in code size. It needs a stable OpenGL graphics environment. Many crashes e.g. with the Nouveau (NVidia) driver are known.

Maik
Comment 7 caulier.gilles 2020-01-10 09:52:51 UTC
Git commit 94a97bf01ad6e9829c564769a84b71632bb992c7 by Gilles Caulier.
Committed on 10/01/2020 at 09:51.
Pushed by cgilles into branch 'master'.

Install QtWebKit run time process to handle web browser request with AppImage.
Related: bug 413196, bug 397856

M  +21   -3    project/bundles/appimage/04-build-appimage.sh

https://invent.kde.org/kde/digikam/commit/94a97bf01ad6e9829c564769a84b71632bb992c7
Comment 8 Nicofo 2020-01-12 21:01:32 UTC
(In reply to caulier.gilles from comment #7)
> Git commit 94a97bf01ad6e9829c564769a84b71632bb992c7 by Gilles Caulier.
> Committed on 10/01/2020 at 09:51.
> Pushed by cgilles into branch 'master'.
> 
> Install QtWebKit run time process to handle web browser request with
> AppImage.
> Related: bug 413196, bug 397856
> 
> M  +21   -3    project/bundles/appimage/04-build-appimage.sh
> 
> https://invent.kde.org/kde/digikam/commit/
> 94a97bf01ad6e9829c564769a84b71632bb992c7

Hello Gilles,
I don't know if this is supposed to fix the issue, but the problem is still the same with last appimage:
digikam-7.0.0-beta2-20200112T071518-x86-64.appimage
Comment 9 Maik Qualmann 2020-01-12 21:36:00 UTC
It is the same crash as in bug 411619. It is related to the libicu and thus to the non-functional locale in the AppImage. The crash is not reproducible with a native version of QWebkit or the Windows version.

Maik
Comment 10 caulier.gilles 2020-01-15 08:40:54 UTC
Today, next digiKam 7.0.0 beta2 64 bits pre-release AppImage bundle will be published with last Qt5.14 and QtWebEngine by default (instead QtWebkit).

Please test and give us a feedback to see if problem remain on your computer.

https://files.kde.org/digikam/

Thanks in advance

Giles Caulier
Comment 11 Nicofo 2020-01-16 18:24:24 UTC
Hi Gilles, 

I just tested digikam-7.0.0-beta2-20200116T110715-x86-64
-> no problem anymore related to this bug. Thanks!

The change to QtWebEngine is just a test, or is it decided to abandon Webkit from now on ?
Comment 12 caulier.gilles 2020-01-17 00:02:16 UTC
The switch from webkit to webengine is planed since a very long time. With the new Qt 5.14 it can be the right moment, as this framework is more mature now.

QtWebkit is no more maintained by Qt team since Qt 5.6. QtWebEngine is the replacement for Qt. It well supported and include all security fixes step by step, which is very important for a web interface.

QtWebKit is only maintained by the community when time permit, which become more critical step by step. It always used under Windows as QtWebEngine cannot be cross compiled with MinGw. MXE team support well QtWebKit so it's fine to continue to use it for the moment. We will see in the future...

QtWebEngine is also the default framework used under MAcOS now, as under Linux.

Gilles Caulier