Application: digikam (1.9.0) KDE Platform Version: 4.6.3 (4.6.3) Qt Version: 4.7.2 Operating System: Linux 2.6.35.13-91.fc14.i686.PAE i686 Distribution (Platform): Fedora RPMs -- Information about the crash: - What I was doing when the application crashed: I have downloaded a number of images that were taken with my N900 GSM. While browsing these images in Digikam, the program crashes. This happened both when using page up/page down as when I select images with the mouse. I have restarted Digikam several times and performing the same actions resulted in the same crash. The crash can be reproduced some of the time. -- Backtrace: Application: digiKam (digikam), signal: Segmentation fault [Current thread is 1 (Thread 0xb771b7b0 (LWP 25953))] Thread 13 (Thread 0xb54b4b70 (LWP 25954)): #0 0x00ebb424 in __kernel_vsyscall () #1 0x005bd39b in pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S:169 #2 0x076f8db7 in wait (this=0x8bb0ba0, mutex=0x8bb0b9c, time=4294967295) at thread/qwaitcondition_unix.cpp:88 #3 QWaitCondition::wait (this=0x8bb0ba0, mutex=0x8bb0b9c, time=4294967295) at thread/qwaitcondition_unix.cpp:160 #4 0x08220619 in Digikam::ScanController::run (this=0x8baaf90) at /usr/src/debug/digikam-1.9.0/digikam/scancontroller.cpp:571 #5 0x076f86c3 in QThreadPrivate::start (arg=0x8baaf90) at thread/qthread_unix.cpp:320 #6 0x005b8e99 in start_thread (arg=0xb54b4b70) at pthread_create.c:301 #7 0x004cbd2e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:133 Thread 12 (Thread 0xb4affb70 (LWP 25965)): #0 0x00ebb424 in __kernel_vsyscall () #1 0x004c0c36 in __poll (fds=0xb4100468, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:87 #2 0x069f4dac in g_poll (fds=0xb4100468, nfds=1, timeout=-1) at gpoll.c:132 #3 0x069e48b7 in g_main_context_poll (context=0xb4100478, block=1, dispatch=1, self=<value optimized out>) at gmain.c:3093 #4 g_main_context_iterate (context=0xb4100478, block=1, dispatch=1, self=<value optimized out>) at gmain.c:2775 #5 0x069e4c35 in g_main_context_iteration (context=0xb4100478, may_block=1) at gmain.c:2843 #6 0x0781dce7 in QEventDispatcherGlib::processEvents (this=0xb4101958, flags=...) at kernel/qeventdispatcher_glib.cpp:424 #7 0x077ef0fa in QEventLoop::processEvents (this=0xb4aff230, flags=...) at kernel/qeventloop.cpp:149 #8 0x077ef3aa in QEventLoop::exec (this=0xb4aff230, flags=...) at kernel/qeventloop.cpp:201 #9 0x076f5b73 in QThread::exec (this=0x8d7a570) at thread/qthread.cpp:492 #10 0x074d2f4e in Digikam::ImageFilterModelWorker::Thread::run (this=0x8d7a570) at /usr/src/debug/digikam-1.9.0/libs/models/imagefiltermodelthreads.h:74 #11 0x076f86c3 in QThreadPrivate::start (arg=0x8d7a570) at thread/qthread_unix.cpp:320 #12 0x005b8e99 in start_thread (arg=0xb4affb70) at pthread_create.c:301 #13 0x004cbd2e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:133 Thread 11 (Thread 0xb3cffb70 (LWP 25966)): #0 0x00ebb424 in __kernel_vsyscall () #1 0x004c0c36 in __poll (fds=0xb3e01b68, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:87 #2 0x069f4dac in g_poll (fds=0xb3e01b68, nfds=1, timeout=-1) at gpoll.c:132 #3 0x069e48b7 in g_main_context_poll (context=0xb3e004e8, block=1, dispatch=1, self=<value optimized out>) at gmain.c:3093 #4 g_main_context_iterate (context=0xb3e004e8, block=1, dispatch=1, self=<value optimized out>) at gmain.c:2775 #5 0x069e4c35 in g_main_context_iteration (context=0xb3e004e8, may_block=1) at gmain.c:2843 #6 0x0781dce7 in QEventDispatcherGlib::processEvents (this=0xb3e00468, flags=...) at kernel/qeventdispatcher_glib.cpp:424 #7 0x077ef0fa in QEventLoop::processEvents (this=0xb3cff230, flags=...) at kernel/qeventloop.cpp:149 #8 0x077ef3aa in QEventLoop::exec (this=0xb3cff230, flags=...) at kernel/qeventloop.cpp:201 #9 0x076f5b73 in QThread::exec (this=0x8d7b2c0) at thread/qthread.cpp:492 #10 0x074d2f4e in Digikam::ImageFilterModelWorker::Thread::run (this=0x8d7b2c0) at /usr/src/debug/digikam-1.9.0/libs/models/imagefiltermodelthreads.h:74 #11 0x076f86c3 in QThreadPrivate::start (arg=0x8d7b2c0) at thread/qthread_unix.cpp:320 #12 0x005b8e99 in start_thread (arg=0xb3cffb70) at pthread_create.c:301 #13 0x004cbd2e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:133 Thread 10 (Thread 0xb3471b70 (LWP 25967)): #0 0x00ebb424 in __kernel_vsyscall () #1 0x005bd39b in pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S:169 #2 0x076f8db7 in wait (this=0x8d90c80, mutex=0x8d90c7c, time=4294967295) at thread/qwaitcondition_unix.cpp:88 #3 QWaitCondition::wait (this=0x8d90c80, mutex=0x8d90c7c, time=4294967295) at thread/qwaitcondition_unix.cpp:160 #4 0x07e02e92 in Digikam::ParkingThread::run (this=0x8d90c70) at /usr/src/debug/digikam-1.9.0/libs/threads/threadmanager.cpp:119 #5 0x076f86c3 in QThreadPrivate::start (arg=0x8d90c70) at thread/qthread_unix.cpp:320 #6 0x005b8e99 in start_thread (arg=0xb3471b70) at pthread_create.c:301 #7 0x004cbd2e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:133 Thread 9 (Thread 0xb2affb70 (LWP 25968)): #0 0x00ebb424 in __kernel_vsyscall () #1 0x004c0c36 in __poll (fds=0xb1901b68, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:87 #2 0x069f4dac in g_poll (fds=0xb1901b68, nfds=1, timeout=-1) at gpoll.c:132 #3 0x069e48b7 in g_main_context_poll (context=0xb19004e8, block=1, dispatch=1, self=<value optimized out>) at gmain.c:3093 #4 g_main_context_iterate (context=0xb19004e8, block=1, dispatch=1, self=<value optimized out>) at gmain.c:2775 #5 0x069e4c35 in g_main_context_iteration (context=0xb19004e8, may_block=1) at gmain.c:2843 #6 0x0781dce7 in QEventDispatcherGlib::processEvents (this=0xb1900468, flags=...) at kernel/qeventdispatcher_glib.cpp:424 #7 0x077ef0fa in QEventLoop::processEvents (this=0xb2aff250, flags=...) at kernel/qeventloop.cpp:149 #8 0x077ef3aa in QEventLoop::exec (this=0xb2aff250, flags=...) at kernel/qeventloop.cpp:201 #9 0x076f5b73 in QThread::exec (this=0x8da7c38) at thread/qthread.cpp:492 #10 0x076f86c3 in QThreadPrivate::start (arg=0x8da7c38) at thread/qthread_unix.cpp:320 #11 0x005b8e99 in start_thread (arg=0xb2affb70) at pthread_create.c:301 #12 0x004cbd2e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:133 Thread 8 (Thread 0xb22feb70 (LWP 25969)): #0 0x00609e56 in clock_gettime (clock_id=1, tp=0xb22fdfa0) at ../sysdeps/unix/clock_gettime.c:100 #1 0x0774fcf9 in do_gettime () at tools/qelapsedtimer_unix.cpp:123 #2 qt_gettime () at tools/qelapsedtimer_unix.cpp:140 #3 0x0781ec93 in updateCurrentTime (this=0xb1701974, tm=...) at kernel/qeventdispatcher_unix.cpp:339 #4 QTimerInfoList::timerWait (this=0xb1701974, tm=...) at kernel/qeventdispatcher_unix.cpp:442 #5 0x0781d482 in timerSourcePrepareHelper (src=<value optimized out>, timeout=0xb22fe08c) at kernel/qeventdispatcher_glib.cpp:136 #6 0x0781d51d in timerSourcePrepare (source=0xb1701940, timeout=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:169 #7 0x069e36b6 in g_main_context_prepare (context=<value optimized out>, priority=0xb22fe0fc) at gmain.c:2469 #8 0x069e455b in g_main_context_iterate (context=0xb17004e8, block=1, dispatch=1, self=<value optimized out>) at gmain.c:2760 #9 0x069e4c35 in g_main_context_iteration (context=0xb17004e8, may_block=1) at gmain.c:2843 #10 0x0781dce7 in QEventDispatcherGlib::processEvents (this=0xb1700468, flags=...) at kernel/qeventdispatcher_glib.cpp:424 #11 0x077ef0fa in QEventLoop::processEvents (this=0xb22fe250, flags=...) at kernel/qeventloop.cpp:149 #12 0x077ef3aa in QEventLoop::exec (this=0xb22fe250, flags=...) at kernel/qeventloop.cpp:201 #13 0x076f5b73 in QThread::exec (this=0x8da9c78) at thread/qthread.cpp:492 #14 0x076f86c3 in QThreadPrivate::start (arg=0x8da9c78) at thread/qthread_unix.cpp:320 #15 0x005b8e99 in start_thread (arg=0xb22feb70) at pthread_create.c:301 #16 0x004cbd2e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:133 Thread 7 (Thread 0xa6e8eb70 (LWP 25973)): #0 0x005baf5a in __pthread_mutex_lock (mutex=0xb1801384) at pthread_mutex_lock.c:51 #1 0x069e3520 in g_main_context_prepare (context=<value optimized out>, priority=0xa6e8e09c) at gmain.c:2398 #2 0x069e455b in g_main_context_iterate (context=0xb1801380, block=1, dispatch=1, self=<value optimized out>) at gmain.c:2760 #3 0x069e4c35 in g_main_context_iteration (context=0xb1801380, may_block=1) at gmain.c:2843 #4 0x0781dce7 in QEventDispatcherGlib::processEvents (this=0xb1801280, flags=...) at kernel/qeventdispatcher_glib.cpp:424 #5 0x077ef0fa in QEventLoop::processEvents (this=0xa6e8e1f0, flags=...) at kernel/qeventloop.cpp:149 #6 0x077ef3aa in QEventLoop::exec (this=0xa6e8e1f0, flags=...) at kernel/qeventloop.cpp:201 #7 0x076f5b73 in QThread::exec (this=0x9311870) at thread/qthread.cpp:492 #8 0x077d057c in QInotifyFileSystemWatcherEngine::run (this=0x9311870) at io/qfilesystemwatcher_inotify.cpp:248 #9 0x076f86c3 in QThreadPrivate::start (arg=0x9311870) at thread/qthread_unix.cpp:320 #10 0x005b8e99 in start_thread (arg=0xa6e8eb70) at pthread_create.c:301 #11 0x004cbd2e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:133 Thread 6 (Thread 0xa8e8bb70 (LWP 25980)): #0 0x00ebb424 in __kernel_vsyscall () #1 0x004c0c36 in __poll (fds=0xb3efa580, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:87 #2 0x069f4dac in g_poll (fds=0xb3efa580, nfds=1, timeout=-1) at gpoll.c:132 #3 0x069e48b7 in g_main_context_poll (context=0xb3e02e30, block=1, dispatch=1, self=<value optimized out>) at gmain.c:3093 #4 g_main_context_iterate (context=0xb3e02e30, block=1, dispatch=1, self=<value optimized out>) at gmain.c:2775 #5 0x069e4c35 in g_main_context_iteration (context=0xb3e02e30, may_block=1) at gmain.c:2843 #6 0x0781dce7 in QEventDispatcherGlib::processEvents (this=0xb3e01c08, flags=...) at kernel/qeventdispatcher_glib.cpp:424 #7 0x077ef0fa in QEventLoop::processEvents (this=0xa8e8b1f0, flags=...) at kernel/qeventloop.cpp:149 #8 0x077ef3aa in QEventLoop::exec (this=0xa8e8b1f0, flags=...) at kernel/qeventloop.cpp:201 #9 0x076f5b73 in QThread::exec (this=0xa8cd1a8) at thread/qthread.cpp:492 #10 0x077d057c in QInotifyFileSystemWatcherEngine::run (this=0xa8cd1a8) at io/qfilesystemwatcher_inotify.cpp:248 #11 0x076f86c3 in QThreadPrivate::start (arg=0xa8cd1a8) at thread/qthread_unix.cpp:320 #12 0x005b8e99 in start_thread (arg=0xa8e8bb70) at pthread_create.c:301 #13 0x004cbd2e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:133 Thread 5 (Thread 0x9befab70 (LWP 26016)): [KCrash Handler] #7 Digikam::ImageHistogram::calculate (this=0x92bf2e0) at /usr/src/debug/digikam-1.9.0/libs/dimg/filters/levels/imagehistogram.cpp:236 #8 0x07cf170e in Digikam::ImageHistogram::run (this=0x92bf2e0) at /usr/src/debug/digikam-1.9.0/libs/dimg/filters/levels/imagehistogram.cpp:173 #9 0x07e04576 in Digikam::DynamicThread::DynamicThreadPriv::run (this=0xbfcfe90) at /usr/src/debug/digikam-1.9.0/libs/threads/dynamicthread.cpp:311 #10 0x076eccae in QThreadPoolThread::run (this=0xb1809500) at concurrent/qthreadpool.cpp:106 #11 0x076f86c3 in QThreadPrivate::start (arg=0xb1809500) at thread/qthread_unix.cpp:320 #12 0x005b8e99 in start_thread (arg=0x9befab70) at pthread_create.c:301 #13 0x004cbd2e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:133 Thread 4 (Thread 0x98279b70 (LWP 26023)): #0 0x00ebb424 in __kernel_vsyscall () #1 0x004c0c36 in __poll (fds=0xba20698, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:87 #2 0x069f4dac in g_poll (fds=0xba20698, nfds=1, timeout=-1) at gpoll.c:132 #3 0x069e48b7 in g_main_context_poll (context=0xba205d8, block=1, dispatch=1, self=<value optimized out>) at gmain.c:3093 #4 g_main_context_iterate (context=0xba205d8, block=1, dispatch=1, self=<value optimized out>) at gmain.c:2775 #5 0x069e4c35 in g_main_context_iteration (context=0xba205d8, may_block=1) at gmain.c:2843 #6 0x0781dce7 in QEventDispatcherGlib::processEvents (this=0xba14ff8, flags=...) at kernel/qeventdispatcher_glib.cpp:424 #7 0x077ef0fa in QEventLoop::processEvents (this=0x982791f0, flags=...) at kernel/qeventloop.cpp:149 #8 0x077ef3aa in QEventLoop::exec (this=0x982791f0, flags=...) at kernel/qeventloop.cpp:201 #9 0x076f5b73 in QThread::exec (this=0xba13a78) at thread/qthread.cpp:492 #10 0x077d057c in QInotifyFileSystemWatcherEngine::run (this=0xba13a78) at io/qfilesystemwatcher_inotify.cpp:248 #11 0x076f86c3 in QThreadPrivate::start (arg=0xba13a78) at thread/qthread_unix.cpp:320 #12 0x005b8e99 in start_thread (arg=0x98279b70) at pthread_create.c:301 #13 0x004cbd2e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:133 Thread 3 (Thread 0x97a78b70 (LWP 26030)): #0 0x00609e56 in clock_gettime (clock_id=1, tp=0x97a77f40) at ../sysdeps/unix/clock_gettime.c:100 #1 0x0774fcf9 in do_gettime () at tools/qelapsedtimer_unix.cpp:123 #2 qt_gettime () at tools/qelapsedtimer_unix.cpp:140 #3 0x0781ec93 in updateCurrentTime (this=0xb183e3cc, tm=...) at kernel/qeventdispatcher_unix.cpp:339 #4 QTimerInfoList::timerWait (this=0xb183e3cc, tm=...) at kernel/qeventdispatcher_unix.cpp:442 #5 0x0781d482 in timerSourcePrepareHelper (src=<value optimized out>, timeout=0x97a7802c) at kernel/qeventdispatcher_glib.cpp:136 #6 0x0781d51d in timerSourcePrepare (source=0xb183e398, timeout=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:169 #7 0x069e36b6 in g_main_context_prepare (context=<value optimized out>, priority=0x97a7809c) at gmain.c:2469 #8 0x069e455b in g_main_context_iterate (context=0xb183fe78, block=1, dispatch=1, self=<value optimized out>) at gmain.c:2760 #9 0x069e4c35 in g_main_context_iteration (context=0xb183fe78, may_block=1) at gmain.c:2843 #10 0x0781dce7 in QEventDispatcherGlib::processEvents (this=0xb183e4e8, flags=...) at kernel/qeventdispatcher_glib.cpp:424 #11 0x077ef0fa in QEventLoop::processEvents (this=0x97a781f0, flags=...) at kernel/qeventloop.cpp:149 #12 0x077ef3aa in QEventLoop::exec (this=0x97a781f0, flags=...) at kernel/qeventloop.cpp:201 #13 0x076f5b73 in QThread::exec (this=0xc01e6e0) at thread/qthread.cpp:492 #14 0x077d057c in QInotifyFileSystemWatcherEngine::run (this=0xc01e6e0) at io/qfilesystemwatcher_inotify.cpp:248 #15 0x076f86c3 in QThreadPrivate::start (arg=0xc01e6e0) at thread/qthread_unix.cpp:320 #16 0x005b8e99 in start_thread (arg=0x97a78b70) at pthread_create.c:301 #17 0x004cbd2e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:133 Thread 2 (Thread 0x95273b70 (LWP 26037)): #0 __pthread_mutex_lock (mutex=0xa4fe2964) at pthread_mutex_lock.c:54 #1 0x069e3e3c in g_main_context_check (context=0xa4fe2960, max_priority=2147483647, fds=0xa4fe3a40, n_fds=1) at gmain.c:2660 #2 0x069e4742 in g_main_context_iterate (context=0xa4fe2960, block=1, dispatch=1, self=<value optimized out>) at gmain.c:2777 #3 0x069e4c35 in g_main_context_iteration (context=0xa4fe2960, may_block=1) at gmain.c:2843 #4 0x0781dce7 in QEventDispatcherGlib::processEvents (this=0xa4fe11b0, flags=...) at kernel/qeventdispatcher_glib.cpp:424 #5 0x077ef0fa in QEventLoop::processEvents (this=0x952731f0, flags=...) at kernel/qeventloop.cpp:149 #6 0x077ef3aa in QEventLoop::exec (this=0x952731f0, flags=...) at kernel/qeventloop.cpp:201 #7 0x076f5b73 in QThread::exec (this=0xc246620) at thread/qthread.cpp:492 #8 0x077d057c in QInotifyFileSystemWatcherEngine::run (this=0xc246620) at io/qfilesystemwatcher_inotify.cpp:248 #9 0x076f86c3 in QThreadPrivate::start (arg=0xc246620) at thread/qthread_unix.cpp:320 #10 0x005b8e99 in start_thread (arg=0x95273b70) at pthread_create.c:301 #11 0x004cbd2e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:133 Thread 1 (Thread 0xb771b7b0 (LWP 25953)): #0 0x0074df5c in __i686.get_pc_thunk.bx () from /usr/lib/libxcb.so.1 #1 0x0074e34b in _xcb_conn_wait (c=0x8b55b00, cond=0x8b56b94, vector=0xbfa87c64, count=0xbfa87c68) at xcb_conn.c:270 #2 0x0074e9d4 in _xcb_out_send (c=0x8b55b00, vector=0xbfa87d08, count=3) at xcb_out.c:338 #3 0x0074ea78 in xcb_writev (c=0x8b55b00, vector=0xbfa87d08, count=3, requests=182) at xcb_out.c:286 #4 0x007a9d43 in _XSend (dpy=0x8b69ae8, data=0xc694a98 "", size=5120) at xcb_io.c:427 #5 0x00a64526 in XRenderCompositeTrapezoids (dpy=0x8b69ae8, op=3, src=150996630, dst=151065919, maskFormat=0x8b52c18, xSrc=91, ySrc=0, traps=<value optimized out>, ntrap=0) at Trap.c:67 #6 0x41bc2870 in qt_XRenderCompositeTrapezoids (this=0xb783918, polygonPoints=0xbfa88584, pointCount=63, gcMode=QX11PaintEnginePrivate::PenGC, mode=QPaintEngine::WindingMode) at painting/qpaintengine_x11.cpp:1546 #7 QX11PaintEnginePrivate::fillPolygon_dev (this=0xb783918, polygonPoints=0xbfa88584, pointCount=63, gcMode=QX11PaintEnginePrivate::PenGC, mode=QPaintEngine::WindingMode) at painting/qpaintengine_x11.cpp:1627 #8 0x41bc37a3 in QX11PaintEnginePrivate::fillPath (this=0xb783918, path=..., gc_mode=QX11PaintEnginePrivate::PenGC, transform=false) at painting/qpaintengine_x11.cpp:1765 #9 0x41bc3dee in QX11PaintEngine::drawPath (this=0x8d80d90, path=...) at painting/qpaintengine_x11.cpp:1815 #10 0x41bc32c0 in QX11PaintEngine::drawPolygon (this=0x8d80d90, polygonPoints=0xbfa89794, pointCount=10, mode=QPaintEngine::WindingMode) at painting/qpaintengine_x11.cpp:1727 #11 0x41ae95b6 in QPaintEngine::drawPolygon (this=0x8d80d90, points=0x8d7c7e0, pointCount=10, mode=QPaintEngine::WindingMode) at painting/qpaintengine.cpp:365 #12 0x41bc41a3 in QX11PaintEngine::drawPolygon (this=0x8d80d90, points=0x8d7c7e0, pointCount=10, mode=QPaintEngine::WindingMode) at ../../src/gui/painting/qpaintengine_x11_p.h:110 #13 0x41affb07 in QPainter::drawPolygon (this=0xbfa8a92c, points=0x8d7c7e0, pointCount=10, fillRule=Qt::WindingFill) at painting/qpainter.cpp:4999 #14 0x07e1f4cf in drawPolygon (this=0x8d7c5f8, composeOverBackground=true) at /usr/include/QtGui/qpainter.h:627 #15 Digikam::ItemViewImageDelegate::prepareRatingPixmaps (this=0x8d7c5f8, composeOverBackground=true) at /usr/src/debug/digikam-1.9.0/libs/widgets/common/itemviewimagedelegate.cpp:533 #16 0x081f4050 in Digikam::ImageDelegate::updateSizeRectsAndPixmaps (this=0x8d7c5f8) at /usr/src/debug/digikam-1.9.0/digikam/imagedelegate.cpp:336 #17 0x07e1d1c5 in Digikam::ItemViewImageDelegate::invalidatePaintingCache (this=0x8d7c5f8) at /usr/src/debug/digikam-1.9.0/libs/widgets/common/itemviewimagedelegate.cpp:265 #18 0x07e1d17b in Digikam::ItemViewImageDelegate::setDefaultViewOptions (this=0x8d7c5f8, option=...) at /usr/src/debug/digikam-1.9.0/libs/widgets/common/itemviewimagedelegate.cpp:248 #19 0x07e0cbd0 in Digikam::DCategorizedView::updateDelegateSizes (this=0x8cd0ee8) at /usr/src/debug/digikam-1.9.0/libs/widgets/common/dcategorizedview.cpp:311 #20 0x07e0cc52 in Digikam::DCategorizedView::resizeEvent (this=0x8cd0ee8, e=0xbfa8b360) at /usr/src/debug/digikam-1.9.0/libs/widgets/common/dcategorizedview.cpp:771 #21 0x419f8daf in QWidget::event (this=0x8cd0ee8, event=0xbfa8b360) at kernel/qwidget.cpp:8413 #22 0x41df7724 in QFrame::event (this=0x8cd0ee8, e=0xbfa8b360) at widgets/qframe.cpp:557 #23 0x41e876f3 in QAbstractScrollArea::viewportEvent (this=0x8cd0ee8, e=0xbfa8b360) at widgets/qabstractscrollarea.cpp:1043 #24 0x41f2922f in QAbstractItemView::viewportEvent (this=0x8cd0ee8, event=0xbfa8b360) at itemviews/qabstractitemview.cpp:1628 #25 0x07e0cc9e in Digikam::DCategorizedView::viewportEvent (this=0x8cd0ee8, event=0xbfa8b360) at /usr/src/debug/digikam-1.9.0/libs/widgets/common/dcategorizedview.cpp:819 #26 0x41e8a065 in viewportEvent (this=0x8d78c70, o=0x8d79a40, e=0xbfa8b360) at widgets/qabstractscrollarea_p.h:100 #27 QAbstractScrollAreaFilter::eventFilter (this=0x8d78c70, o=0x8d79a40, e=0xbfa8b360) at widgets/qabstractscrollarea_p.h:116 #28 0x077f011a in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=0x8b4a078, receiver=0x8d79a40, event=0xbfa8b360) at kernel/qcoreapplication.cpp:846 #29 0x4199f521 in QApplicationPrivate::notify_helper (this=0x8b4a078, receiver=0x8d79a40, e=0xbfa8b360) at kernel/qapplication.cpp:4458 #30 0x419a42ff in QApplication::notify (this=0xbfa8d728, receiver=0x8d79a40, e=0xbfa8b360) at kernel/qapplication.cpp:4427 #31 0x06623feb in KApplication::notify (this=0xbfa8d728, receiver=0x8d79a40, event=0xbfa8b360) at /usr/src/debug/kdelibs-4.6.3/kdeui/kernel/kapplication.cpp:311 #32 0x077eff63 in QCoreApplication::notifyInternal (this=0xbfa8d728, receiver=0x8d79a40, event=0xbfa8b360) at kernel/qcoreapplication.cpp:731 #33 0x41a487e9 in sendEvent (this=0x8d78440, x=2, y=2, w=1367, h=806, isMove=true) at ../../src/corelib/kernel/qcoreapplication.h:215 #34 QWidgetPrivate::setGeometry_sys (this=0x8d78440, x=2, y=2, w=1367, h=806, isMove=true) at kernel/qwidget_x11.cpp:2624 #35 0x419f4a88 in QWidget::setGeometry (this=0x8d79a40, r=...) at kernel/qwidget.cpp:6861 #36 0x41e884be in QAbstractScrollAreaPrivate::layoutChildren (this=0x8d78148) at widgets/qabstractscrollarea.cpp:480 #37 0x41e896a8 in QAbstractScrollArea::event (this=0x8cd0ee8, e=0xbfa8bba0) at widgets/qabstractscrollarea.cpp:924 #38 0x41f2b2ec in QAbstractItemView::event (this=0x8cd0ee8, event=0xbfa8bba0) at itemviews/qabstractitemview.cpp:1564 #39 0x41f48495 in QListView::event (this=0x8cd0ee8, e=0xbfa8bba0) at itemviews/qlistview.cpp:1632 #40 0x4199f54c in QApplicationPrivate::notify_helper (this=0x8b4a078, receiver=0x8cd0ee8, e=0xbfa8bba0) at kernel/qapplication.cpp:4462 #41 0x419a42ff in QApplication::notify (this=0xbfa8d728, receiver=0x8cd0ee8, e=0xbfa8bba0) at kernel/qapplication.cpp:4427 #42 0x06623feb in KApplication::notify (this=0xbfa8d728, receiver=0x8cd0ee8, event=0xbfa8bba0) at /usr/src/debug/kdelibs-4.6.3/kdeui/kernel/kapplication.cpp:311 #43 0x077eff63 in QCoreApplication::notifyInternal (this=0xbfa8d728, receiver=0x8cd0ee8, event=0xbfa8bba0) at kernel/qcoreapplication.cpp:731 #44 0x41a487e9 in sendEvent (this=0x8d78148, x=0, y=0, w=1389, h=810, isMove=true) at ../../src/corelib/kernel/qcoreapplication.h:215 #45 QWidgetPrivate::setGeometry_sys (this=0x8d78148, x=0, y=0, w=1389, h=810, isMove=true) at kernel/qwidget_x11.cpp:2624 #46 0x419f4a88 in QWidget::setGeometry (this=0x8cd0ee8, r=...) at kernel/qwidget.cpp:6861 #47 0x419dac52 in QStackedLayout::setGeometry (this=0x8d796c8, rect=...) at kernel/qstackedlayout.cpp:467 #48 0x419cdd00 in QLayoutPrivate::doResize (this=0x8d79878, r=...) at kernel/qlayout.cpp:681 #49 0x419cf583 in QLayout::widgetEvent (this=0x8d796c8, e=0xbfa8c210) at kernel/qlayout.cpp:705 #50 0x4199f50e in QApplicationPrivate::notify_helper (this=0x8b4a078, receiver=0x8cc32b0, e=0xbfa8c210) at kernel/qapplication.cpp:4453 #51 0x419a42ff in QApplication::notify (this=0xbfa8d728, receiver=0x8cc32b0, e=0xbfa8c210) at kernel/qapplication.cpp:4427 #52 0x06623feb in KApplication::notify (this=0xbfa8d728, receiver=0x8cc32b0, event=0xbfa8c210) at /usr/src/debug/kdelibs-4.6.3/kdeui/kernel/kapplication.cpp:311 #53 0x077eff63 in QCoreApplication::notifyInternal (this=0xbfa8d728, receiver=0x8cc32b0, event=0xbfa8c210) at kernel/qcoreapplication.cpp:731 #54 0x41a487e9 in sendEvent (this=0x8d796f8, x=0, y=241, w=1389, h=810, isMove=true) at ../../src/corelib/kernel/qcoreapplication.h:215 #55 QWidgetPrivate::setGeometry_sys (this=0x8d796f8, x=0, y=241, w=1389, h=810, isMove=true) at kernel/qwidget_x11.cpp:2624 #56 0x419f4a88 in QWidget::setGeometry (this=0x8cc32b0, r=...) at kernel/qwidget.cpp:6861 #57 0x419fb62c in QWidget::qt_metacall (this=0x8cc32b0, _c=QMetaObject::WriteProperty, _id=3, _a=0xbfa8c50c) at .moc/release-shared/moc_qwidget.cpp:286 #58 0x420a521b in QFrame::qt_metacall (this=0x8cc32b0, _c=QMetaObject::WriteProperty, _id=4, _a=0xbfa8c50c) at .moc/release-shared/moc_qframe.cpp:92 #59 0x420a83db in QStackedWidget::qt_metacall (this=0x8cc32b0, _c=QMetaObject::WriteProperty, _id=4, _a=0xbfa8c50c) at .moc/release-shared/moc_qstackedwidget.cpp:83 #60 0x081b01a0 in Digikam::AlbumWidgetStack::qt_metacall (this=0x8cc32b0, _c=QMetaObject::WriteProperty, _id=4, _a=0xbfa8c50c) at /usr/src/debug/digikam-1.9.0/i686-redhat-linux-gnu/digikam/albumwidgetstack.moc:100 #61 0x077f679b in QMetaObject::metacall (object=0x8cc32b0, cl=QMetaObject::WriteProperty, idx=4, argv=0xbfa8c50c) at kernel/qmetaobject.cpp:237 #62 0x076e1022 in QPropertyAnimationPrivate::updateProperty (this=0xc5faee8, newValue=...) at animation/qpropertyanimation.cpp:139 #63 0x076de3fe in QVariantAnimationPrivate::setCurrentValueForProgress (this=0xc5faee8, progress=1) at animation/qvariantanimation.cpp:293 #64 0x076de651 in QVariantAnimationPrivate::recalculateCurrentInterval (this=0xc5faee8, force=true) at animation/qvariantanimation.cpp:278 #65 0x076e1a05 in QPropertyAnimation::updateState (this=0xb5c34d8, newState=QAbstractAnimation::Running, oldState=QAbstractAnimation::Stopped) at animation/qpropertyanimation.cpp:285 #66 0x076dc55c in QAbstractAnimationPrivate::setState (this=0xc5faee8, newState=QAbstractAnimation::Running) at animation/qabstractanimation.cpp:411 #67 0x41e9cb21 in QWidgetAnimator::animate (this=0x8d79510, widget=0x8cc32b0, _final_geometry=..., animate=false) at widgets/qwidgetanimator.cpp:102 #68 0x41de9ba2 in QDockAreaLayout::apply (this=0x8d791dc, animate=false) at widgets/qdockarealayout.cpp:3082 #69 0x41e15873 in QMainWindowLayoutState::apply (this=0x8d79130, animated=false) at widgets/qmainwindowlayout.cpp:235 #70 0x41e19fb5 in QMainWindowLayout::applyState (this=0x8d79120, newState=..., animate=false) at widgets/qmainwindowlayout.cpp:1928 #71 0x41e1a6ac in QMainWindowLayout::setGeometry (this=0x8d79120, _r=...) at widgets/qmainwindowlayout.cpp:1473 #72 0x419cdd00 in QLayoutPrivate::doResize (this=0x8cc3318, r=...) at kernel/qlayout.cpp:681 #73 0x419cf1d9 in QLayout::activate (this=0x8d79120) at kernel/qlayout.cpp:1259 #74 0x419fd448 in QWidget::setVisible (this=0x8db9540, visible=true) at kernel/qwidget.cpp:7633 #75 0x07e46b9c in Digikam::ThumbBarDock::restoreVisibility (this=0x8db9540) at /usr/src/debug/digikam-1.9.0/libs/widgets/common/thumbbardock.cpp:184 #76 0x081af1be in Digikam::AlbumWidgetStack::setPreviewMode (this=0x8cc32b0, mode=1) at /usr/src/debug/digikam-1.9.0/digikam/albumwidgetstack.cpp:317 #77 0x081fead8 in Digikam::ImagePreviewView::slotGotImagePreview (this=0x8d91720, description=..., preview=...) at /usr/src/debug/digikam-1.9.0/digikam/imagepreviewview.cpp:321 #78 0x08200986 in Digikam::ImagePreviewView::qt_metacall (this=0x8d91720, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0xb2b02b60) at /usr/src/debug/digikam-1.9.0/i686-redhat-linux-gnu/digikam/imagepreviewview.moc:126 #79 0x077f679b in QMetaObject::metacall (object=0x8d91720, cl=QMetaObject::InvokeMetaMethod, idx=82, argv=0xb2b02b60) at kernel/qmetaobject.cpp:237 #80 0x07801137 in QMetaCallEvent::placeMetaCall (this=0xb2b40ef8, object=0x8d91720) at kernel/qobject.cpp:535 #81 0x078057cf in QObject::event (this=0x8d91720, e=0xb2b40ef8) at kernel/qobject.cpp:1217 #82 0x419f87f3 in QWidget::event (this=0x8d91720, event=0xb2b40ef8) at kernel/qwidget.cpp:8718 #83 0x41df7724 in QFrame::event (this=0x8d91720, e=0xb2b40ef8) at widgets/qframe.cpp:557 #84 0x4199f54c in QApplicationPrivate::notify_helper (this=0x8b4a078, receiver=0x8d91720, e=0xb2b40ef8) at kernel/qapplication.cpp:4462 #85 0x419a42ff in QApplication::notify (this=0xbfa8d728, receiver=0x8d91720, e=0xb2b40ef8) at kernel/qapplication.cpp:4427 #86 0x06623feb in KApplication::notify (this=0xbfa8d728, receiver=0x8d91720, event=0xb2b40ef8) at /usr/src/debug/kdelibs-4.6.3/kdeui/kernel/kapplication.cpp:311 #87 0x077eff63 in QCoreApplication::notifyInternal (this=0xbfa8d728, receiver=0x8d91720, event=0xb2b40ef8) at kernel/qcoreapplication.cpp:731 #88 0x077f3cb5 in sendEvent (receiver=0x0, event_type=0, data=0x8afdca8) at kernel/qcoreapplication.h:215 #89 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x8afdca8) at kernel/qcoreapplication.cpp:1372 #90 0x077f3e8e in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at kernel/qcoreapplication.cpp:1265 #91 0x0781db35 in sendPostedEvents (s=0x8b50300) at kernel/qcoreapplication.h:220 #92 postEventSourceDispatch (s=0x8b50300) at kernel/qeventdispatcher_glib.cpp:277 #93 0x069e4192 in g_main_dispatch (context=0x8b4f4a8) at gmain.c:2149 #94 g_main_context_dispatch (context=0x8b4f4a8) at gmain.c:2702 #95 0x069e4978 in g_main_context_iterate (context=0x8b4f4a8, block=1, dispatch=1, self=<value optimized out>) at gmain.c:2780 #96 0x069e4c35 in g_main_context_iteration (context=0x8b4f4a8, may_block=1) at gmain.c:2843 #97 0x0781dcad in QEventDispatcherGlib::processEvents (this=0x8afd800, flags=...) at kernel/qeventdispatcher_glib.cpp:422 #98 0x41a531c6 in QGuiEventDispatcherGlib::processEvents (this=0x8afd800, flags=...) at kernel/qguieventdispatcher_glib.cpp:207 #99 0x077ef0fa in QEventLoop::processEvents (this=0xbfa8d5e4, flags=...) at kernel/qeventloop.cpp:149 #100 0x077ef3aa in QEventLoop::exec (this=0xbfa8d5e4, flags=...) at kernel/qeventloop.cpp:201 #101 0x077f3f57 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1008 #102 0x4199d358 in QApplication::exec () at kernel/qapplication.cpp:3736 #103 0x08264a25 in main (argc=) at /usr/src/debug/digikam-1.9.0/digikam/main.cpp:216 Possible duplicates by query: bug 273130, bug 261896. Reported using DrKonqi
It crash in histogram computation. do you show it from right sidebar ? It still reproducible with a similar backtrace ? Gilles Caulier
*** Bug 275299 has been marked as a duplicate of this bug. ***
While I have caused digikam to crash several times in a couple of days, I can't determine which action of mine actually triggers this. When I actively try to reproduce I can go jumping through images with or without the histogram visible seemingly forever sometimes, and at other times it crashes 3 times in a row. If there is anything else I can add, just let me know.
Would be very interesting if you can reproduce with a 2.0 version. I remember some other crash reports at this location.
*** Bug 275559 has been marked as a duplicate of this bug. ***
We need feedback using a recent version. 2.0.0 RC is out, please test... Thanks in advance Gilles Caulier
Bug 278748 is from 2.0.0.
*** Bug 278748 has been marked as a duplicate of this bug. ***
*** Bug 280239 has been marked as a duplicate of this bug. ***
Anyone who is compiling from current git who can reproduce the crash?
*** Bug 284528 has been marked as a duplicate of this bug. ***
Marcel, Look like with #284528, the problem still reproducible with 2.2.0... Gilles Caulier
I believe there is a problem, but I cannot reproduce. The histogram is computed on data passed via pointer without reference counting, so in principle it is susceptible to data deleted out-of thread and accessed by pointer. But it does not usually happen for most of us, so we do not find out where the deletion happens. Can anyone reproduce the problem running digikam under valgrind? Valgrind usually outputs the code line where a memory area, if accessed invalidly, was deleted.
digiKam 2.2.0 is out since few weeks. Crash still valid with this version ? Gilles Caulier
*** This bug has been marked as a duplicate of bug 285849 ***
*** Bug 285849 has been marked as a duplicate of this bug. ***
Created attachment 65491 [details] New crash information added by DrKonqi digikam (2.1.1) on KDE Platform 4.7.2 (4.7.2) using Qt 4.7.4 - What I was doing when the application crashed: Again, resized the crop area. It's probably exactly the same cause as the last crash I reported but I hope this crash dump sheds more light at the cause. -- Backtrace (Reduced): #6 Digikam::ImageHistogram::calculateInThread (this=0x0) at /build/buildd/digikam-2.1.1/core/libs/dimg/filters/levels/imagehistogram.cpp:143 #7 0x00007fc920c25566 in Digikam::HistogramWidget::updateSelectionData (this=<optimized out>, s_data=<optimized out>, s_w=<optimized out>, s_h=<optimized out>, i_sixteenBits=<optimized out>, showProgress=<optimized out>) at /build/buildd/digikam-2.1.1/core/libs/dimg/filters/levels/histogramwidget.cpp:260 #8 0x00007fc920dd3cd9 in Digikam::ImagePropertiesColorsTab::setSelection (this=0x304f260, selectionArea=<optimized out>) at /build/buildd/digikam-2.1.1/core/libs/imageproperties/imagepropertiescolorstab.cpp:543 #9 0x00007fc920dc46d7 in Digikam::ImagePropertiesSideBar::qt_metacall (this=0x2fe4140, _c=QMetaObject::InvokeMetaMethod, _id=<optimized out>, _a=0x7fff37296c60) at /build/buildd/digikam-2.1.1/obj-x86_64-linux-gnu/core/digikam/imagepropertiessidebar.moc:77 #10 0x000000000049c360 in Digikam::ImagePropertiesSideBarDB::qt_metacall (this=0x2fe4140, _c=QMetaObject::InvokeMetaMethod, _id=<optimized out>, _a=0x7fff37296c60) at /build/buildd/digikam-2.1.1/obj-x86_64-linux-gnu/core/digikam/imagepropertiessidebardb.moc:99
*** Bug 286840 has been marked as a duplicate of this bug. ***
Git commit fe3583f0a282f025cdda127405e6cfffb45fc28b by Gilles Caulier. Committed on 21/11/2011 at 10:44. Pushed by cgilles into branch 'master'. add more histogram data null pointer checks to pevent chrash in suspected race conditions. CCBUGS: 274555 M +20 -4 libs/dimg/filters/levels/histogramwidget.cpp http://commits.kde.org/digikam/fe3583f0a282f025cdda127405e6cfffb45fc28b
Hi all, With #19, i consolidate ImageHistogram data pointer handling to prevent crash. As i connot reproduce the crash on my computers, someone can try to see if problem is reproducible with current implementation from git/master (next 2.4.0 release) ? Thanks in advance Gilles Caulier
As described here: https://bugs.kde.org/show_bug.cgi?id=285849#c6 I instrumented the call which causes the NULL pointer dereference. And sure enough, I finally triggered the crash. Here is my output: Triggered histogram crash! Dumping class state: sixteenBits: 0 guideVisible: 0 statisticsVisible: 1 inSelected: 0 selectMode: 1 showProgress: 1 renderingType: 0 range: 255 state: 0 channelType: 0 scaleType: 1 imageHistogram: 0x0 selectionHistogram: 0x0 xmin: 0.000000 xminOrg: 0.000000 xmax: 0.000000 animationState: 0 animation: 0x36eb890 histogramPainter: 0x36ec610 arguments: i_idata: 0x0, i_w: 0d, i_h: 0d i_sixteenBits: 0 s_idata: 0x0, s_w: 0d, s_h: 0d showProgress: 1 I will now apply the patch you posted and see whether it also fixes the problem. You can still use my dump output to verify whether your patch would address this state.
Rudolf, My patch in git/master fix the problem for you ? Gilles Caulier
Your patch does the same as my instrumentation and I indeed had no crash anymore with this change. I did spend some effort looking a little bit deeper into the problem last night and think it has something to do with image crop selection returning bad values, which leads to an illegal clip rectangle. If the DImg::copy in imagepropertiescolorstab.cpp:541 is fed a bad rectangle, an empty image is returned which ultimately produces exactly the numbers my dump showed in Comment 21. And I strongly suspect that there is something rotten in the state of ImagePropertiesSideBar::slotImageSelectionChanged or rather the function triggering it, because for some reason I can never select the whole image, there is always something cropped off the right and bottom side. Press Ctrl+A and Ctrl+X often enough and the whole image disappears. I know, I know, this should be a separate bug report .... I will report my findings, for the time the patch is a quick fix for the obvious symptom.
Thanks Rudolf for your investiguations... Gilles Caulier
If selection is stored in integers and the picture is zoomed, there can and will be rounding errors, this may explain your latter observations. Did you experience any other adverse effect when bad values come from somewhere when the crop rectangle is moving?
*** Bug 288823 has been marked as a duplicate of this bug. ***
Created attachment 67700 [details] New crash information added by DrKonqi digikam (2.1.1) on KDE Platform 4.7.4 (4.7.4) using Qt 4.7.4 - What I was doing when the application crashed: Trying to apply color changes, whe clicked on color button, it just crashed. -- Backtrace (Reduced): #7 Digikam::ImageHistogram::calculate (this=0xaa988d8) at /build/buildd/digikam-2.1.1/core/libs/dimg/filters/levels/imagehistogram.cpp:237 #8 0xb6928dcb in Digikam::ImageHistogram::run (this=0xaa988d8) at /build/buildd/digikam-2.1.1/core/libs/dimg/filters/levels/imagehistogram.cpp:174 #9 0xb6a5a8ee in Digikam::DynamicThread::DynamicThreadPriv::run (this=0xbb2b570) at /build/buildd/digikam-2.1.1/core/libs/threads/dynamicthread.cpp:328 #10 0xb4b83651 in QThreadPoolThread::run (this=0xb37dcf0) at concurrent/qthreadpool.cpp:106 #11 0xb4b8f7b3 in QThreadPrivate::start (arg=0xb37dcf0) at thread/qthread_unix.cpp:331
Luis, I applied patch to consolidate code with 2.4.1. release, not 2.1.1. Please update and try again. Note that me and Marcel, we never reproduce the crash. So it's difficult to hack... Gilles Caulier
Official digiKam 2.6.0 release is out since few days now : http://www.digikam.org/drupal/node/656 Please, check if this entry still valid, or update report accordingly. Thanks in advance. Gilles Caulier
A number of updates have been made to Ubuntu in the meantime which made this bug mysteriously disappear, with or without the patch. I have not been able to reproduce the problem ever since. I'd recommend this bug gets closed until new reports come in (unlikely IMHO).
*** Bug 302678 has been marked as a duplicate of this bug. ***
Created attachment 72987 [details] New crash information added by DrKonqi digikam (2.7.0) on KDE Platform 4.7.4 (4.7.4) using Qt 4.7.4 - What I was doing when the application crashed: I edited a .nef raw-picture using the solarizing kipi plugin -- Backtrace (Reduced): #7 Digikam::ImageHistogram::calculate (this=0x970fb20) at /build/buildd/digikam-2.7.0/core/libs/dimg/filters/levels/imagehistogram.cpp:218 #8 0x011a625b in Digikam::ImageHistogram::run (this=0x970fb20) at /build/buildd/digikam-2.7.0/core/libs/dimg/filters/levels/imagehistogram.cpp:174 #9 0x012da19e in Digikam::DynamicThread::DynamicThreadPriv::run (this=0xbb0fad8) at /build/buildd/digikam-2.7.0/core/libs/threads/dynamicthread.cpp:186 #10 0x01567651 in QThreadPoolThread::run (this=0xabf4cc0) at concurrent/qthreadpool.cpp:106 #11 0x015737b3 in QThreadPrivate::start (arg=0xabf4cc0) at thread/qthread_unix.cpp:331
*** Bug 304673 has been marked as a duplicate of this bug. ***
*** Bug 301051 has been marked as a duplicate of this bug. ***
Git commit 04933fa86122db4e1cc20df15ea9c6250cb6325f by Gilles Caulier. Committed on 01/10/2012 at 23:51. Pushed by cgilles into branch 'master'. use DImg image histogram constructor everywhere M +1 -2 libs/dimg/filters/auto/autolevelsfilter.cpp M +1 -2 libs/dimg/filters/auto/equalizefilter.cpp M +1 -2 libs/dimg/filters/auto/stretchfilter.cpp M +2 -1 libs/dimg/filters/curves/curveswidget.cpp M +3 -2 libs/dimg/filters/levels/histogramwidget.cpp M +0 -6 libs/dimg/filters/levels/imagehistogram.cpp M +0 -2 libs/dimg/filters/levels/imagehistogram.h M +3 -8 libs/dimg/filters/wb/wbfilter.cpp http://commits.kde.org/digikam/04933fa86122db4e1cc20df15ea9c6250cb6325f
Git commit 1a0bbc83b837d9a272842accea777b66227f7f89 by Gilles Caulier. Committed on 02/10/2012 at 09:53. Pushed by cgilles into branch 'master'. store internal image data in DImg Container. M +27 -30 libs/dimg/filters/levels/imagehistogram.cpp M +1 -1 libs/dimg/filters/levels/imagehistogram.h http://commits.kde.org/digikam/1a0bbc83b837d9a272842accea777b66227f7f89
Git commit 445c84557a943a281856cdf2451d7e4ddc78b9bf by Gilles Caulier. Committed on 02/10/2012 at 12:59. Pushed by cgilles into branch 'master'. remove HistogramWidget constructor with image data argumets. Use updtaeData() methods to pass image data. Clenup and simplifcation of API M +5 -5 imageplugins/color/adjustlevelstool.cpp M +6 -5 imageplugins/color/filmtool.cpp M +0 -29 libs/dimg/filters/levels/histogramwidget.cpp M +1 -20 libs/dimg/filters/levels/histogramwidget.h http://commits.kde.org/digikam/445c84557a943a281856cdf2451d7e4ddc78b9bf
Git commit ca4d5e3ed151ee0e0150732d0a046632b26449e6 by Gilles Caulier. Committed on 02/10/2012 at 13:47. Pushed by cgilles into branch 'master'. remove all methods to update image data based on ucher pointers. Used DImg container instead. API polish and simplification. M +1 -17 imageplugins/color/adjustcurvestool.cpp M +2 -21 imageplugins/color/adjustlevelstool.cpp M +1 -17 imageplugins/color/autocorrectiontool.cpp M +1 -17 imageplugins/color/bcgtool.cpp M +1 -17 imageplugins/color/bwsepiatool.cpp M +1 -17 imageplugins/color/cbtool.cpp M +1 -17 imageplugins/color/channelmixertool.cpp M +2 -17 imageplugins/color/filmtool.cpp M +1 -17 imageplugins/color/hsltool.cpp M +1 -17 imageplugins/color/profileconversiontool.cpp M +3 -18 imageplugins/color/whitebalancetool.cpp M +3 -18 imageplugins/enhance/localcontrasttool.cpp M +1 -20 imageplugins/enhance/redeyetool.cpp M +2 -11 imageplugins/filters/colorfxtool.cpp M +1 -3 imageplugins/transform/ratiocroptool.cpp M +10 -14 libs/dimg/filters/levels/histogramwidget.cpp M +4 -6 libs/dimg/filters/levels/histogramwidget.h M +16 -32 libs/imageproperties/imagepropertiescolorstab.cpp M +1 -1 utilities/imageeditor/rawimport/rawsettingsbox.cpp M +1 -2 utilities/setup/setupeditor.cpp http://commits.kde.org/digikam/ca4d5e3ed151ee0e0150732d0a046632b26449e6
Marcel, I have been able to reproduce the crash in ImageHistogram with 3.0.0 in certain conditions, when Color tab is visible from right sidebar tab... I ported all code relevant of histogram management to DImg and removed all methods and constructors using pointer to uchar data container. In all case this is more safe and clean. Code sound better. I'm sure that it's a race condition relevant of image data deleted during histogram computation. using DImg will prevent this. Also, i'm not able to reproduce the crash now, after few intensive race condition test in my fast computer. It still a point to clear before to close this file. Look here : https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/entry/libs/dimg/filters/levels/imagehistogram.cpp#L90 Do i need really to make a deep copy of image here ? Because it will mangle more memory, and i'm not sure that it must necessary to prevent race condition of image data deleted. Typically the DImg shared data reference mechanism must be safe and enough. Right ? Gilles
We are safe that the data will not be deleted (a reference is kept, and data is deleted only when the last reference is dropped) But we should be aware of a difference: DImg is explicitly shared, in contrast to implicitly shared classes like QString, QImage. That means a change to one copy of an image does not detach this copy, instead, the change will affect all shared instances. So, if e.g. the image editor gives the DImg to the sidebar, and then the data of the editor's main DImg is changed or resized, a shallow copy in the histogram will be immediately affected. This can lead to crashes, or can be safe, depending on the terms of use.
Git commit 37a1414726f92a3ef3b350a7ff5a939c88d27307 by Gilles Caulier. Committed on 03/10/2012 at 10:05. Pushed by cgilles into branch 'master'. make a simple copy of reference instead a deep copy. This must be enough and optimum for memory allocation. FIXED-IN: 3.0.0 M +4 -1 libs/dimg/filters/levels/imagehistogram.cpp http://commits.kde.org/digikam/37a1414726f92a3ef3b350a7ff5a939c88d27307
Git commit 50939b7dd0c6a02761792c6f7750adcb8f30d9d0 by Gilles Caulier. Committed on 07/10/2012 at 07:23. Pushed by cgilles into branch 'master'. use DImg constructor instead pointer based image data arguments M +22 -20 libs/dimg/filters/bw/bwsepiasettings.cpp M +4 -4 libs/dimg/filters/bw/bwsepiasettings.h M +4 -4 libs/dimg/filters/curves/curvesbox.cpp M +2 -2 libs/dimg/filters/curves/curvesbox.h M +2 -2 libs/dimg/filters/curves/curvessettings.cpp M +3 -3 libs/dimg/filters/curves/curveswidget.cpp M +3 -5 libs/dimg/filters/curves/curveswidget.h M +1 -1 utilities/imageeditor/rawimport/rawimport.cpp M +1 -1 utilities/imageeditor/rawimport/rawsettingsbox.cpp http://commits.kde.org/digikam/50939b7dd0c6a02761792c6f7750adcb8f30d9d0
*** Bug 312048 has been marked as a duplicate of this bug. ***
*** Bug 314833 has been marked as a duplicate of this bug. ***