Bug 274555 - Digikam crashes while histogram computation
Summary: Digikam crashes while histogram computation
Status: RESOLVED FIXED
Alias: None
Product: digikam
Classification: Applications
Component: Portability-Runtime (show other bugs)
Version: 3.0.0
Platform: Fedora RPMs Linux
: NOR crash
Target Milestone: ---
Assignee: Digikam Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-05-30 22:50 UTC by Geert Janssens
Modified: 2017-07-23 11:57 UTC (History)
14 users (show)

See Also:
Latest Commit:
Version Fixed In: 3.0.0
Sentry Crash Report:


Attachments
New crash information added by DrKonqi (10.27 KB, text/plain)
2011-11-10 19:00 UTC, Rudolf Leitgeb
Details
New crash information added by DrKonqi (9.93 KB, text/plain)
2012-01-11 16:04 UTC, Luis Alberto Arriola
Details
New crash information added by DrKonqi (16.66 KB, text/plain)
2012-08-06 11:44 UTC, Kaspar Schwarzenbach
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Geert Janssens 2011-05-30 22:50:01 UTC
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
Comment 1 caulier.gilles 2011-06-08 14:19:10 UTC
It crash in histogram computation. do you show it from right sidebar ?

It still reproducible with a similar backtrace ?

Gilles Caulier
Comment 2 caulier.gilles 2011-06-09 18:35:41 UTC
*** Bug 275299 has been marked as a duplicate of this bug. ***
Comment 3 Geert Janssens 2011-06-09 18:42:39 UTC
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.
Comment 4 Marcel Wiesweg 2011-06-11 16:00:38 UTC
Would be very interesting if you can reproduce with a 2.0 version.
I remember some other crash reports at this location.
Comment 5 caulier.gilles 2011-06-13 22:44:20 UTC
*** Bug 275559 has been marked as a duplicate of this bug. ***
Comment 6 caulier.gilles 2011-07-06 11:16:07 UTC
We need feedback using a recent version. 2.0.0 RC is out, please test...

Thanks in advance

Gilles Caulier
Comment 7 Christoph Feck 2011-07-29 11:48:57 UTC
Bug 278748 is from 2.0.0.
Comment 8 caulier.gilles 2011-07-30 20:03:12 UTC
*** Bug 278748 has been marked as a duplicate of this bug. ***
Comment 9 caulier.gilles 2011-08-17 09:20:02 UTC
*** Bug 280239 has been marked as a duplicate of this bug. ***
Comment 10 Marcel Wiesweg 2011-10-06 16:09:56 UTC
Anyone who is compiling from current git who can reproduce the crash?
Comment 11 caulier.gilles 2011-10-20 09:53:25 UTC
*** Bug 284528 has been marked as a duplicate of this bug. ***
Comment 12 caulier.gilles 2011-10-20 09:54:25 UTC
Marcel, 

Look like with #284528, the problem still reproducible with 2.2.0...

Gilles Caulier
Comment 13 Marcel Wiesweg 2011-10-24 20:14:49 UTC
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.
Comment 14 caulier.gilles 2011-11-03 12:42:23 UTC
digiKam 2.2.0 is out since few weeks. Crash still valid with this version ?

Gilles Caulier
Comment 15 caulier.gilles 2011-11-05 22:02:45 UTC

*** This bug has been marked as a duplicate of bug 285849 ***
Comment 16 caulier.gilles 2011-11-05 22:04:06 UTC
*** Bug 285849 has been marked as a duplicate of this bug. ***
Comment 17 Rudolf Leitgeb 2011-11-10 19:00:45 UTC
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
Comment 18 caulier.gilles 2011-11-17 12:26:47 UTC
*** Bug 286840 has been marked as a duplicate of this bug. ***
Comment 19 caulier.gilles 2011-11-21 09:46:15 UTC
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
Comment 20 caulier.gilles 2011-11-21 09:57:33 UTC
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
Comment 21 Rudolf Leitgeb 2011-11-21 10:18:12 UTC
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.
Comment 22 caulier.gilles 2011-11-22 13:30:30 UTC
Rudolf,

My patch in git/master fix the problem for you ?

Gilles Caulier
Comment 23 Rudolf Leitgeb 2011-11-22 13:53:00 UTC
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.
Comment 24 caulier.gilles 2011-11-22 13:58:35 UTC
Thanks Rudolf for your investiguations...

Gilles Caulier
Comment 25 Marcel Wiesweg 2011-11-23 18:07:42 UTC
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?
Comment 26 caulier.gilles 2011-12-12 18:24:48 UTC
*** Bug 288823 has been marked as a duplicate of this bug. ***
Comment 27 Luis Alberto Arriola 2012-01-11 16:04:24 UTC
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
Comment 28 caulier.gilles 2012-01-11 16:55:34 UTC
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
Comment 29 caulier.gilles 2012-06-22 08:52:03 UTC
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
Comment 30 Rudolf Leitgeb 2012-06-23 09:09:58 UTC
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).
Comment 31 caulier.gilles 2012-06-28 07:07:55 UTC
*** Bug 302678 has been marked as a duplicate of this bug. ***
Comment 32 Kaspar Schwarzenbach 2012-08-06 11:44:12 UTC
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
Comment 33 caulier.gilles 2012-08-06 16:33:05 UTC
*** Bug 304673 has been marked as a duplicate of this bug. ***
Comment 34 caulier.gilles 2012-09-28 21:20:09 UTC
*** Bug 301051 has been marked as a duplicate of this bug. ***
Comment 35 caulier.gilles 2012-10-01 21:52:59 UTC
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
Comment 36 caulier.gilles 2012-10-02 07:54:02 UTC
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
Comment 37 caulier.gilles 2012-10-02 11:01:14 UTC
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
Comment 38 caulier.gilles 2012-10-02 11:48:58 UTC
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
Comment 39 caulier.gilles 2012-10-02 12:09:01 UTC
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
Comment 40 Marcel Wiesweg 2012-10-02 19:49:00 UTC
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.
Comment 41 caulier.gilles 2012-10-03 08:06:17 UTC
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
Comment 42 caulier.gilles 2012-10-07 05:24:34 UTC
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
Comment 43 caulier.gilles 2012-12-21 19:26:22 UTC
*** Bug 312048 has been marked as a duplicate of this bug. ***
Comment 44 caulier.gilles 2013-02-10 16:19:52 UTC
*** Bug 314833 has been marked as a duplicate of this bug. ***