Bug 112845

Summary: digiKam crash on startup
Product: [Applications] digikam Reporter: Nir Dremer <mailing>
Component: Metadata-EngineAssignee: Digikam Developers <digikam-bugs-null>
Status: RESOLVED FIXED    
Severity: crash CC: caulier.gilles
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Gentoo Packages   
OS: Linux   
Latest Commit: Version Fixed In: 7.3.0
Sentry Crash Report:

Description Nir Dremer 2005-09-18 20:14:59 UTC
Version:           0.8 beta1 & beta2 (using KDE KDE 3.4.2)
Installed from:    Gentoo Packages
Compiler:          gcc version 3.4.4 (Gentoo 3.4.4-r1, ssp-3.4.4-1.0, pie-8.7.8) 
OS:                Linux

Loading digikam (either beta1 or beta2) leads to the following output:

digikam: ScanLib: Finding non-existing Albums: 9 ms
KCrash: Application 'digikam' crashing...


compiling with debug, this is the back-trace:
(gdb) bt
#0  0xb70d674f in QGArray::QGArray () from /usr/qt/3/lib/libqt-mt.so.3
#1  0xb73d56f3 in KApplication::startupId () from /usr/kde/3.4/lib/libkdecore.so.4
#2  0xbfbaa25c in ?? ()
#3  0x00000018 in ?? ()
#4  0x00000069 in ?? ()
#5  0xb75212c8 in ?? () from /usr/kde/3.4/lib/libkdecore.so.4
#6  0x00000008 in ?? ()
#7  0xb75212c8 in ?? () from /usr/kde/3.4/lib/libkdecore.so.4
#8  0xbfbaa25c in ?? ()
#9  0xb74486fc in KCrash::defaultCrashHandler () from /usr/kde/3.4/lib/libkdecore.so.4
#10 0x417cc99f in exif_entry_get_value () from /usr/lib/libexif.so.10
#11 0xbfbaa4b0 in ?? ()
#12 0x08465198 in ?? ()
#13 0x00000000 in ?? ()
#14 0xbfbaa27c in ?? ()
#15 0x00000010 in ?? ()
#16 0xb75151e6 in NETWinInfo::OnAllDesktops () from /usr/kde/3.4/lib/libkdecore.so.4
#17 0x410a7fae in free () from /lib/libc.so.6
Previous frame inner to this frame (corrupt stack?)

Checking application with strace gave more interesting information (at least for me):
gettimeofday({1127066735, 344040}, NULL) = 0
select(10, [3 4 5 7 9], [], [], {0, 0}) = 1 (in [5], left {0, 0})
read(5, "\0", 1)                        = 1
gettimeofday({1127066735, 344178}, NULL) = 0
open("/home/dreamer/pictures/test-folder/img_1310.jpg", O_RDONLY) = 13
fstat64(13, {st_mode=S_IFREG|0755, st_size=2595646, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb72b0000
read(13, "\377\330\377\341\'\376Exif\0\0II*\0\10\0\0\0\t\0\17\1\2"..., 4096) = 4096
_llseek(13, 0, [0], SEEK_SET)           = 0
read(13, "\377\330\377\341\'\376Exif\0\0II*\0\10\0\0\0\t\0\17\1\2"..., 4096) = 4096
read(13, "\207\366\275\315\347\224$\2771:\242g\344@\33\nI\3\'\223"..., 4096) = 4096
read(13, "\253\331\206w^\245?aV\315w{\231Q\302S\247UTZ\0316?\v|G"..., 4096) = 4096
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
rt_sigaction(SIGALRM, {SIG_DFL}, {SIG_DFL}, 8) = 0
alarm(3)                                = 0
close(9)                                = 0
getrlimit(RLIMIT_NOFILE, {rlim_cur=1024, rlim_max=1024}) = 0
close(3)                                = 0
close(4)                                = 0
close(5)                                = 0
close(6)                                = 0
close(7)                                = 0
close(8)                                = 0
close(9)                                = -1 EBADF (Bad file descriptor)
close(10)                               = 0
close(11)                               = 0
close(12)                               = 0
close(13)                               = 0
close(14)                               = -1 EBADF (Bad file descriptor)
close(15)                               = -1 EBADF (Bad file descriptor)
close(16)                               = -1 EBADF (Bad file descriptor)
close(17)                               = -1 EBADF (Bad file descriptor)
close(18)                               = -1 EBADF (Bad file descriptor)
close(19)                               = -1 EBADF (Bad file descriptor)
close(20)                               = -1 EBADF (Bad file descriptor)

...
close(1023)                             = -1 EBADF (Bad file descriptor)


Several tests i did were:
1. deleting the entire digikam configuration - didnt help.
2. deleting digikam.db files and .thumbnail folder - didnt help.
3. testing if application will load with empty pictures folder - succeeded.
4. testing if application will load with 1 picture inside - application crashed.


Two pieces of information pops right out:
1. exif looks like doing some problems.
2. closing 1024 file-descriptors.. looks suspicious.. any clues?

I'm using:
- digikam 0.8.0, tried both beta1 & recent beta2.
- libkexif 0.2.1 + gcc4 patch (gentoo libkexif-0.2.1-r1).

any clues?
Comment 1 Renchi Raju 2005-09-18 20:40:37 UTC
it looks like a crash within libexif. can you compile both libexif and libkexif with debugging enabled and get us the backtrace?
Comment 2 Nir Dremer 2005-09-18 21:15:25 UTC
following you request i did a simple test.

downgrading from libexif 0.6.12 to 0.5.12 solved the problem.

i'll now compile in debug and update with results.
Comment 3 Nir Dremer 2005-09-18 21:30:52 UTC
I found the cause:

gentoo added a gcc4 patch into libexif & libkexif.

libkexif gcc4 patch causes a crash when double-clicking on an image in digikam (reported it to gentoo).

libexif gcc4 patch causes a crash during digikam loading (will report it soon)...
Comment 4 Renchi Raju 2005-09-21 15:51:09 UTC
gentoo packaging error.
Comment 5 caulier.gilles 2021-05-04 06:01:06 UTC
Not reproducible with digiKam 7.3.0 and Exiv2 0.27.4