Bug 373946

Summary: digiKam freezes when trying to use "Upload"
Product: [Applications] digikam Reporter: Barbara Scheffner <laurakittyinka>
Component: Portability-RuntimeAssignee: Digikam Developers <digikam-bugs-null>
Status: RESOLVED FIXED    
Severity: crash CC: caulier.gilles, metzpinguin
Priority: NOR    
Version: 5.4.0   
Target Milestone: ---   
Platform: Appimage   
OS: Linux   
Latest Commit: Version Fixed In: 5.5.0
Sentry Crash Report:
Attachments: Unfinished Upload window

Description Barbara Scheffner 2016-12-20 09:44:51 UTC
When trying to use Item/Upload... digiKam starts to build up a new window but it freezes before it's even finshed, still looking kind of transparent.
When I try to close it that leads to

"Application "digikam" is not responding
You tried to close window "Select Image to Upload — digiKam" from application "digikam" (Process ID: 5535) but the application is not responding.
Do you want to terminate this application? 
Warning: Terminating the application will close all of its child windows. Any unsaved data will be lost."
Comment 1 caulier.gilles 2016-12-20 12:50:15 UTC
Do you talk about to import new item to camera device ?

Do you use AppImage bunble or a hand-compiled version on your computer ?

Gilles Caulier
Comment 2 Barbara Scheffner 2016-12-20 19:00:17 UTC
Yes, I'm talking about using Item/Upload... in the Import Interface.
I'm using the AppImage bundle.
Comment 3 caulier.gilles 2017-01-16 17:24:29 UTC
Reproducible with last AppImage 5.4.0. GDB give :

digikam.general: file formats= ("BMP Image (*.bmp)", "BW Image (*.bw)", "CUR Image (*.cur)", "DDS Image (*.dds)", "EPS Image (*.eps)", "EPSF Image (*.epsf)", "EPSI Image (*.epsi)", "GIF Image (*.gif)", "ICNS Image (*.icns)", "ICO Image (*.ico)", "KRA Image (*.kra)", "ORA Image (*.ora)", "PBM Image (*.pbm)", "PCX Image (*.pcx)", "PGM Image (*.pgm)", "PIC Image (*.pic)", "PNG Image (*.png)", "PPM Image (*.ppm)", "PSD Image (*.psd)", "RAS Image (*.ras)", "RGB Image (*.rgb)", "RGBA Image (*.rgba)", "SGI Image (*.sgi)", "SVG Image (*.svg)", "SVGZ Image (*.svgz)", "TGA Image (*.tga)", "WBMP Image (*.wbmp)", "WEBP Image (*.webp)", "XBM Image (*.xbm)", "XCF Image (*.xcf)", "XPM Image (*.xpm)", "TIFF Image (*.tiff *.tif)", "JPEG Image (*.jpg *.jpeg *.jpe)", "JPEG2000 Image (*.jp2 *.j2k *.jpx *.pgx)", "Progressive Graphics file (*.pgf)", "Raw Images (*.bay *.bmq *.cr2 *.crw *.cs1 *.dc2 *.dcr *.dng *.erf *.fff *.hdr *.k25 *.kdc *.mdc *.mos *.mrw *.nef *.orf *.pef *.pxn *.raf *.raw *.rdc *.sr2 *.srf *.x3f *.arw *.3fr *.cine *.ia *.kc2 *.mef *.nrw *.qtk *.rw2 *.sti *.rwl *.srw )", "All supported files (*.bmp *.bw *.cur *.dds *.eps *.epsf *.epsi *.gif *.icns *.ico *.kra *.ora *.pbm *.pcx *.pgm *.pic *.png *.ppm *.psd *.ras *.rgb *.rgba *.sgi *.svg *.svgz *.tga *.wbmp *.webp *.xbm *.xcf *.xpm *.tiff *.tif *.jpg *.jpeg *.jpe *.jp2 *.j2k *.jpx *.pgx *.pgf *.bay *.bmq *.cr2 *.crw *.cs1 *.dc2 *.dcr *.dng *.erf *.fff *.hdr *.k25 *.kdc *.mdc *.mos *.mrw *.nef *.orf *.pef *.pxn *.raf *.raw *.rdc *.sr2 *.srf *.x3f *.arw *.3fr *.cine *.ia *.kc2 *.mef *.nrw *.qtk *.rw2 *.sti *.rwl *.srw )")
[New Thread 0x7ffe7516f700 (LWP 24992)]
digikam.general: request thumb icon for  "/"
digikam.database: No location could be retrieved for "/"
[Switching to Thread 0x7ffebdffb700 (LWP 24930)]
Catchpoint 1 (exception thrown), 0x00007fffee63fe90 in __cxa_throw () from /lib64/libstdc++.so.6
Missing separate debuginfos, use: debuginfo-install glibc-2.20-23.mga5.x86_64 lib64dbus1_3-1.8.20-1.mga5.x86_64 lib64expat1-2.1.0-9.3.mga5.x86_64 lib64fontconfig1-2.11.1-4.1.mga5.x86_64 lib64glib2.0_0-2.42.1-2.1.mga5.x86_64 lib64gpg-error0-1.13-3.mga5.x86_64 lib64pcre1-8.38-1.mga5.x86_64 lib64x11_6-1.6.3-1.mga5.x86_64 lib64xcb1-1.11.1-1.mga5.x86_64 lib64xcursor1-1.1.14-5.mga5.x86_64 lib64xdmcp6-1.1.1-7.mga5.x86_64 lib64zlib1-1.2.8-7.1.mga5.x86_64 libgcc1-4.9.2-4.1.mga5.x86_64 libstdc++6-4.9.2-4.1.mga5.x86_64
(gdb) bt
#0  0x00007fffee63fe90 in __cxa_throw () from /lib64/libstdc++.so.6
#1  0x00000032d2b365eb in Exiv2::ImageFactory::open (path=..., useCurl=<optimized out>) at /b/ext_exiv2/ext_exiv2-prefix/src/ext_exiv2/src/image.cpp:834
#2  0x00007ffff681aab1 in Digikam::MetaEngine::load (this=this@entry=0x7ffebdffa8d0, filePath=...) at /b/dktemp/digikam-master/core/libs/dmetadata/metaengine.cpp:278
#3  0x00007ffff6863126 in Digikam::DMetadata::load (this=this@entry=0x7ffebdffa8d0, filePath=...) at /b/dktemp/digikam-master/core/libs/dmetadata/dmetadata.cpp:96
#4  0x00007ffff68631a2 in Digikam::DMetadata::DMetadata (this=0x7ffebdffa8d0, filePath=...) at /b/dktemp/digikam-master/core/libs/dmetadata/dmetadata.cpp:63
#5  0x00007ffff68aceba in Digikam::ThumbnailCreator::createThumbnail (this=this@entry=0x1141c80, info=..., detailRect=...) at /b/dktemp/digikam-master/core/libs/threadimageio/thumbnailcreator.cpp:468
#6  0x00007ffff68aff17 in Digikam::ThumbnailCreator::load (this=0x1141c80, identifier=..., rect=..., pregenerate=pregenerate@entry=false)
    at /b/dktemp/digikam-master/core/libs/threadimageio/thumbnailcreator.cpp:264
#7  0x00007ffff68b0732 in Digikam::ThumbnailCreator::load (this=<optimized out>, identifier=...) at /b/dktemp/digikam-master/core/libs/threadimageio/thumbnailcreator.cpp:181
#8  0x00007ffff68bb59e in Digikam::ThumbnailLoadingTask::execute (this=0x3f4f330) at /b/dktemp/digikam-master/core/libs/threadimageio/thumbnailtask.cpp:166
#9  0x00007ffff6893c82 in Digikam::LoadSaveThread::run (this=0x7ffff732ac80 <Digikam::(anonymous namespace)::Q_QGS_defaultObject::innerFunction()::holder>)
    at /b/dktemp/digikam-master/core/libs/threadimageio/loadsavethread.cpp:133
#10 0x00007ffff68d219e in Digikam::DynamicThread::DynamicThreadPriv::run (this=0x1141ba0) at /b/dktemp/digikam-master/core/libs/threads/dynamicthread.cpp:183
#11 0x000000306c6ac01d in ?? () from /tmp/.mount_vRlJKG/usr/lib/libQt5Core.so.5
#12 0x000000306c6aefc9 in ?? () from /tmp/.mount_vRlJKG/usr/lib/libQt5Core.so.5
#13 0x00007ffff5fdc5bd in start_thread () from /lib64/libpthread.so.0
#14 0x00007fffede0762d in clone () from /lib64/libc.so.6
(gdb)
Comment 4 Maik Qualmann 2017-01-16 18:27:39 UTC
Git commit cc1501f8cfaf54fb62b8a1ceafecb28c7a36773e by Maik Qualmann.
Committed on 16/01/2017 at 18:27.
Pushed by mqualmann into branch 'master'.

try to fix the freeze in the import upload

M  +7    -1    libs/dialogs/imagedialog.cpp

https://commits.kde.org/digikam/cc1501f8cfaf54fb62b8a1ceafecb28c7a36773e
Comment 5 Maik Qualmann 2017-01-16 19:10:36 UTC
Git commit 98432407c3c51faee8fb016d149f10d1d787a5ff by Maik Qualmann.
Committed on 16/01/2017 at 19:09.
Pushed by mqualmann into branch 'master'.

delete DFileIconProvider at end

M  +4    -2    libs/dialogs/imagedialog.cpp
M  +2    -4    libs/dialogs/imagedialog.h

https://commits.kde.org/digikam/98432407c3c51faee8fb016d149f10d1d787a5ff
Comment 6 caulier.gilles 2017-01-16 22:42:04 UTC
Maik, 

I rebuild AppImage 5.5.0 64 bits and problem still here.

In fact, following the GDB backtrace, i suspected that problem was located in thumbnail code for QFileDialog icon-view re-implemented in DK.

This code has never work. The example and documentation about Qt class QFileIconPRovider is really poor.

2 solutions :

- Remove this code as well
- Check in thumbnail extraction code if we try to process a directory instead a real file. Look well in trace, "/" try to be thumbnailized, and Exiv2 don't like this and generate an exception.

Gilles
Comment 7 Maik Qualmann 2017-01-17 17:58:12 UTC
Git commit f8cde10b1ee32709715c5c78f247519ead852573 by Maik Qualmann.
Committed on 17/01/2017 at 17:57.
Pushed by mqualmann into branch 'master'.

check if file path for thumbnail is a directory

M  +3    -3    libs/threadimageio/thumbnailcreator.cpp

https://commits.kde.org/digikam/f8cde10b1ee32709715c5c78f247519ead852573
Comment 8 Maik Qualmann 2017-01-17 18:17:09 UTC
Git commit 00fd943c3266769dc2588d241e387fc8fc5373ca by Maik Qualmann.
Committed on 17/01/2017 at 18:16.
Pushed by mqualmann into branch 'master'.

polish DFileIconProvider

M  +1    -5    libs/dialogs/imagedialog.cpp

https://commits.kde.org/digikam/00fd943c3266769dc2588d241e387fc8fc5373ca
Comment 9 Maik Qualmann 2017-01-17 21:19:06 UTC
Git commit c023428e534295ab1308322b1dbfcec3bcffe188 by Maik Qualmann.
Committed on 17/01/2017 at 21:18.
Pushed by mqualmann into branch 'master'.

disable ThumbnailImageCatcher at the moment it has a timing problem

M  +22   -6    libs/dialogs/imagedialog.cpp

https://commits.kde.org/digikam/c023428e534295ab1308322b1dbfcec3bcffe188
Comment 10 caulier.gilles 2017-01-18 17:29:24 UTC
I just re-build the AppImage bundle and now the problem disappear with last commit.

Gilles Caulier
Comment 11 Maik Qualmann 2017-01-18 17:33:52 UTC
I have a patch with a working QFileIconProvider. I commit this soon.

Maik
Comment 12 caulier.gilles 2017-01-18 17:39:10 UTC
Ah great. I'm curious to see how you will fix it... I spare a lots of time to trying to understand QFileIconProvider.

Other subject relating to code in same file is the way to display photo information for each item in the file dialog.

Before, with KDE4 with use KDE file dialog which provide a way to embed a view on right side with preview and photo info. 

https://cgit.kde.org/digikam.git/tree/libs/dialogs/imagedialog.cpp#n78

Now, with Qt5, the feature is not possible. This code have been disabled.

The only solution is to customize the model view of file dialog icon view, with extra columns to host photo info...

Gilles
Comment 13 Maik Qualmann 2017-01-18 18:45:17 UTC
Git commit 0f1591599fcfc5730b9635b5b4eae331310c0476 by Maik Qualmann.
Committed on 18/01/2017 at 18:43.
Pushed by mqualmann into branch 'master'.

fix ThumbnailImageCatcher and DFileIconProvider

M  +10   -11   libs/dialogs/imagedialog.cpp
M  +24   -6    libs/threadimageio/thumbnailloadthread.cpp
M  +2    -0    libs/threadimageio/thumbnailloadthread.h

https://commits.kde.org/digikam/0f1591599fcfc5730b9635b5b4eae331310c0476
Comment 14 Maik Qualmann 2017-01-18 18:49:03 UTC
The file dialog is a bit slow when building images outside the digiKam albums. View only generic icons? Just take a look.

Maik
Comment 15 caulier.gilles 2017-01-18 22:36:44 UTC
Maik,

I tried, and preview is a little more slower than without file-dialog preview option enabled, but it's acceptable. 

With Plasma desktop, the user has the choice : with or without preview. For me it's fine.

Gilles
Comment 16 Barbara Scheffner 2017-01-26 01:03:58 UTC
Created attachment 103650 [details]
Unfinished Upload window
Comment 17 Barbara Scheffner 2017-01-26 01:07:38 UTC
Sorry, but here the problem is still reproducible with the latest AppImage. I still get an unfinished window when choosing Upload from the Item menu in the Import Interface (see attachment above).
Comment 18 caulier.gilles 2017-01-26 05:30:39 UTC
did you use the last one AppImage 5.5.0 from GDrive repository ?

Gilles Caulier
Comment 19 Barbara Scheffner 2017-01-26 17:09:17 UTC
Yes, sure, I wrote that already. Just to make suer I downloaded again right now -> still the same problem!
Comment 20 Maik Qualmann 2017-01-26 17:57:15 UTC
Git commit 81840128c7f94214ca0c99ed7f6f52957a40cfb0 by Maik Qualmann.
Committed on 26/01/2017 at 17:55.
Pushed by mqualmann into branch 'master'.

DFileIconProvider return only standard icon for testing

M  +17   -7    libs/dialogs/imagedialog.cpp

https://commits.kde.org/digikam/81840128c7f94214ca0c99ed7f6f52957a40cfb0
Comment 21 caulier.gilles 2017-01-27 05:39:37 UTC
Wolfgang,

new AppImage 64 bits is uploaded to GDrive with last Maik patch applied.

Gilles
Comment 22 Barbara Scheffner 2017-01-27 19:07:48 UTC
I'm sorry, I'm still getting a blank window and digiKam is frozen. I tried to create a GDB backtrace but it always ends up with "no stack".
Comment 23 caulier.gilles 2017-01-27 19:38:55 UTC
In GDB, when DK hand up, press CTRL+C in the console, and enter "bt" as usual. This will indicate where DK loop until the end of the world.

Gilles Caulier
Comment 24 Barbara Scheffner 2017-01-27 20:35:36 UTC
It suddenly works now. The only thing I really did with digiKam in the meantime were some fuzzy searches.