Bug 367691

Summary: Searching for pictures crashes at 30% every time
Product: [Applications] digikam Reporter: Ryk van Donselaar <rymar>
Component: Metadata-VideoAssignee: Digikam Developers <digikam-bugs-null>
Status: RESOLVED FIXED    
Severity: crash CC: caulier.gilles
Priority: NOR Keywords: drkonqi
Version: 4.14.0   
Target Milestone: ---   
Platform: Mint (Ubuntu based)   
OS: Linux   
Latest Commit: Version Fixed In: 6.0.0
Attachments: attachment-21596-0.html

Description Ryk van Donselaar 2016-08-22 20:06:25 UTC
Application: digikam (4.14.0)
KDE Platform Version: 4.14.16
Qt Version: 4.8.7
Operating System: Linux 4.4.0-34-generic x86_64
Distribution: Linux Mint 18 Sarah

-- Information about the crash:
- What I was doing when the application crashed: Just launched Digikam 4.XX and as soon as it reaches about 30% in the process of adding my pictures (I have 15K Pics.) it crashes

The crash can be reproduced every time.

-- Backtrace:
Application: digiKam (digikam), signal: Aborted
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
[Current thread is 1 (Thread 0x7f6417285b40 (LWP 16312))]

Thread 3 (Thread 0x7f63e557a700 (LWP 16318)):
#0  0x00007f640fccde8d in poll () at ../sysdeps/unix/syscall-template.S:84
#1  0x00007f6407eca39c in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f6407eca4ac in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f64109722ce in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#4  0x00007f641094018f in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#5  0x00007f64109404f5 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#6  0x00007f641082f549 in QThread::exec() () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#7  0x00007f6410920223 in ?? () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#8  0x00007f6410831e3c in ?? () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#9  0x00007f640c74e6fa in start_thread (arg=0x7f63e557a700) at pthread_create.c:333
#10 0x00007f640fcd9b5d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 2 (Thread 0x7f63e5d7b700 (LWP 16317)):
[KCrash Handler]
#6  0x00007f640fc08418 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
#7  0x00007f640fc0a01a in __GI_abort () at abort.c:89
#8  0x00007f640fc4a72a in __libc_message (do_abort=do_abort@entry=2, fmt=fmt@entry=0x7f640fd636b0 "*** Error in `%s': %s: 0x%s ***\n") at ../sysdeps/posix/libc_fatal.c:175
#9  0x00007f640fc52f4a in malloc_printerr (ar_ptr=<optimized out>, ptr=<optimized out>, str=0x7f640fd63728 "free(): invalid next size (fast)", action=3) at malloc.c:5007
#10 _int_free (av=<optimized out>, p=<optimized out>, have_lock=0) at malloc.c:3868
#11 0x00007f640fc56abc in __GI___libc_free (mem=<optimized out>) at malloc.c:2969
#12 0x00007f640f43f4e1 in Exiv2::RiffVideo::nikonTagsHandler() () from /usr/lib/x86_64-linux-gnu/libexiv2.so.14
#13 0x00007f640f442c75 in Exiv2::RiffVideo::decodeBlock() () from /usr/lib/x86_64-linux-gnu/libexiv2.so.14
#14 0x00007f640f442898 in Exiv2::RiffVideo::tagDecoder(Exiv2::DataBuf&, unsigned long) () from /usr/lib/x86_64-linux-gnu/libexiv2.so.14
#15 0x00007f640f442c75 in Exiv2::RiffVideo::decodeBlock() () from /usr/lib/x86_64-linux-gnu/libexiv2.so.14
#16 0x00007f640f4430a8 in Exiv2::RiffVideo::readMetadata() () from /usr/lib/x86_64-linux-gnu/libexiv2.so.14
#17 0x00007f6416a65605 in KExiv2Iface::KExiv2::load(QString const&) const () from /usr/lib/libkexiv2.so.11
#18 0x00007f6414ddb616 in Digikam::DMetadata::load(QString const&) const () from /usr/lib/digikam/libdigikamcore.so.4.14.0
#19 0x00007f641538c7a7 in Digikam::ImageScanner::loadFromDisk() () from /usr/lib/digikam/libdigikamdatabase.so.4.14.0
#20 0x00007f641538c9e0 in Digikam::ImageScanner::newFile(int) () from /usr/lib/digikam/libdigikamdatabase.so.4.14.0
#21 0x00007f641531cf2b in Digikam::CollectionScanner::scanNewFile(QFileInfo const&, int) () from /usr/lib/digikam/libdigikamdatabase.so.4.14.0
#22 0x00007f6415321997 in Digikam::CollectionScanner::scanAlbum(Digikam::CollectionLocation const&, QString const&) () from /usr/lib/digikam/libdigikamdatabase.so.4.14.0
#23 0x00007f6415321886 in Digikam::CollectionScanner::scanAlbum(Digikam::CollectionLocation const&, QString const&) () from /usr/lib/digikam/libdigikamdatabase.so.4.14.0
#24 0x00007f6415322443 in Digikam::CollectionScanner::scanAlbumRoot(Digikam::CollectionLocation const&) () from /usr/lib/digikam/libdigikamdatabase.so.4.14.0
#25 0x00007f64153234eb in Digikam::CollectionScanner::completeScan() () from /usr/lib/digikam/libdigikamdatabase.so.4.14.0
#26 0x0000000000604317 in ?? ()
#27 0x00007f6410831e3c in ?? () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#28 0x00007f640c74e6fa in start_thread (arg=0x7f63e5d7b700) at pthread_create.c:333
#29 0x00007f640fcd9b5d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 1 (Thread 0x7f6417285b40 (LWP 16312)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007f64108323a6 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#2  0x00007f64108319ce in QThread::wait(unsigned long) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#3  0x0000000000601e5b in ?? ()
#4  0x0000000000602027 in ?? ()
#5  0x00007f640fc0cfe8 in __run_exit_handlers (status=1, listp=0x7f640ff965f8 <__exit_funcs>, run_list_atexit=run_list_atexit@entry=true) at exit.c:82
#6  0x00007f640fc0d035 in __GI_exit (status=<optimized out>) at exit.c:104
#7  0x00007f63fe7cdea1 in ?? () from /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0
#8  0x00007f64120b6010 in KApplication::xioErrhandler(_XDisplay*) () from /usr/lib/libkdeui.so.5
#9  0x00007f640b857cee in _XIOError () from /usr/lib/x86_64-linux-gnu/libX11.so.6
#10 0x00007f640b85557d in _XEventsQueued () from /usr/lib/x86_64-linux-gnu/libX11.so.6
#11 0x00007f640b846ee9 in XEventsQueued () from /usr/lib/x86_64-linux-gnu/libX11.so.6
#12 0x00007f64113ff05c in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#13 0x00007f6407ec9dd1 in g_main_context_check () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#14 0x00007f6407eca340 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#15 0x00007f6407eca4ac in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#16 0x00007f64109722ae in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#17 0x00007f64113ff616 in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#18 0x00007f641094018f in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#19 0x00007f64109404f5 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#20 0x00000000005ffa01 in ?? ()
#21 0x0000000000532ff7 in ?? ()
#22 0x00007f641095bdb1 in QObject::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#23 0x00007f6411351fdc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#24 0x00007f6411358f16 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#25 0x00007f64120b76aa in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#26 0x00007f641094190d in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#27 0x00007f64109453c6 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#28 0x00007f641097213e in ?? () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#29 0x00007f6407eca1a7 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#30 0x00007f6407eca400 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#31 0x00007f6407eca4ac in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#32 0x00007f64109722ae in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#33 0x00007f64113ff616 in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#34 0x00007f641094018f in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#35 0x00007f64109404f5 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#36 0x00007f64109464b9 in QCoreApplication::exec() () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#37 0x000000000049649e in ?? ()
#38 0x00007f640fbf3830 in __libc_start_main (main=0x495210, argc=5, argv=0x7fff0a056af8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fff0a056ae8) at ../csu/libc-start.c:291
#39 0x00000000004994a9 in _start ()

Possible duplicates by query: bug 353295, bug 351689.

Reported using DrKonqi
Comment 1 caulier.gilles 2016-08-22 20:08:38 UTC

*** This bug has been marked as a duplicate of bug 340373 ***
Comment 2 Ryk van Donselaar 2016-08-24 03:37:57 UTC
After being able to consistently recreate this issue I had a closer look. It would crash at exactly 31% of searching for new items every time. I then had a much closer look at all of the 51000 files in my pictures. I discovered that inside that folder were several hundred video files in several formats. I took all of those out and no more crash. I suspect that one or more video files may be corrupted and perhaps was causing this problem. It works fine now.
Comment 3 caulier.gilles 2016-08-24 03:55:25 UTC
Did you see that i marked this file as duplicate.

The problem is know. Your Exiv2 library version has a problem with video files and crash digiKam...

Gilles Caulier
Comment 4 Ryk van Donselaar 2016-08-24 03:58:10 UTC
Created attachment 100738 [details]
attachment-21596-0.html

I did see that and I thank you for noticing my post.

On August 23, 2016 8:55:25 PM PDT, via KDE Bugzilla <bugzilla_noreply@kde.org> wrote:
>https://bugs.kde.org/show_bug.cgi?id=367691
>
>--- Comment #3 from caulier.gilles@gmail.com ---
>Did you see that i marked this file as duplicate.
>
>The problem is know. Your Exiv2 library version has a problem with
>video files
>and crash digiKam...
>
>Gilles Caulier
>
>-- 
>You are receiving this mail because:
>You reported the bug.
Comment 5 caulier.gilles 2018-02-28 12:39:36 UTC
With 6.0.0, we have now a FFMpeg low level metadata parser based on libav C API
for video files database registration.

The Exiv2 video support is not used anymore as this code is buggous and nobody
sound motivated in Exiv2 to finalize the code.

The original post for this file must be fixed now and video metadata support
with ffmpeg must be enough to populate database entries.

Gilles Caulier