Bug 220875

Summary: digiKam crashes on startup while scanning image metadata
Product: [Applications] digikam Reporter: Sami Nieminen <sami.nieminen>
Component: Metadata-EngineAssignee: Digikam Developers <digikam-bugs-null>
Status: RESOLVED FIXED    
Severity: crash CC: ahuggel, andresbajotierra, caulier.gilles
Priority: NOR    
Version: 1.0.0   
Target Milestone: ---   
Platform: Ubuntu   
OS: Linux   
Latest Commit: Version Fixed In: 7.3.0
Sentry Crash Report:

Description Sami Nieminen 2010-01-01 11:10:40 UTC
Application: digikam (1.0.0)
KDE Platform Version: 4.3.85 (KDE 4.3.85 (KDE 4.4 Beta2))
Qt Version: 4.6.0
Operating System: Linux 2.6.31-16-generic i686
Distribution: Ubuntu 9.10

-- Information about the crash:
After using the rename batch tool to massrename images using [camera]-[date]-# style pattern, and moving resulting files from multiple directories to one single directory digikam is now crashing on startup repeatedly.

The crash seems to be related to libexiv2-5 function.

I have digikam 1.0.0 from Kubuntu Lucid repository while otherwise using Kubuntu Karmic with kde 4.4 beta2 packages.

 -- Backtrace:
Application: digiKam (digikam), signal: Aborted
[Current thread is 1 (Thread 0xb789c790 (LWP 7563))]

Thread 2 (Thread 0xb6371b70 (LWP 7564)):
#0  0x0792e1b1 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string const&) () from /usr/lib/libstdc++.so.6
#1  0x023cdd31 in Exiv2::ExifKey::ExifKey(Exiv2::ExifKey const&) () from /usr/lib/libexiv2.so.5
#2  0x023cddb4 in ?? () from /usr/lib/libexiv2.so.5
#3  0x023cd485 in Exiv2::ExifKey::clone() const () from /usr/lib/libexiv2.so.5
#4  0x023772e8 in Exiv2::Exifdatum::Exifdatum(Exiv2::Exifdatum const&) () from /usr/lib/libexiv2.so.5
#5  0x00151910 in KExiv2Iface::KExiv2::getExifTagString(char const*, bool) const () from /usr/lib/libkexiv2.so.8
#6  0x0503031e in Digikam::DMetadata::getLensDescription (this=0xb6370de0) at /build/buildd/digikam-1.0.0/libs/dmetadata/dmetadata.cpp:961
#7  0x05031d50 in Digikam::DMetadata::getMetadataField (this=0xb6370de0, field=Digikam::MetadataInfo::Lens) at /build/buildd/digikam-1.0.0/libs/dmetadata/dmetadata.cpp:1165
#8  0x05033b9f in Digikam::DMetadata::getMetadataFields (this=0xb6370de0, fields=...) at /build/buildd/digikam-1.0.0/libs/dmetadata/dmetadata.cpp:1357
#9  0x0056f1cd in Digikam::ImageScanner::scanImageMetadata (this=0xb6370dd8) at /build/buildd/digikam-1.0.0/libs/database/imagescanner.cpp:328
#10 0x005758c6 in Digikam::ImageScanner::scanFile (this=0xb6370dd8) at /build/buildd/digikam-1.0.0/libs/database/imagescanner.cpp:160
#11 0x00575a65 in Digikam::ImageScanner::newFile (this=0xb6370dd8, albumId=0) at /build/buildd/digikam-1.0.0/libs/database/imagescanner.cpp:92
#12 0x00522c64 in Digikam::CollectionScanner::scanNewFile (this=0xb6371260, info=..., albumId=0) at /build/buildd/digikam-1.0.0/libs/database/collectionscanner.cpp:731
#13 0x005243ca in Digikam::CollectionScanner::scanAlbum (this=0xb6371260, location=..., album=...) at /build/buildd/digikam-1.0.0/libs/database/collectionscanner.cpp:646
#14 0x0052424c in Digikam::CollectionScanner::scanAlbum (this=0xb6371260, location=..., album=...) at /build/buildd/digikam-1.0.0/libs/database/collectionscanner.cpp:664
#15 0x0052424c in Digikam::CollectionScanner::scanAlbum (this=0xb6371260, location=..., album=...) at /build/buildd/digikam-1.0.0/libs/database/collectionscanner.cpp:664
#16 0x00525097 in Digikam::CollectionScanner::scanAlbumRoot (this=0xb6371260, location=...) at /build/buildd/digikam-1.0.0/libs/database/collectionscanner.cpp:460
#17 0x005253cf in Digikam::CollectionScanner::completeScan (this=0xb6371260) at /build/buildd/digikam-1.0.0/libs/database/collectionscanner.cpp:233
#18 0x08303a26 in Digikam::ScanController::run (this=0xa145c70) at /build/buildd/digikam-1.0.0/digikam/scancontroller.cpp:523
#19 0x01fdc3ae in QThreadPrivate::start (arg=0xa145c70) at thread/qthread_unix.cpp:244
#20 0x0044480e in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#21 0x02f087ee in clone () from /lib/tls/i686/cmov/libc.so.6

Thread 1 (Thread 0xb789c790 (LWP 7563)):
[KCrash Handler]
#6  0x008d7422 in __kernel_vsyscall ()
#7  0x02e664d1 in raise () from /lib/tls/i686/cmov/libc.so.6
#8  0x02e69932 in abort () from /lib/tls/i686/cmov/libc.so.6
#9  0x02e9cee5 in ?? () from /lib/tls/i686/cmov/libc.so.6
#10 0x02ea6ff1 in ?? () from /lib/tls/i686/cmov/libc.so.6
#11 0x02eab806 in free () from /lib/tls/i686/cmov/libc.so.6
#12 0x015900fb in QRegion::cleanUp (x=0x0) at painting/qregion.cpp:3924
#13 0x015901bb in ~QRegion (this=0x6, __in_chrg=<value optimized out>) at painting/qregion.cpp:3935
#14 0x01611985 in QWidgetBackingStore::sync (this=0xa2e45b8) at painting/qbackingstore.cpp:1292
#15 0x0142ecc3 in QWidgetPrivate::syncBackingStore (this=0xa2c9448) at kernel/qwidget.cpp:1662
#16 0x01435bac in QWidget::event (this=0xa2c9b08, event=0xa438d30) at kernel/qwidget.cpp:8266
#17 0x01892eb4 in QSplashScreen::event (this=0xa2c9b08, e=0xa438d30) at widgets/qsplashscreen.cpp:342
#18 0x013d819c in QApplicationPrivate::notify_helper (this=0xa078ed0, receiver=0xa2c9b08, e=0xa438d30) at kernel/qapplication.cpp:4242
#19 0x013deeb7 in QApplication::notify (this=0xbfdf4ce8, receiver=0xa2c9b08, e=0xa438d30) at kernel/qapplication.cpp:4207
#20 0x039570fa in KApplication::notify (this=0xbfdf4ce8, receiver=0xa2c9b08, event=0xa438d30) at ../../kdeui/kernel/kapplication.cpp:302
#21 0x020ddeab in QCoreApplication::notifyInternal (this=0xbfdf4ce8, receiver=0xa2c9b08, event=0xa438d30) at kernel/qcoreapplication.cpp:704
#22 0x020e08e3 in QCoreApplication::sendEvent (receiver=0x0, event_type=0, data=0xa04e018) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215
#23 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0xa04e018) at kernel/qcoreapplication.cpp:1345
#24 0x020e0a4d in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at kernel/qcoreapplication.cpp:1238
#25 0x0210a0df in QCoreApplication::sendPostedEvents (s=0xa07b320) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:220
#26 postEventSourceDispatch (s=0xa07b320) at kernel/qeventdispatcher_glib.cpp:276
#27 0x02585e88 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
#28 0x02589730 in ?? () from /lib/libglib-2.0.so.0
#29 0x02589863 in g_main_context_iteration () from /lib/libglib-2.0.so.0
#30 0x02109bd5 in QEventDispatcherGlib::processEvents (this=0xa078eb0, flags=...) at kernel/qeventdispatcher_glib.cpp:407
#31 0x01495b75 in QGuiEventDispatcherGlib::processEvents (this=0xa078eb0, flags=...) at kernel/qguieventdispatcher_glib.cpp:202
#32 0x020dc4c9 in QEventLoop::processEvents (this=0xa13c1f8, flags=) at kernel/qeventloop.cpp:149
#33 0x020dc91a in QEventLoop::exec (this=0xa13c1f8, flags=...) at kernel/qeventloop.cpp:201
#34 0x08304c9c in Digikam::ScanController::completeCollectionScan (this=0xa145c70, splash=0xa2c9b08) at /build/buildd/digikam-1.0.0/digikam/scancontroller.cpp:376
#35 0x082a6492 in DigikamApp (this=0xa280ef8, __in_chrg=<value optimized out>, __vtt_parm=<value optimized out>) at /build/buildd/digikam-1.0.0/digikam/digikamapp.cpp:193
#36 0x083a4bea in main (argc=5, argv=0xbfdf5134) at /build/buildd/digikam-1.0.0/digikam/main.cpp:172

Reported using DrKonqi
Comment 1 caulier.gilles 2010-01-01 11:24:48 UTC
Sound like the problem is in Exiv2 library.

Which version you use ?

Gilles Caulier
Comment 2 Sami Nieminen 2010-01-01 11:26:01 UTC
libexiv2-5     0.18.2-1
Comment 3 caulier.gilles 2010-01-01 11:38:05 UTC
Ok, try with 0.19.0 out few ago.

note : libkexiv2 from KDE core used by digiKam and kipi-plugins must be recompiled because binary compatibility is broken. Look in Help/Components Info from digiKam or Showfoto for details.

Gilles Caulier
Comment 4 Andreas Huggel 2010-01-01 12:02:55 UTC
Gilles,

The crash is not in libexiv2. It's in this part:

Thread 1 (Thread 0xb789c790 (LWP 7563)):
[KCrash Handler]
#6  0x008d7422 in __kernel_vsyscall ()
#7  0x02e664d1 in raise () from /lib/tls/i686/cmov/libc.so.6
#8  0x02e69932 in abort () from /lib/tls/i686/cmov/libc.so.6
#9  0x02e9cee5 in ?? () from /lib/tls/i686/cmov/libc.so.6
#10 0x02ea6ff1 in ?? () from /lib/tls/i686/cmov/libc.so.6
#11 0x02eab806 in free () from /lib/tls/i686/cmov/libc.so.6
#12 0x015900fb in QRegion::cleanUp (x=0x0) at painting/qregion.cpp:3924
#13 0x015901bb in ~QRegion (this=0x6, __in_chrg=<value optimized out>) at
painting/qregion.cpp:3935

Andreas
Comment 5 caulier.gilles 2010-01-01 12:13:45 UTC
Andreas,

If crash is there, well, why. It's process which draw progress in splashscreen during startup. Thereis nothing special here. or perhaps a Qt bug.

Sami, which QT4 version you use exactly ?

Gilles Caulier
Comment 6 caulier.gilles 2010-01-01 12:26:08 UTC
Sami,

Look if it's not the same KDE core issue :

https://bugs.kde.org/show_bug.cgi?id=220708#c1

Gilles Caulier
Comment 7 Sami Nieminen 2010-01-01 14:11:17 UTC
My qt version is 4.6.0.

It seems indeed that the crash is not related to libexiv2 at all. When I reproduce the crash backtrace, it is almost every time little different, but always having to do with some free() call, like here:

Thread 13 (Thread 0xb48dcb70 (LWP 8711)):
[KCrash Handler]
#6  0x006d8422 in __kernel_vsyscall ()
#7  0x02b604d1 in raise () from /lib/tls/i686/cmov/libc.so.6
#8  0x02b63932 in abort () from /lib/tls/i686/cmov/libc.so.6
#9  0x02b96ee5 in ?? () from /lib/tls/i686/cmov/libc.so.6
#10 0x02ba0ff1 in ?? () from /lib/tls/i686/cmov/libc.so.6
#11 0x02ba5806 in free () from /lib/tls/i686/cmov/libc.so.6
#12 0x00cdd6f1 in operator delete(void*) () from /usr/lib/libstdc++.so.6
#13 0x00cdd74d in operator delete[](void*) () from /usr/lib/libstdc++.so.6
#14 0x0770c239 in CSubband::FreeMemory (this=0x0) at /build/buildd/digikam-1.0.0/libs/3rdparty/libpgf/Subband.cpp:96
#15 0x0770cfa0 in CWaveletTransform::InverseTransform (this=0xb0614d0, srcLevel=2, w=0xb48db98c, h=0xb48db9ac, data=0xb48db964)
    at /build/buildd/digikam-1.0.0/libs/3rdparty/libpgf/WaveletTransform.cpp:353
#16 0x0770a66a in CPGFImage::Read (this=0xb48db940, level=0, cb=0, data=0x0) at /build/buildd/digikam-1.0.0/libs/3rdparty/libpgf/PGFimage.cpp:299
#17 0x0770e756 in Digikam::readPGFImageData (data=..., img=...) at /build/buildd/digikam-1.0.0/libs/threadimageio/pgfutils.cpp:68
#18 0x076e7662 in Digikam::ThumbnailCreator::loadFromDatabase (this=0x969cd10, info=...) at /build/buildd/digikam-1.0.0/libs/threadimageio/thumbnailcreator.cpp:587

It can be the same issue like the #220708 report is talking about. When I set:

export QT_NO_GLIB=1
export MALLOC_CHECK_=

and then start digikam from console, I couldn't reproduce the crash anymore. Also sometimes I can start digikam without that trick, but it crashes after some time later.
Comment 8 Dario Andres 2010-01-01 14:19:12 UTC
Then, this is the same crash as bug 196207 (a glibc bug). Merging. Thanks

*** This bug has been marked as a duplicate of bug 196207 ***
Comment 9 caulier.gilles 2021-05-07 06:20:47 UTC
Not reproducible with digiKam 7.3.0 and Exiv2 0.27.4