Bug 196986

Summary: Crash when deleting images while viewing them
Product: [Applications] digikam Reporter: Michael G. Hansen <mike>
Component: Database-ModelsAssignee: Digikam Developers <digikam-bugs-null>
Status: RESOLVED FIXED    
Severity: crash CC: ahuggel, andresbajotierra, caulier.gilles, marcel.wiesweg
Priority: NOR    
Version: 1.0.0   
Target Milestone: ---   
Platform: Debian testing   
OS: Linux   
Latest Commit: Version Fixed In: 7.5.0
Sentry Crash Report:

Description Michael G. Hansen 2009-06-18 11:08:29 UTC
Version:           1.0.0beta1 (using KDE 4.2.4)
OS:                Linux
Installed from:    Debian testing/unstable Packages

From what I can tell, this bug leads either to a crash or to weird behavior, depending on the view mode. When moving images to the trash by pressing "Delete" crashes about every third time or shows weird behavior.

Weird behavior:
View an album, but do not click on "View" for any image. Delete some images using "Delete". Sometimes, an image is moved to trash, but still shown in the view, while the image to the right is not shown anymore. Pressing F5 to refresh the view shows the correct result.

Crash:
View an album, and click on "View" for an image. Hit "Delete" to delete the current image -> Digikam crashes about every third time.

Here is a backtrace of a crash:

Application: digiKam (digikam), signal SIGSEGV
0x00007f407d45f8e1 in nanosleep () from /lib/libc.so.6
Current language:  auto; currently c
[Current thread is 0 (LWP 17994)]

Thread 16 (Thread 0x7f4073660950 (LWP 17995)):
#0  0x00007f407d482f0b in read () from /lib/libc.so.6
#1  0x00007f407d42f350 in _IO_new_file_underflow (fp=0x8425590) at fileops.c:598
#2  0x00007f407d42ecd0 in _IO_file_xsgetn (fp=0x8425590, data=<value optimized out>, n=2) at fileops.c:1437
#3  0x00007f407d424a3f in _IO_fread (buf=0x7f407365ed50, size=1, count=2, fp=0xffffffffffffffff) at iofread.c:44
#4  0x00007f407c4d7587 in Exiv2::isJpegType () from /usr/lib/libexiv2.so.5
#5  0x00007f407c4d0656 in Exiv2::ImageFactory::open () from /usr/lib/libexiv2.so.5
#6  0x00007f407c4d0a94 in Exiv2::ImageFactory::open () from /usr/lib/libexiv2.so.5
#7  0x00007f4082d26979 in KExiv2Iface::KExiv2::load () from /usr/lib/libkexiv2.so.7
#8  0x00007f408186cb49 in Digikam::DMetadata::load (this=0x4, filePath=@0x7f4084443000) at /build/buildd-digikam_1.0.0~beta1-1-amd64-ZRYIN6/digikam-1.0.0~beta1/libs/dmetadata/dmetadata.cpp:75
#9  0x00007f408149fa51 in Digikam::ImageScanner::loadFromDisk (this=0x7f407365f060) at /build/buildd-digikam_1.0.0~beta1-1-amd64-ZRYIN6/digikam-1.0.0~beta1/libs/database/imagescanner.cpp:600
#10 0x00007f40814a5fd8 in Digikam::ImageScanner::newFile (this=0x4, albumId=-2075906048) at /build/buildd-digikam_1.0.0~beta1-1-amd64-ZRYIN6/digikam-1.0.0~beta1/libs/database/imagescanner.cpp:88
#11 0x00007f40814580f7 in Digikam::CollectionScanner::scanNewFile (this=<value optimized out>, info=@0x7087ed0, albumId=0)
    at /build/buildd-digikam_1.0.0~beta1-1-amd64-ZRYIN6/digikam-1.0.0~beta1/libs/database/collectionscanner.cpp:642
#12 0x00007f40814596ee in Digikam::CollectionScanner::scanAlbum (this=0x7f4073660010, location=@0x7f407365fe80, album=@0x7f407365f660)
    at /build/buildd-digikam_1.0.0~beta1-1-amd64-ZRYIN6/digikam-1.0.0~beta1/libs/database/collectionscanner.cpp:592
#13 0x00007f4081459603 in Digikam::CollectionScanner::scanAlbum (this=0x7f4073660010, location=@0x7f407365fe80, album=@0x7f407365f9a0)
    at /build/buildd-digikam_1.0.0~beta1-1-amd64-ZRYIN6/digikam-1.0.0~beta1/libs/database/collectionscanner.cpp:603
#14 0x00007f4081459603 in Digikam::CollectionScanner::scanAlbum (this=0x7f4073660010, location=@0x7f407365fe80, album=@0x7f407365fce0)
    at /build/buildd-digikam_1.0.0~beta1-1-amd64-ZRYIN6/digikam-1.0.0~beta1/libs/database/collectionscanner.cpp:603
#15 0x00007f4081459603 in Digikam::CollectionScanner::scanAlbum (this=0x7f4073660010, location=@0x7f407365fe80, album=@0x7f407365fe40)
    at /build/buildd-digikam_1.0.0~beta1-1-amd64-ZRYIN6/digikam-1.0.0~beta1/libs/database/collectionscanner.cpp:603
#16 0x00007f4081459fb7 in Digikam::CollectionScanner::scanAlbumRoot (this=0x7f4073660010, location=@0x7f407365fe80)
    at /build/buildd-digikam_1.0.0~beta1-1-amd64-ZRYIN6/digikam-1.0.0~beta1/libs/database/collectionscanner.cpp:392
#17 0x00007f408145ab03 in Digikam::CollectionScanner::partialScan (this=0x7f4073660010, albumRoot=@0x7f407365ffb0, album=@0x7f407365ffa0)
    at /build/buildd-digikam_1.0.0~beta1-1-amd64-ZRYIN6/digikam-1.0.0~beta1/libs/database/collectionscanner.cpp:302
#18 0x00007f408145ad55 in Digikam::CollectionScanner::partialScan (this=0x7f4073660010, filePath=@0x7f4073660070)
    at /build/buildd-digikam_1.0.0~beta1-1-amd64-ZRYIN6/digikam-1.0.0~beta1/libs/database/collectionscanner.cpp:256
#19 0x00000000006b4194 in Digikam::ScanController::run (this=0x2aa9ba0) at /build/buildd-digikam_1.0.0~beta1-1-amd64-ZRYIN6/digikam-1.0.0~beta1/digikam/scancontroller.cpp:487
#20 0x00007f407df2b742 in QThreadPrivate::start (arg=0x2aa9ba0) at thread/qthread_unix.cpp:189
#21 0x00007f407c23afaa in start_thread (arg=<value optimized out>) at pthread_create.c:297
#22 0x00007f407d48f2ed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#23 0x0000000000000000 in ?? ()

Thread 15 (Thread 0x7f406f9d0950 (LWP 17998)):
#0  0x00007fff8c7fe73c in clock_gettime ()
#1  0x00007f407820bf6f in *__GI_clock_gettime (clock_id=1, tp=0x7f406f9cfe00) at ../sysdeps/unix/clock_gettime.c:100
#2  0x00007f407e03efcd in QTimerInfoList::getTime (this=<value optimized out>, t=@0x2e530e0) at kernel/qeventdispatcher_unix.cpp:339
#3  0x00007f407e03f1c1 in QTimerInfoList::updateCurrentTime (this=0x1) at kernel/qeventdispatcher_unix.cpp:297
#4  0x00007f407e0410d3 in QTimerInfoList::timerWait (this=0x1, tm=@0x7f406f9cfe00) at kernel/qeventdispatcher_unix.cpp:420
#5  0x00007f407e03d68c in timerSourcePrepare (source=<value optimized out>, timeout=0x7f406f9cfef4) at kernel/qeventdispatcher_glib.cpp:140
#6  0x00007f4078ea6f42 in g_main_context_prepare () from /usr/lib/libglib-2.0.so.0
#7  0x00007f4078ea72ef in ?? () from /usr/lib/libglib-2.0.so.0
#8  0x00007f4078ea77bc in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#9  0x00007f407e03d4de in QEventDispatcherGlib::processEvents (this=0x2e19c10, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:326
#10 0x00007f407e0126f2 in QEventLoop::processEvents (this=<value optimized out>, flags={i = 1872560192}) at kernel/qeventloop.cpp:149
#11 0x00007f407e012abd in QEventLoop::exec (this=0x7f406f9d0080, flags={i = 1872560272}) at kernel/qeventloop.cpp:200
#12 0x00007f407df287e8 in QThread::exec (this=<value optimized out>) at thread/qthread.cpp:487
#13 0x00007f407df2b742 in QThreadPrivate::start (arg=0x2d43e70) at thread/qthread_unix.cpp:189
#14 0x00007f407c23afaa in start_thread (arg=<value optimized out>) at pthread_create.c:297
#15 0x00007f407d48f2ed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#16 0x0000000000000000 in ?? ()

Thread 14 (Thread 0x7f406ed30950 (LWP 17999)):
#0  0x00007fff8c7fe73c in clock_gettime ()
#1  0x00007f407820bf6f in *__GI_clock_gettime (clock_id=1, tp=0x7f406ed2fe00) at ../sysdeps/unix/clock_gettime.c:100
#2  0x00007f407e03efcd in QTimerInfoList::getTime (this=<value optimized out>, t=@0x2ea03e0) at kernel/qeventdispatcher_unix.cpp:339
#3  0x00007f407e03f1c1 in QTimerInfoList::updateCurrentTime (this=0x1) at kernel/qeventdispatcher_unix.cpp:297
#4  0x00007f407e0410d3 in QTimerInfoList::timerWait (this=0x1, tm=@0x7f406ed2fe00) at kernel/qeventdispatcher_unix.cpp:420
#5  0x00007f407e03d68c in timerSourcePrepare (source=<value optimized out>, timeout=0x7f406ed2fef4) at kernel/qeventdispatcher_glib.cpp:140
#6  0x00007f4078ea6f42 in g_main_context_prepare () from /usr/lib/libglib-2.0.so.0
#7  0x00007f4078ea72ef in ?? () from /usr/lib/libglib-2.0.so.0
#8  0x00007f4078ea77bc in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#9  0x00007f407e03d4de in QEventDispatcherGlib::processEvents (this=0x2e119e0, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:326
#10 0x00007f407e0126f2 in QEventLoop::processEvents (this=<value optimized out>, flags={i = 1859321920}) at kernel/qeventloop.cpp:149
#11 0x00007f407e012abd in QEventLoop::exec (this=0x7f406ed30080, flags={i = 1859322000}) at kernel/qeventloop.cpp:200
#12 0x00007f407df287e8 in QThread::exec (this=<value optimized out>) at thread/qthread.cpp:487
#13 0x00007f407df2b742 in QThreadPrivate::start (arg=0x2e55db0) at thread/qthread_unix.cpp:189
#14 0x00007f407c23afaa in start_thread (arg=<value optimized out>) at pthread_create.c:297
#15 0x00007f407d48f2ed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#16 0x0000000000000000 in ?? ()

Thread 13 (Thread 0x7f406e4af950 (LWP 18000)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261
#1  0x00007f407df2c739 in QWaitCondition::wait (this=0x2f456f0, mutex=0x2f456e8, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:87
#2  0x00007f40818d414c in Digikam::LoadSaveThread::run (this=0x2f456d0) at /build/buildd-digikam_1.0.0~beta1-1-amd64-ZRYIN6/digikam-1.0.0~beta1/libs/threadimageio/loadsavethread.cpp:136
#3  0x00007f407df2b742 in QThreadPrivate::start (arg=0x2f456d0) at thread/qthread_unix.cpp:189
#4  0x00007f407c23afaa in start_thread (arg=<value optimized out>) at pthread_create.c:297
#5  0x00007f407d48f2ed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#6  0x0000000000000000 in ?? ()

Thread 12 (Thread 0x7f406dcae950 (LWP 18001)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261
#1  0x00007f407df2c739 in QWaitCondition::wait (this=0x2df0d80, mutex=0x2df0d78, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:87
#2  0x00007f40818d414c in Digikam::LoadSaveThread::run (this=0x2df0d60) at /build/buildd-digikam_1.0.0~beta1-1-amd64-ZRYIN6/digikam-1.0.0~beta1/libs/threadimageio/loadsavethread.cpp:136
#3  0x00007f407df2b742 in QThreadPrivate::start (arg=0x2df0d60) at thread/qthread_unix.cpp:189
#4  0x00007f407c23afaa in start_thread (arg=<value optimized out>) at pthread_create.c:297
#5  0x00007f407d48f2ed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#6  0x0000000000000000 in ?? ()
Current language:  auto; currently asm

Thread 11 (Thread 0x7f4065987950 (LWP 18002)):
#0  pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:217
#1  0x00007f406b505ca1 in ?? () from /usr/lib/libxine.so.1
#2  0x00007f407c23afaa in start_thread (arg=<value optimized out>) at pthread_create.c:297
#3  0x00007f407d48f2ed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#4  0x0000000000000000 in ?? ()

Thread 10 (Thread 0x7f40636b0950 (LWP 18003)):
#0  0x00007f407d488b42 in select () from /lib/libc.so.6
#1  0x00007f406b52e654 in xine_usec_sleep () from /usr/lib/libxine.so.1
#2  0x00007f406b5137bb in ?? () from /usr/lib/libxine.so.1
#3  0x00007f407c23afaa in start_thread (arg=<value optimized out>) at pthread_create.c:297
#4  0x00007f407d48f2ed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#5  0x0000000000000000 in ?? ()

Thread 9 (Thread 0x7f4062eaf950 (LWP 18004)):
#0  0x00007f4078ea6f84 in g_main_context_prepare () from /usr/lib/libglib-2.0.so.0
#1  0x00007f4078ea72ef in ?? () from /usr/lib/libglib-2.0.so.0
#2  0x00007f4078ea77bc in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#3  0x00007f407e03d4de in QEventDispatcherGlib::processEvents (this=0x358ae30, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:326
#4  0x00007f407e0126f2 in QEventLoop::processEvents (this=<value optimized out>, flags={i = 1659564016}) at kernel/qeventloop.cpp:149
#5  0x00007f407e012abd in QEventLoop::exec (this=0x7f4062eaf030, flags={i = 1659564096}) at kernel/qeventloop.cpp:200
#6  0x00007f407df287e8 in QThread::exec (this=<value optimized out>) at thread/qthread.cpp:487
#7  0x00007f406b760634 in ?? () from /usr/lib/kde4/plugins/phonon_backend/phonon_xine.so
#8  0x00007f407df2b742 in QThreadPrivate::start (arg=0x358a830) at thread/qthread_unix.cpp:189
#9  0x00007f407c23afaa in start_thread (arg=<value optimized out>) at pthread_create.c:297
#10 0x00007f407d48f2ed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#11 0x0000000000000000 in ?? ()
Current language:  auto; currently c

Thread 8 (Thread 0x7f40624a5950 (LWP 18007)):
#0  0x00007f407d482f0b in read () from /lib/libc.so.6
#1  0x00007f406bc64ee5 in ?? () from /usr/lib/libasound.so.2
#2  0x00007f406bc5fa28 in snd_hctl_handle_events () from /usr/lib/libasound.so.2
#3  0x00007f406bc69465 in snd_mixer_handle_events () from /usr/lib/libasound.so.2
#4  0x00007f40624aa888 in ?? () from /usr/lib/xine/plugins/1.26/xineplug_ao_out_alsa.so
#5  0x00007f407c23afaa in start_thread (arg=<value optimized out>) at pthread_create.c:297
#6  0x00007f407d48f2ed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#7  0x0000000000000000 in ?? ()

Thread 7 (Thread 0x7f4061ca4950 (LWP 18008)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261
#1  0x00007f406b516ce3 in ?? () from /usr/lib/libxine.so.1
#2  0x00007f407c23afaa in start_thread (arg=<value optimized out>) at pthread_create.c:297
#3  0x00007f407d48f2ed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#4  0x0000000000000000 in ?? ()

Thread 6 (Thread 0x7f405f5cf950 (LWP 18023)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261
#1  0x00007f407df2c739 in QWaitCondition::wait (this=0x5312b70, mutex=0x5312b68, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:87
#2  0x00007f40818d414c in Digikam::LoadSaveThread::run (this=0x5312b50) at /build/buildd-digikam_1.0.0~beta1-1-amd64-ZRYIN6/digikam-1.0.0~beta1/libs/threadimageio/loadsavethread.cpp:136
#3  0x00007f407df2b742 in QThreadPrivate::start (arg=0x5312b50) at thread/qthread_unix.cpp:189
#4  0x00007f407c23afaa in start_thread (arg=<value optimized out>) at pthread_create.c:297
#5  0x00007f407d48f2ed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#6  0x0000000000000000 in ?? ()
Current language:  auto; currently asm

Thread 5 (Thread 0x7f405e5cd950 (LWP 18029)):
#0  0x00007fff8c7fe73c in clock_gettime ()
#1  0x00007f407820bf6f in *__GI_clock_gettime (clock_id=1, tp=0x7f405e5cce00) at ../sysdeps/unix/clock_gettime.c:100
#2  0x00007f407e03efcd in QTimerInfoList::getTime (this=<value optimized out>, t=@0x61a1a30) at kernel/qeventdispatcher_unix.cpp:339
#3  0x00007f407e03f1c1 in QTimerInfoList::updateCurrentTime (this=0x1) at kernel/qeventdispatcher_unix.cpp:297
#4  0x00007f407e0410d3 in QTimerInfoList::timerWait (this=0x1, tm=@0x7f405e5cce00) at kernel/qeventdispatcher_unix.cpp:420
#5  0x00007f407e03d68c in timerSourcePrepare (source=<value optimized out>, timeout=0x7f405e5ccef4) at kernel/qeventdispatcher_glib.cpp:140
#6  0x00007f4078ea6f42 in g_main_context_prepare () from /usr/lib/libglib-2.0.so.0
#7  0x00007f4078ea72ef in ?? () from /usr/lib/libglib-2.0.so.0
#8  0x00007f4078ea77bc in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#9  0x00007f407e03d4de in QEventDispatcherGlib::processEvents (this=0x61a0f70, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:326
#10 0x00007f407e0126f2 in QEventLoop::processEvents (this=<value optimized out>, flags={i = 1583140928}) at kernel/qeventloop.cpp:149
#11 0x00007f407e012abd in QEventLoop::exec (this=0x7f405e5cd080, flags={i = 1583141008}) at kernel/qeventloop.cpp:200
#12 0x00007f407df287e8 in QThread::exec (this=<value optimized out>) at thread/qthread.cpp:487
#13 0x00007f407df2b742 in QThreadPrivate::start (arg=0x61a0b40) at thread/qthread_unix.cpp:189
#14 0x00007f407c23afaa in start_thread (arg=<value optimized out>) at pthread_create.c:297
#15 0x00007f407d48f2ed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#16 0x0000000000000000 in ?? ()

Thread 4 (Thread 0x7f4060677950 (LWP 18030)):
#0  0x00007fff8c7fe73c in clock_gettime ()
#1  0x00007f407820bf6f in *__GI_clock_gettime (clock_id=1, tp=0x7f4060676e00) at ../sysdeps/unix/clock_gettime.c:100
#2  0x00007f407e03efcd in QTimerInfoList::getTime (this=<value optimized out>, t=@0x629bad0) at kernel/qeventdispatcher_unix.cpp:339
#3  0x00007f407e03f1c1 in QTimerInfoList::updateCurrentTime (this=0x1) at kernel/qeventdispatcher_unix.cpp:297
#4  0x00007f407e0410d3 in QTimerInfoList::timerWait (this=0x1, tm=@0x7f4060676e00) at kernel/qeventdispatcher_unix.cpp:420
#5  0x00007f407e03d68c in timerSourcePrepare (source=<value optimized out>, timeout=0x7f4060676ef4) at kernel/qeventdispatcher_glib.cpp:140
#6  0x00007f4078ea6f42 in g_main_context_prepare () from /usr/lib/libglib-2.0.so.0
#7  0x00007f4078ea72ef in ?? () from /usr/lib/libglib-2.0.so.0
#8  0x00007f4078ea77bc in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#9  0x00007f407e03d4de in QEventDispatcherGlib::processEvents (this=0x629afa0, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:326
#10 0x00007f407e0126f2 in QEventLoop::processEvents (this=<value optimized out>, flags={i = 1617391680}) at kernel/qeventloop.cpp:149
#11 0x00007f407e012abd in QEventLoop::exec (this=0x7f4060677080, flags={i = 1617391760}) at kernel/qeventloop.cpp:200
#12 0x00007f407df287e8 in QThread::exec (this=<value optimized out>) at thread/qthread.cpp:487
#13 0x00007f407df2b742 in QThreadPrivate::start (arg=0x629ab70) at thread/qthread_unix.cpp:189
#14 0x00007f407c23afaa in start_thread (arg=<value optimized out>) at pthread_create.c:297
#15 0x00007f407d48f2ed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#16 0x0000000000000000 in ?? ()

Thread 3 (Thread 0x7f405fe1f950 (LWP 18095)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261
#1  0x00007f407df2c739 in QWaitCondition::wait (this=0x6b68670, mutex=0x6b68668, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:87
#2  0x00007f40818d414c in Digikam::LoadSaveThread::run (this=0x6b68650) at /build/buildd-digikam_1.0.0~beta1-1-amd64-ZRYIN6/digikam-1.0.0~beta1/libs/threadimageio/loadsavethread.cpp:136
#3  0x00007f407df2b742 in QThreadPrivate::start (arg=0x6b68650) at thread/qthread_unix.cpp:189
#4  0x00007f407c23afaa in start_thread (arg=<value optimized out>) at pthread_create.c:297
#5  0x00007f407d48f2ed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#6  0x0000000000000000 in ?? ()

Thread 2 (Thread 0x7f404b6ba950 (LWP 18096)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261
#1  0x00007f407df2c739 in QWaitCondition::wait (this=0x6f4d700, mutex=0x6f4d6f8, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:87
#2  0x00007f40818d414c in Digikam::LoadSaveThread::run (this=0x6f4d6e0) at /build/buildd-digikam_1.0.0~beta1-1-amd64-ZRYIN6/digikam-1.0.0~beta1/libs/threadimageio/loadsavethread.cpp:136
#3  0x00007f407df2b742 in QThreadPrivate::start (arg=0x6f4d6e0) at thread/qthread_unix.cpp:189
#4  0x00007f407c23afaa in start_thread (arg=<value optimized out>) at pthread_create.c:297
#5  0x00007f407d48f2ed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#6  0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7f40844e1760 (LWP 17994)):
[KCrash Handler]
#5  _wordcopy_fwd_aligned (dstp=<value optimized out>, srcp=<value optimized out>, len=2305843009212505112) at wordcopy.c:112
#6  0x00007f407d43ca4a in *__GI_memmove (dest=0x7f4058179098, src=<value optimized out>, len=18446744073709551608) at memmove.c:73
#7  0x00007f407df4ede6 in QListData::remove (this=0x2f2d100, i=<value optimized out>, n=0) at tools/qlistdata.cpp:234
#8  0x00007f40814c91a5 in QList<Digikam::ImageInfo>::erase (this=0x2f2d100, afirst={i = 0x7fff8c63c280}, alast={i = 0x7fff8c63c270}) at /usr/include/qt4/QtCore/qlist.h:609
#9  0x00007f40814c7fff in Digikam::ImageModel::finishIncrementalRefresh (this=0x2fce650) at /build/buildd-digikam_1.0.0~beta1-1-amd64-ZRYIN6/digikam-1.0.0~beta1/libs/models/imagemodel.cpp:456
#10 0x00000000005e795d in Digikam::ImageAlbumModel::slotResult (this=0x7f4058a8afc8, job=0x7f4058a8afd8)
    at /build/buildd-digikam_1.0.0~beta1-1-amd64-ZRYIN6/digikam-1.0.0~beta1/libs/models/imagealbummodel.cpp:260
#11 0x00000000005e81ec in Digikam::ImageAlbumModel::qt_metacall (this=0x2fce650, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0x7fff8c63c470)
    at /build/buildd-digikam_1.0.0~beta1-1-amd64-ZRYIN6/digikam-1.0.0~beta1/obj-x86_64-linux-gnu/digikam/imagealbummodel.moc:108
#12 0x00007f407e029862 in QMetaObject::activate (sender=0x6f8dd70, from_signal_index=<value optimized out>, to_signal_index=7, argv=0x1fffffffffeddc18) at kernel/qobject.cpp:3120
#13 0x00007f407e675082 in KJob::result (this=0x7f4058a8afc8, _t1=0x6f8dd70) at ./kjob.moc:188
#14 0x00007f407e6753ff in KJob::emitResult (this=0x6f8dd70) at ../../kdecore/jobs/kjob.cpp:294
#15 0x00007f4080501d30 in KIO::SimpleJob::slotFinished (this=0x6f8dd70) at ../../kio/kio/job.cpp:489
#16 0x00007f4080502f53 in KIO::TransferJob::slotFinished (this=0x6f8dd70) at ../../kio/kio/job.cpp:966
#17 0x00007f4080503fd5 in KIO::TransferJob::qt_metacall (this=0x6f8dd70, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0x7fff8c63c870) at ./jobclasses.moc:343
#18 0x00007f407e029862 in QMetaObject::activate (sender=0x6d06450, from_signal_index=<value optimized out>, to_signal_index=8, argv=0x1fffffffffeddc18) at kernel/qobject.cpp:3120
#19 0x00007f40805b9bd1 in KIO::SlaveInterface::dispatch (this=0x6d06450, _cmd=104, rawdata=<value optimized out>) at ../../kio/kio/slaveinterface.cpp:175
#20 0x00007f40805b6722 in KIO::SlaveInterface::dispatch (this=0x6d06450) at ../../kio/kio/slaveinterface.cpp:91
#21 0x00007f40805a7923 in KIO::Slave::gotInput (this=0x6d06450) at ../../kio/kio/slave.cpp:322
#22 0x00007f40805a9c28 in KIO::Slave::qt_metacall (this=0x6d06450, _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0x7fff8c63cc90) at ./slave.moc:76
#23 0x00007f407e029862 in QMetaObject::activate (sender=0x634d150, from_signal_index=<value optimized out>, to_signal_index=4, argv=0x1fffffffffeddc18) at kernel/qobject.cpp:3120
#24 0x00007f40804cd951 in KIO::ConnectionPrivate::dequeue (this=0x6b026b0) at ../../kio/kio/connection.cpp:82
#25 0x00007f40804cddaa in KIO::Connection::qt_metacall (this=0x634d150, _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0x6f91440) at ./connection.moc:73
#26 0x00007f407e023eb8 in QObject::event (this=0x634d150, e=0x6f959f0) at kernel/qobject.cpp:1118
#27 0x00007f407ebc64fd in QApplicationPrivate::notify_helper (this=0x2983110, receiver=0x634d150, e=0x6f959f0) at kernel/qapplication.cpp:4057
#28 0x00007f407ebce77a in QApplication::notify (this=0x7fff8c63d720, receiver=0x634d150, e=0x6f959f0) at kernel/qapplication.cpp:4022
#29 0x00007f408001a38b in KApplication::notify (this=0x7fff8c63d720, receiver=0x634d150, event=0x6f959f0) at ../../kdeui/kernel/kapplication.cpp:307
#30 0x00007f407e013e4c in QCoreApplication::notifyInternal (this=0x7fff8c63d720, receiver=0x634d150, event=0x6f959f0) at kernel/qcoreapplication.cpp:610
#31 0x00007f407e014aba in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x2952fd0) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:213
#32 0x00007f407e03d833 in postEventSourceDispatch (s=<value optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:218
#33 0x00007f4078ea3f7a in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#34 0x00007f4078ea75f8 in ?? () from /usr/lib/libglib-2.0.so.0
#35 0x00007f4078ea77bc in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#36 0x00007f407e03d4bf in QEventDispatcherGlib::processEvents (this=0x296c870, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:324
#37 0x00007f407ec5ec7f in QGuiEventDispatcherGlib::processEvents (this=0x7f4058a8afc8, flags=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:202
#38 0x00007f407e0126f2 in QEventLoop::processEvents (this=<value optimized out>, flags={i = -1939614192}) at kernel/qeventloop.cpp:149
#39 0x00007f407e012abd in QEventLoop::exec (this=0x7fff8c63d650, flags={i = -1939614112}) at kernel/qeventloop.cpp:200
#40 0x00007f407e014d84 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:888
#41 0x00000000006e9f72 in main (argc=1, argv=0x7fff8c63de58) at /build/buildd-digikam_1.0.0~beta1-1-amd64-ZRYIN6/digikam-1.0.0~beta1/digikam/main.cpp:184
#0  0x00007f407d45f8e1 in nanosleep () from /lib/libc.so.6
Current language:  auto; currently c
Comment 1 caulier.gilles 2009-06-18 11:17:11 UTC
Marcel,

I think it crash because KDirWatch fire a signal differently now, especially when operation just started on HDD.

With image editor, i can see KDirWatch event when image starting to be written using file save as. KExiv2 is called a lots of time until image is complete on disk.

This is really weird. I think this report need to be fork to Kdelibs to revert last changes in KDirWatch.

Andreas : Exiv2 crash because the file scanned is corrupted : it 's under removing from HDD... Anyway, Exiv2 must don't crash here...

Gilles Caulier
Comment 2 caulier.gilles 2009-06-18 11:21:46 UTC
Marcel,

Sound like this commit from KDirWatch is the problem: 

http://websvn.kde.org/?view=rev&revision=925654

Andreas,

In digiKam, we use KDirWatch to look events from HDD, especially when new files are added or changed externally. In this case, we scan item and register metadata to database.

http://api.kde.org/4.x-api/kdelibs-apidocs/kio/html/classKDirWatch.html

Gilles Caulier
Comment 3 Andreas Huggel 2009-06-18 12:43:58 UTC
This backtrace looks very similar to the first one in bug #196726 reported by  Salvatore recently. I wonder why there are suddenly two similar crashes within days? The Exiv2 code that calls the libc function which fails never gave problems and hasn't changed in years. A simple fread() to read the first 2 bytes of a JPEG file crashes. I don't quite see what to do to avoid this.

Andreas
Comment 4 Marcel Wiesweg 2009-06-18 19:35:47 UTC
Yes, the behavior of KDirWatch changed drastically from KDE4.2.2 to KDE4.2.3 I think.
For me it is no good practice to change such behavior in a stable release, but we have it now, we will have users running KDE4.2.4.

There is a timer between a dirwatch signal and the triggered scan. But a writing operation can always be active on any file, even from outside digikam. I wonder if it is possible to test for this?
Comment 5 Andreas Huggel 2009-06-19 03:32:03 UTC
The Exiv2 IO classes use basic C functions (and mmap, but not in this case), they don't know about KDirWatch et al. They rely on these C functions to return an error if something unforeseen happens.
Comment 6 Dario Andres 2009-06-19 15:27:19 UTC
The title and part of the backtrace matches bug 194330. Thanks
Comment 7 caulier.gilles 2009-06-19 15:51:27 UTC
Thanks Dario. set as duplicates.

Gilles Caulier

*** This bug has been marked as a duplicate of bug 194330 ***
Comment 8 caulier.gilles 2022-01-14 11:58:43 UTC
Fixed with https://bugs.kde.org/show_bug.cgi?id=194330