Bug 357356

Summary: Digikam crash on startup while scanning photos
Product: [Applications] digikam Reporter: Tyler <kde>
Component: Metadata-VideoAssignee: Digikam Developers <digikam-bugs-null>
Status: RESOLVED FIXED    
Severity: crash CC: caulier.gilles
Priority: NOR Keywords: drkonqi
Version: 4.13.0   
Target Milestone: ---   
Platform: Fedora RPMs   
OS: Linux   
Latest Commit: Version Fixed In: 6.0.0
Sentry Crash Report:

Description Tyler 2015-12-31 01:06:32 UTC
Application: digikam (4.13.0)
KDE Platform Version: 4.14.9
Qt Version: 4.8.6
Operating System: Linux 3.18.8-201.fc21.x86_64 x86_64
Distribution: "Fedora release 21 (Twenty One)"

-- Information about the crash:
- What I was doing when the application crashed:

Starting up a new install of digikam.  Every time the app starts up, it crashes at about 20% into scanning my photos directory.  Debug output, GStreamer reports bad file descriptor.

I completely un-installed and removed all config files.   Re-installed and duplicated the same issue.

The crash can be reproduced every time.

-- Backtrace:
Application: digiKam (digikam), signal: Aborted
Using host libthread_db library "/lib64/libthread_db.so.1".
pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
185	62:	movl	(%rsp), %edi
[Current thread is 1 (Thread 0x7f3d8694db00 (LWP 31186))]

Thread 3 (Thread 0x7f3d4c5ff700 (LWP 31188)):
[KCrash Handler]
#6  0x00007f3d791aa8d7 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:55
#7  0x00007f3d791ac53a in __GI_abort () at abort.c:89
#8  0x00007f3d791edda3 in __libc_message (do_abort=do_abort@entry=2, fmt=fmt@entry=0x7f3d792fd2f0 "*** Error in `%s': %s: 0x%s ***\n") at ../sysdeps/posix/libc_fatal.c:175
#9  0x00007f3d791f99f5 in __GI___libc_free (ptr=<optimized out>, str=0x7f3d792fd338 "free(): invalid next size (fast)", action=<optimized out>) at malloc.c:4974
#10 0x00007f3d791f99f5 in __GI___libc_free (have_lock=0, p=<optimized out>, av=<optimized out>) at malloc.c:3841
#11 0x00007f3d791f99f5 in __GI___libc_free (mem=<optimized out>) at malloc.c:2951
#12 0x00007f3d768696d3 in Exiv2::QuickTimeVideo::userDataDecoder(unsigned long) () at /lib64/libexiv2.so.13
#13 0x00007f3d7686872b in Exiv2::QuickTimeVideo::tagDecoder(Exiv2::DataBuf&, unsigned long) () at /lib64/libexiv2.so.13
#14 0x00007f3d76868ae0 in Exiv2::QuickTimeVideo::decodeBlock() () at /lib64/libexiv2.so.13
#15 0x00007f3d76868d55 in Exiv2::QuickTimeVideo::readMetadata() () at /lib64/libexiv2.so.13
#16 0x00007f3d848c9e7d in KExiv2Iface::KExiv2::load(QString const&) const (this=this@entry=0x7f3d44421ac0, filePath=...) at /usr/src/debug/libkexiv2-14.12.3/libkexiv2/kexiv2.cpp:310
#17 0x00007f3d83f54e76 in Digikam::DMetadata::load(QString const&) const (this=this@entry=0x7f3d44421ac0, filePath=...) at /usr/src/debug/digikam-4.13.0/core/libs/dmetadata/dmetadata.cpp:110
#18 0x00007f3d8396f067 in Digikam::ImageScanner::loadFromDisk() (this=this@entry=0x7f3d4c5fe030) at /usr/src/debug/digikam-4.13.0/core/libs/database/imagescanner.cpp:1550
#19 0x00007f3d8396f250 in Digikam::ImageScanner::newFile(int) (this=this@entry=0x7f3d4c5fe030, albumId=albumId@entry=337) at /usr/src/debug/digikam-4.13.0/core/libs/database/imagescanner.cpp:289
#20 0x00007f3d838ff7e6 in Digikam::CollectionScanner::scanNewFile(QFileInfo const&, int) (this=this@entry=0x7f3d4c5fea90, info=..., albumId=337) at /usr/src/debug/digikam-4.13.0/core/libs/database/collectionscanner.cpp:1255
#21 0x00007f3d83902ed2 in Digikam::CollectionScanner::scanAlbum(Digikam::CollectionLocation const&, QString const&) (this=this@entry=0x7f3d4c5fea90, location=..., album=...) at /usr/src/debug/digikam-4.13.0/core/libs/database/collectionscanner.cpp:1090
#22 0x00007f3d83902d8f in Digikam::CollectionScanner::scanAlbum(Digikam::CollectionLocation const&, QString const&) (this=this@entry=0x7f3d4c5fea90, location=..., album=...) at /usr/src/debug/digikam-4.13.0/core/libs/database/collectionscanner.cpp:1113
#23 0x00007f3d83902d8f in Digikam::CollectionScanner::scanAlbum(Digikam::CollectionLocation const&, QString const&) (this=this@entry=0x7f3d4c5fea90, location=..., album=...) at /usr/src/debug/digikam-4.13.0/core/libs/database/collectionscanner.cpp:1113
#24 0x00007f3d83902d8f in Digikam::CollectionScanner::scanAlbum(Digikam::CollectionLocation const&, QString const&) (this=this@entry=0x7f3d4c5fea90, location=..., album=...) at /usr/src/debug/digikam-4.13.0/core/libs/database/collectionscanner.cpp:1113
#25 0x00007f3d83903723 in Digikam::CollectionScanner::scanAlbumRoot(Digikam::CollectionLocation const&) (this=this@entry=0x7f3d4c5fea90, location=...) at /usr/src/debug/digikam-4.13.0/core/libs/database/collectionscanner.cpp:829
#26 0x00007f3d83904f75 in Digikam::CollectionScanner::completeScan() (this=this@entry=0x7f3d4c5fea90) at /usr/src/debug/digikam-4.13.0/core/libs/database/collectionscanner.cpp:490
#27 0x00000000005e9840 in Digikam::ScanController::run() (this=0x1a280b0) at /usr/src/debug/digikam-4.13.0/core/app/database/scancontroller.cpp:756
#28 0x00007f3d79f6e41f in QThreadPrivate::start(void*) (arg=0x1a280b0) at thread/qthread_unix.cpp:349
#29 0x00007f3d79cdd52a in start_thread (arg=0x7f3d4c5ff700) at pthread_create.c:310
#30 0x00007f3d7927622d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 2 (Thread 0x7f3d4bdfe700 (LWP 31189)):
#0  0x00007f3d792668fd in read () at ../sysdeps/unix/syscall-template.S:81
#1  0x00007f3d633c5f45 in  () at /lib64/tls/libnvidia-tls.so.340.65
#2  0x00007f3d73527d00 in g_wakeup_acknowledge () at /lib64/libglib-2.0.so.0
#3  0x00007f3d734e45fc in g_main_context_check () at /lib64/libglib-2.0.so.0
#4  0x00007f3d734e4ad3 in g_main_context_iterate.isra () at /lib64/libglib-2.0.so.0
#5  0x00007f3d734e4c4c in g_main_context_iteration () at /lib64/libglib-2.0.so.0
#6  0x00007f3d7a0a757e in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7f3d3c0008e0, flags=...) at kernel/qeventdispatcher_glib.cpp:452
#7  0x00007f3d7a076d81 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7f3d4bdfda80, flags=...) at kernel/qeventloop.cpp:149
#8  0x00007f3d7a0770e5 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7f3d4bdfda80, flags=...) at kernel/qeventloop.cpp:204
#9  0x00007f3d79f6bbb9 in QThread::exec() (this=this@entry=0x19ed6f0) at thread/qthread.cpp:538
#10 0x00007f3d7a0576e3 in QInotifyFileSystemWatcherEngine::run() (this=0x19ed6f0) at io/qfilesystemwatcher_inotify.cpp:265
#11 0x00007f3d79f6e41f in QThreadPrivate::start(void*) (arg=0x19ed6f0) at thread/qthread_unix.cpp:349
#12 0x00007f3d79cdd52a in start_thread (arg=0x7f3d4bdfe700) at pthread_create.c:310
#13 0x00007f3d7927622d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 1 (Thread 0x7f3d8694db00 (LWP 31186)):
#0  0x00007f3d79ce2590 in pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007f3d79f6e976 in QWaitCondition::wait(QMutex*, unsigned long) (time=18446744073709551615, this=0x19d8a30) at thread/qwaitcondition_unix.cpp:86
#2  0x00007f3d79f6e976 in QWaitCondition::wait(QMutex*, unsigned long) (this=this@entry=0x1a24310, mutex=mutex@entry=0x1a242e8, time=time@entry=18446744073709551615) at thread/qwaitcondition_unix.cpp:158
#3  0x00007f3d79f6dfae in QThread::wait(unsigned long) (this=this@entry=0x1a280b0, time=time@entry=18446744073709551615) at thread/qthread_unix.cpp:720
#4  0x00000000005e4dd9 in Digikam::ScanController::shutDown() (this=this@entry=0x1a280b0) at /usr/src/debug/digikam-4.13.0/core/app/database/scancontroller.cpp:361
#5  0x00000000005e7e2b in Digikam::ScanController::~ScanController() (this=0x1a280b0, __in_chrg=<optimized out>) at /usr/src/debug/digikam-4.13.0/core/app/database/scancontroller.cpp:337
#6  0x00000000005e80f7 in destroy() (this=0x1a280b0, __in_chrg=<optimized out>) at /usr/src/debug/digikam-4.13.0/core/app/database/scancontroller.cpp:277
#7  0x00000000005e80f7 in destroy() () at /usr/src/debug/digikam-4.13.0/core/app/database/scancontroller.cpp:284
#8  0x00007f3d791af392 in __run_exit_handlers (status=1, listp=0x7f3d7952d6a0 <__exit_funcs>, run_list_atexit=run_list_atexit@entry=true) at exit.c:82
#9  0x00007f3d791af3e5 in __GI_exit (status=<optimized out>) at exit.c:104
#10 0x00007f3d7ad8c518 in qt_xio_errhandler(Display*) () at kernel/qapplication_x11.cpp:773
#11 0x00007f3d7bcec860 in KApplication::xioErrhandler(_XDisplay*) () at /lib64/libkdeui.so.5
#12 0x00007f3d7778d57e in _XIOError () at /lib64/libX11.so.6
#13 0x00007f3d7778aebd in _XEventsQueued () at /lib64/libX11.so.6
#14 0x00007f3d7777c760 in XEventsQueued () at /lib64/libX11.so.6
#15 0x00007f3d7adc3bcc in x11EventSourceCheck(GSource*) (s=0x183ce00) at kernel/qguieventdispatcher_glib.cpp:85
#16 0x00007f3d734e4551 in g_main_context_check () at /lib64/libglib-2.0.so.0
#17 0x00007f3d734e4ad3 in g_main_context_iterate.isra () at /lib64/libglib-2.0.so.0
#18 0x00007f3d734e4c4c in g_main_context_iteration () at /lib64/libglib-2.0.so.0
#19 0x00007f3d7a0a755e in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x178c8c0, flags=...) at kernel/qeventdispatcher_glib.cpp:450
#20 0x00007f3d7adc4176 in QGuiEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=<optimized out>, flags=...) at kernel/qguieventdispatcher_glib.cpp:207
#21 0x00007f3d7a076d81 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x19fac20, flags=...) at kernel/qeventloop.cpp:149
#22 0x00007f3d7a0770e5 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x19fac20, flags=...) at kernel/qeventloop.cpp:204
#23 0x00000000005e5261 in Digikam::ScanController::completeCollectionScanCore(bool, bool) (this=0x1a280b0, needTotalFiles=needTotalFiles@entry=true, defer=defer@entry=false) at /usr/src/debug/digikam-4.13.0/core/app/database/scancontroller.cpp:486
#24 0x00000000005e537e in Digikam::ScanController::completeCollectionScanInBackground(bool) (this=<optimized out>, defer=defer@entry=false) at /usr/src/debug/digikam-4.13.0/core/app/database/scancontroller.cpp:471
#25 0x000000000052a7e7 in Digikam::NewItemsFinder::slotStart() (this=0x55b9d30) at /usr/src/debug/digikam-4.13.0/core/utilities/maintenance/newitemsfinder.cpp:112
#26 0x00007f3d7a091491 in QObject::event(QEvent*) (this=0x55b9d30, e=<optimized out>) at kernel/qobject.cpp:1222
#27 0x00007f3d7ad20efc in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=this@entry=0x1846490, receiver=receiver@entry=0x55b9d30, e=e@entry=0x1a273f0) at kernel/qapplication.cpp:4565
#28 0x00007f3d7ad27958 in QApplication::notify(QObject*, QEvent*) (this=0x7ffdaf580020, receiver=0x55b9d30, e=0x1a273f0) at kernel/qapplication.cpp:4351
#29 0x00007f3d7bcede0a in KApplication::notify(QObject*, QEvent*) () at /lib64/libkdeui.so.5
#30 0x00007f3d7a07822d in QCoreApplication::notifyInternal(QObject*, QEvent*) (this=0x7ffdaf580020, receiver=receiver@entry=0x55b9d30, event=event@entry=0x1a273f0) at kernel/qcoreapplication.cpp:953
#31 0x00007f3d7a07b4f1 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (event=0x1a273f0, receiver=0x55b9d30) at kernel/qcoreapplication.h:231
#32 0x00007f3d7a07b4f1 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=receiver@entry=0x0, event_type=event_type@entry=0, data=0x178af40) at kernel/qcoreapplication.cpp:1577
#33 0x00007f3d7a07b983 in QCoreApplication::sendPostedEvents(QObject*, int) (receiver=receiver@entry=0x0, event_type=event_type@entry=0) at kernel/qcoreapplication.cpp:1470
#34 0x00007f3d7a0a73ee in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) () at kernel/qcoreapplication.h:236
#35 0x00007f3d7a0a73ee in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x18305c0) at kernel/qeventdispatcher_glib.cpp:300
#36 0x00007f3d734e47fb in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
#37 0x00007f3d734e4b98 in g_main_context_iterate.isra () at /lib64/libglib-2.0.so.0
#38 0x00007f3d734e4c4c in g_main_context_iteration () at /lib64/libglib-2.0.so.0
#39 0x00007f3d7a0a755e in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x178c8c0, flags=...) at kernel/qeventdispatcher_glib.cpp:450
#40 0x00007f3d7adc4176 in QGuiEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=<optimized out>, flags=...) at kernel/qguieventdispatcher_glib.cpp:207
#41 0x00007f3d7a076d81 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7ffdaf57fb40, flags=...) at kernel/qeventloop.cpp:149
#42 0x00007f3d7a0770e5 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7ffdaf57fb40, flags=...) at kernel/qeventloop.cpp:204
#43 0x00007f3d7a07c7c9 in QCoreApplication::exec() () at kernel/qcoreapplication.cpp:1225
#44 0x00007f3d7ad1f39c in QApplication::exec() () at kernel/qapplication.cpp:3823
#45 0x0000000000496cba in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/digikam-4.13.0/core/app/main/main.cpp:230

The reporter indicates this bug may be a duplicate of or related to bug 340373.

Possible duplicates by query: bug 355147, bug 353295, bug 352700, bug 347134, bug 346742.

Reported using DrKonqi
Comment 1 caulier.gilles 2015-12-31 08:36:04 UTC

*** This bug has been marked as a duplicate of bug 340373 ***
Comment 2 caulier.gilles 2018-02-28 12:38:49 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