Bug 234594 - Digikam crashes when scanning tags
Summary: Digikam crashes when scanning tags
Status: RESOLVED FIXED
Alias: None
Product: digikam
Classification: Applications
Component: Database-Scan (show other bugs)
Version: 1.3.0
Platform: Gentoo Packages Linux
: NOR crash
Target Milestone: ---
Assignee: Digikam Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-04-17 08:03 UTC by Yann LE HIR
Modified: 2017-07-25 10:50 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In: 1.3.0


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Yann LE HIR 2010-04-17 08:03:44 UTC
Version:           SVN r1115586 (using KDE 4.4.2)
Compiler:          gcc version 4.3.4 (Gentoo 4.3.4 p1.0, pie-10.1.5) 
OS:                Linux
Installed from:    Gentoo Packages

Digikam crashes at start when scanning for new images, or if there is some modifications on the hdd.

I traced it back to "libs/database/tagscache.cpp" l77

I noted the existance of some booleans like "needUpdateInfos" and "needUpdateHash" that where never put to false, even after an update.
So i added "needUpdateInfos = false;" line 79
and "needUpdateHash = false;" line 94.

Anyway the crash moved to an other function. Here is the backrace :
#0  0xb5211095 in QMutex::lock() () from /usr/lib/qt4/libQtCore.so.4
#1  0xb5211f70 in QReadWriteLock::lockForRead() () from /usr/lib/qt4/libQtCore.so.4
#2  0xb6d50164 in QReadLocker::relock (this=0xb15b8b38) at /usr/include/qt4/QtCore/qreadwritelock.h:111
#3  0xb6d501dc in QReadLocker (this=0xb15b8b38, areadWriteLock=0x86951d4) at /usr/include/qt4/QtCore/qreadwritelock.h:133
#4  0xb6d4e579 in Digikam::TagsCache::tagForPath (this=0x8688ab0, tagPath=...)
    at /home/build/graphics/digikam/libs/database/tagscache.cpp:232
#5  0xb6d4e8f6 in Digikam::TagsCache::getOrCreateTag (this=0x8688ab0, tagPath=...)
    at /home/build/graphics/digikam/libs/database/tagscache.cpp:388
#6  0xb6d4e974 in Digikam::TagsCache::getOrCreateTags (this=0x8688ab0, tagPaths=...)
    at /home/build/graphics/digikam/libs/database/tagscache.cpp:381
#7  0xb6d2d6ec in Digikam::ImageScanner::scanTags (this=0xb15b8cbc)
    at /home/build/graphics/digikam/libs/database/imagescanner.cpp:479
#8  0xb6d2eee2 in Digikam::ImageScanner::scanFile (this=0xb15b8cbc, mode=Digikam::ImageScanner::NewScan)
    at /home/build/graphics/digikam/libs/database/imagescanner.cpp:247
#9  0xb6d2faa0 in Digikam::ImageScanner::newFile (this=0xb15b8cbc, albumId=21)
    at /home/build/graphics/digikam/libs/database/imagescanner.cpp:102
#10 0xb6cd67f5 in Digikam::CollectionScanner::scanNewFile (this=0xb15b9304, info=..., albumId=21)
    at /home/build/graphics/digikam/libs/database/collectionscanner.cpp:756
#11 0xb6cd9cd6 in Digikam::CollectionScanner::scanAlbum (this=0xb15b9304, location=..., album=...)
    at /home/build/graphics/digikam/libs/database/collectionscanner.cpp:665
#12 0xb6cda013 in Digikam::CollectionScanner::scanAlbum (this=0xb15b9304, location=..., album=...)
    at /home/build/graphics/digikam/libs/database/collectionscanner.cpp:683
#13 0xb6cda013 in Digikam::CollectionScanner::scanAlbum (this=0xb15b9304, location=..., album=...)
    at /home/build/graphics/digikam/libs/database/collectionscanner.cpp:683
#14 0xb6cda013 in Digikam::CollectionScanner::scanAlbum (this=0xb15b9304, location=..., album=...)
    at /home/build/graphics/digikam/libs/database/collectionscanner.cpp:683
#15 0xb6cda618 in Digikam::CollectionScanner::scanAlbumRoot (this=0xb15b9304, location=...)
    at /home/build/graphics/digikam/libs/database/collectionscanner.cpp:479
#16 0xb6cdaf88 in Digikam::CollectionScanner::completeScan (this=0xb15b9304)
    at /home/build/graphics/digikam/libs/database/collectionscanner.cpp:250
#17 0x0838dd9f in Digikam::ScanController::run (this=0x866e178)
    at /home/build/graphics/digikam/digikam/scancontroller.cpp:541
#18 0xb521673f in ?? () from /usr/lib/qt4/libQtCore.so.4
#19 0xb51748df in start_thread () from /lib/libpthread.so.0
Comment 1 Marcel Wiesweg 2010-04-17 15:19:41 UTC
SVN commit 1115784 by mwiesweg:

Set flags to false when info is updated.
Some restructuring, disentangle locks.

CCBUG: 234594

 M  +45 -43    tagscache.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1115784
Comment 2 Marcel Wiesweg 2010-04-17 16:01:19 UTC
I have changed a bit here and there, but I'm not sure about this crash.
Is any other thread involved as well? Is this really the thread where the crash hit?
Comment 3 Yann LE HIR 2010-04-17 21:03:02 UTC
I only have 2 threads :
* 2 Thread 0xb15b9b70 (LWP 13709)  0xb5211095 in QMutex::lock() () from /usr/lib/qt4/libQtCore.so.4
  1 Thread 0xb2cde720 (LWP 13705)  0xffffe424 in __kernel_vsyscall ()

The second one :

#0  0xffffe424 in __kernel_vsyscall ()
#1  0xb4f45ca7 in poll () from /lib/libc.so.6
#2  0xb4998cbb in g_poll () from /usr/lib/libglib-2.0.so.0
#3  0x0000000a in ?? ()
#4  0x000062af in ?? ()
#5  0xb4a24ff4 in ?? () from /usr/lib/libglib-2.0.so.0
#6  0xb4a253b8 in ?? () from /usr/lib/libglib-2.0.so.0
#7  0xb4998c96 in g_poll () from /usr/lib/libglib-2.0.so.0
#8  0xb498b9c6 in ?? () from /usr/lib/libglib-2.0.so.0
#9  0x08db0530 in ?? ()
#10 0x0000000a in ?? ()
#11 0x000062af in ?? ()
#12 0x08db0530 in ?? ()
#13 0x0000000b in ?? ()
#14 0x00000002 in ?? ()
#15 0x086d3700 in ?? ()
#16 0xb4a253b8 in ?? () from /usr/lib/libglib-2.0.so.0
#17 0xb4a253e0 in ?? () from /usr/lib/libglib-2.0.so.0
#18 0xbfffcb24 in ?? ()
#19 0xb4a253e0 in ?? () from /usr/lib/libglib-2.0.so.0
#20 0x08595644 in ?? ()
#21 0x00000001 in ?? ()
#22 0x000062af in ?? ()
#23 0x08db0530 in ?? ()
#24 0xb4998c90 in g_pattern_match_string () from /usr/lib/libglib-2.0.so.0
#25 0xb51789c0 in ?? () from /lib/libpthread.so.0
#26 0xb5177410 in ?? () from /lib/libpthread.so.0
#27 0x08595644 in ?? ()
#28 0xb49b1b12 in g_thread_self () from /usr/lib/libglib-2.0.so.0
#29 0x08593538 in ?? ()
#30 0x000062af in ?? ()
#31 0x7fffffff in ?? ()
#32 0xb4a24ff4 in ?? () from /usr/lib/libglib-2.0.so.0
#33 0x08595640 in ?? ()
#34 0xb5177410 in ?? () from /lib/libpthread.so.0
#35 0xb4a25788 in ?? () from /usr/lib/libglib-2.0.so.0
#36 0xb498bc5f in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#37 0x00000001 in ?? ()
#38 0x085934b8 in ?? ()
#39 0x00000000 in ?? ()

Your patch fixed the crash.
Comment 4 Marcel Wiesweg 2010-04-18 15:21:49 UTC
It's slightly unsatisfactory not to know what really caused the crash, but when it's apparently fixed I close the report.