[Digikam-devel] [Bug 134999] crash in exiv2 when searching for new images

Daniel Seifert dseifert at gmx.de
Sun Dec 3 22:04:47 GMT 2006


------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
         
http://bugs.kde.org/show_bug.cgi?id=134999         




------- Additional Comments From dseifert gmx de  2006-12-03 23:04 -------
Same problem here (digicam 0.9.0 rc1 on gentoo, exiv2-0.11), trying to import more than 5000 jpeg files (disk size 8 GB). keywords and comments have been added using exiftools and some exist from the camera (Canon ixus) and iPhoto, images are scattered among quite a few (sub)directories.

digikam3.db file has been deleted and at startup digikam starts to scan the images, invariably leading to a crash (not always at the exact same position it seems)

[...]
digikam: WARNING: sqlite_step error: database disk image is malformed on query: REPLACE INTO Images ( caption , datetime, name, dirid )  VALUES ('','2004-08-07T16:56:51','133_3337.JPG',35)
digikam: WARNING: sqlite_step error: database disk image is malformed on query: SELECT Images.name FROM Images WHERE Images.dirid=36
*** glibc detected *** digikam: corrupted double-linked list: 0x08182080 ***
======= Backtrace: =========
/lib/libc.so.6[0xb6361bab]
/lib/libc.so.6[0xb6361c5e]
/lib/libc.so.6[0xb63637a0]
/lib/libc.so.6(malloc+0x74)[0xb636522e]
/usr/lib/libsqlite3.so.0(sqlite3GenericMalloc+0x1d)[0xb7c38dfd]
/usr/lib/libsqlite3.so.0(sqlite3MallocRaw+0x36)[0xb7c4de5c]
/usr/lib/libsqlite3.so.0(sqlite3Malloc+0x26)[0xb7c4e00c]
/usr/lib/libsqlite3.so.0(sqlite3MallocX+0x25)[0xb7c4e107]
/usr/lib/libsqlite3.so.0(sqlite3ParserAlloc+0x10)[0xb7c3c676]
/usr/lib/libsqlite3.so.0(sqlite3RunParser+0x35)[0xb7c4a4f8]
/usr/lib/libsqlite3.so.0(sqlite3_prepare+0xcc)[0xb7c4169f]
/usr/lib/libdigikam.so.0(_ZN7Digikam7AlbumDB7execSqlERK7QStringP11QStringListb+0x76)[0xb7d5e97c]
/usr/lib/libdigikam.so.0(_ZN7Digikam7AlbumDB7addItemEiRK7QStringRK9QDateTimeS3_iR11QStringList+0x13b)[0xb7d64913]
/usr/lib/libdigikam.so.0(_ZN7Digikam7ScanLib19storeItemInDatabaseERK7QStringS3_i+0x28e)[0xb7db47e2]
/usr/lib/libdigikam.so.0(_ZN7Digikam7ScanLib8allFilesERK7QString+0x591)[0xb7db5d39]
/usr/lib/libdigikam.so.0(_ZN7Digikam7ScanLib8allFilesERK7QString+0x546)[0xb7db5cee]
/usr/lib/libdigikam.so.0(_ZN7Digikam7ScanLib16findMissingItemsEv+0x352)[0xb7db6578]
/usr/lib/libdigikam.so.0(_ZN7Digikam7ScanLib9startScanEv+0x1ac)[0xb7db6800]
/usr/lib/libdigikam.so.0(_ZN7Digikam12AlbumManager14setLibraryPathERK7QString+0x43c)[0xb7d55bf2]
digikam(main+0x8d8)[0x804a378]
/lib/libc.so.6(__libc_start_main+0xdc)[0xb6316864]
digikam(_ZN6QGList5clearEv+0x95)[0x8049a21]


Last relevant valgrind output

==13973== Invalid write of size 2
==13973==    at 0x5601FFD: QLatin15Codec::toUnicode(char const*, int) const (in /usr/qt/3/lib/libqt-mt.so.3.3.6)
==13973==    by 0x42EDC9E: Digikam::DMetadata::detectEncodingAndDecode(std::string const&) (in /usr/lib/libdigikam.so.0.0.0)
==13973==    by 0x42F6611: Digikam::DMetadata::convertCommentValue(Exiv2::Exifdatum const&) (in /usr/lib/libdigikam.so.0.0.0)
==13973==    by 0x42FB012: Digikam::DMetadata::getImageComment() const (in /usr/lib/libdigikam.so.0.0.0)
==13973==    by 0x417168E: Digikam::ScanLib::storeItemInDatabase(QString const&, QString const&, int) (in /usr/lib/libdigikam.so.0.0.0)
==13973==    by 0x4172D38: Digikam::ScanLib::allFiles(QString const&) (in /usr/lib/libdigikam.so.0.0.0)
==13973==    by 0x4172CED: Digikam::ScanLib::allFiles(QString const&) (in /usr/lib/libdigikam.so.0.0.0)
==13973==    by 0x4173577: Digikam::ScanLib::findMissingItems() (in /usr/lib/libdigikam.so.0.0.0)
==13973==    by 0x41737FF: Digikam::ScanLib::startScan() (in /usr/lib/libdigikam.so.0.0.0)
==13973==    by 0x4112BF1: Digikam::AlbumManager::setLibraryPath(QString const&) (in /usr/lib/libdigikam.so.0.0.0)
==13973==    by 0x804A377: main (in /usr/bin/digikam)
==13973==  Address 0x5F4D074 is 12 bytes before a block of size 24 free'd
==13973==    at 0x401FCD2: operator delete(void*) (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==13973==    by 0x5B7298E: std::string::_Rep::_M_destroy(std::allocator<char> const&) (in /usr/lib/gcc/i686-pc-linux-gnu/4.1.1/libstdc++.so.6.0.8)
==13973==    by 0x45F9752: Exiv2::ExifKey::makeKey() (in /usr/lib/libexiv2-0.11.so)
==13973==    by 0x45F9A49: Exiv2::ExifKey::ExifKey(Exiv2::Entry const&) (in /usr/lib/libexiv2-0.11.so)
==13973==    by 0x45BD0A6: Exiv2::Exifdatum::Exifdatum(Exiv2::Entry const&, Exiv2::ByteOrder) (in /usr/lib/libexiv2-0.11.so)
==13973==    by 0x45C2447: Exiv2::ExifData::add(__gnu_cxx::__normal_iterator<Exiv2::Entry const*, std::vector<Exiv2::Entry, std::allocator<Exiv2::Entry> > >, __gnu_cxx::__normal_iterator<Exiv2::Entry const*, std::vector<Exiv2::Entry, std::allocator<Exiv2::Entry> > >, Exiv2::ByteOrder) (in /usr/lib/libexiv2-0.11.so)
==13973==    by 0x45C2A24: Exiv2::ExifData::load(unsigned char const*, long) (in /usr/lib/libexiv2-0.11.so)
==13973==    by 0x45D5B51: Exiv2::JpegBase::readMetadata() (in /usr/lib/libexiv2-0.11.so)
==13973==    by 0x4300F3E: Digikam::DMetaLoader::loadWithExiv2(QString const&) (in /usr/lib/libdigikam.so.0.0.0)
==13973==    by 0x4301365: Digikam::JPEGMetaLoader::load(QString const&) (in /usr/lib/libdigikam.so.0.0.0)
==13973==    by 0x42EDAB1: Digikam::DMetadata::load(QString const&, Digikam::DImg::FORMAT) (in /usr/lib/libdigikam.so.0.0.0)
==13973==    by 0x42FA167: Digikam::DMetadata::DMetadata(QString const&, Digikam::DImg::FORMAT) (in /usr/lib/libdigikam.so.0.0.0)

HTH and would appreciate any pointers on how to fix this in the files.



More information about the Digikam-devel mailing list