Bug 283281

Summary: Crash during batch convert
Product: [Applications] digikam Reporter: Joachim Johansson <joachim.j>
Component: BatchQueueManager-RAWProcessingAssignee: Digikam Developers <digikam-bugs-null>
Status: RESOLVED FIXED    
Severity: crash CC: caulier.gilles, richm+kde
Priority: NOR    
Version: 2.1.1   
Target Milestone: ---   
Platform: Ubuntu   
OS: Linux   
Latest Commit: Version Fixed In: 2.4.0
Sentry Crash Report:
Attachments: New crash information added by DrKonqi
New crash information added by DrKonqi
New crash information added by DrKonqi

Description Joachim Johansson 2011-10-03 22:51:47 UTC
Application: digikam (2.1.1)
KDE Platform Version: 4.7.1 (4.7.1)
Qt Version: 4.7.4
Operating System: Linux 3.0.0-12-generic i686
Distribution: Ubuntu oneiric (development branch)

-- Information about the crash:
Digikam crashed during a batch convert. I'll try to recreate the bug later.

-- Backtrace:
Application: digiKam (digikam), signal: Segmentation fault
[Current thread is 1 (Thread 0xb4c9a8c0 (LWP 17066))]

Thread 6 (Thread 0xb4234b70 (LWP 17080)):
#0  0x006c1416 in __kernel_vsyscall ()
#1  0x0507340e in poll () from /lib/i386-linux-gnu/libc.so.6
#2  0x02ff034b in g_poll () from /lib/i386-linux-gnu/libglib-2.0.so.0
#3  0x02fe1896 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#4  0x02fe1f9b in g_main_loop_run () from /lib/i386-linux-gnu/libglib-2.0.so.0
#5  0x041cacea in ?? () from /usr/lib/i386-linux-gnu/libgio-2.0.so.0
#6  0x030085f4 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#7  0x00e9bd31 in start_thread () from /lib/i386-linux-gnu/libpthread.so.0
#8  0x050820ce in clone () from /lib/i386-linux-gnu/libc.so.6
Backtrace stopped: Not enough registers or memory available to unwind further

Thread 5 (Thread 0xb2f7fb70 (LWP 17087)):
#0  0x006c1416 in __kernel_vsyscall ()
#1  0x00e9fa5c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/i386-linux-gnu/libpthread.so.0
#2  0x0508fcfc in pthread_cond_wait () from /lib/i386-linux-gnu/libc.so.6
#3  0x02223cc0 in wait (time=4294967295, this=0x884b3c0) at thread/qwaitcondition_unix.cpp:88
#4  QWaitCondition::wait (this=0x884b2ec, mutex=0x884b2e8, time=4294967295) at thread/qwaitcondition_unix.cpp:160
#5  0x081faf45 in Digikam::ScanController::run (this=0x884b0b0) at /build/buildd/digikam-2.1.1/core/digikam/database/scancontroller.cpp:647
#6  0x022237b3 in QThreadPrivate::start (arg=0x884b0b0) at thread/qthread_unix.cpp:331
#7  0x00e9bd31 in start_thread () from /lib/i386-linux-gnu/libpthread.so.0
#8  0x050820ce in clone () from /lib/i386-linux-gnu/libc.so.6
Backtrace stopped: Not enough registers or memory available to unwind further

Thread 4 (Thread 0xb277eb70 (LWP 17088)):
#0  0x00e9ddbd in pthread_mutex_lock () from /lib/i386-linux-gnu/libpthread.so.0
#1  0x0508ff14 in pthread_mutex_lock () from /lib/i386-linux-gnu/libc.so.6
#2  0x02fe070b in g_main_context_prepare () from /lib/i386-linux-gnu/libglib-2.0.so.0
#3  0x02fe1637 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#4  0x02fe1c2a in g_main_context_iteration () from /lib/i386-linux-gnu/libglib-2.0.so.0
#5  0x0234cb37 in QEventDispatcherGlib::processEvents (this=0x884ea80, flags=...) at kernel/qeventdispatcher_glib.cpp:424
#6  0x0231d1dd in QEventLoop::processEvents (this=0xb277e100, flags=...) at kernel/qeventloop.cpp:149
#7  0x0231d421 in QEventLoop::exec (this=0xb277e100, flags=...) at kernel/qeventloop.cpp:201
#8  0x0222090b in QThread::exec (this=0x8848f28) at thread/qthread.cpp:498
#9  0x022fde2d in QInotifyFileSystemWatcherEngine::run (this=0x8848f28) at io/qfilesystemwatcher_inotify.cpp:248
#10 0x022237b3 in QThreadPrivate::start (arg=0x8848f28) at thread/qthread_unix.cpp:331
#11 0x00e9bd31 in start_thread () from /lib/i386-linux-gnu/libpthread.so.0
#12 0x050820ce in clone () from /lib/i386-linux-gnu/libc.so.6
Backtrace stopped: Not enough registers or memory available to unwind further

Thread 3 (Thread 0xb1f7db70 (LWP 17090)):
#0  0x006c1416 in __kernel_vsyscall ()
#1  0x00e9fa5c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/i386-linux-gnu/libpthread.so.0
#2  0x0508fcfc in pthread_cond_wait () from /lib/i386-linux-gnu/libc.so.6
#3  0x02223cc0 in wait (time=4294967295, this=0x8a76f60) at thread/qwaitcondition_unix.cpp:88
#4  QWaitCondition::wait (this=0x8a76c30, mutex=0x8a76c2c, time=4294967295) at thread/qwaitcondition_unix.cpp:160
#5  0x0120cf54 in Digikam::ParkingThread::run (this=0x8a76c20) at /build/buildd/digikam-2.1.1/core/libs/threads/threadmanager.cpp:119
#6  0x022237b3 in QThreadPrivate::start (arg=0x8a76c20) at thread/qthread_unix.cpp:331
#7  0x00e9bd31 in start_thread () from /lib/i386-linux-gnu/libpthread.so.0
#8  0x050820ce in clone () from /lib/i386-linux-gnu/libc.so.6
Backtrace stopped: Not enough registers or memory available to unwind further

Thread 2 (Thread 0xa9630b70 (LWP 17445)):
#0  0x006c1416 in __kernel_vsyscall ()
#1  0x00e9fa5c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/i386-linux-gnu/libpthread.so.0
#2  0x0508fcfc in pthread_cond_wait () from /lib/i386-linux-gnu/libc.so.6
#3  0x02223cc0 in wait (time=4294967295, this=0x96d77c8) at thread/qwaitcondition_unix.cpp:88
#4  QWaitCondition::wait (this=0x96d7630, mutex=0x96d762c, time=4294967295) at thread/qwaitcondition_unix.cpp:160
#5  0x08313660 in Digikam::ActionThread::run (this=0x96d7410) at /build/buildd/digikam-2.1.1/core/utilities/queuemanager/manager/actionthread.cpp:163
#6  0x022237b3 in QThreadPrivate::start (arg=0x96d7410) at thread/qthread_unix.cpp:331
#7  0x00e9bd31 in start_thread () from /lib/i386-linux-gnu/libpthread.so.0
#8  0x050820ce in clone () from /lib/i386-linux-gnu/libc.so.6
Backtrace stopped: Not enough registers or memory available to unwind further

Thread 1 (Thread 0xb4c9a8c0 (LWP 17066)):
[KCrash Handler]
#7  0x083189c1 in setIcon (aicon=<optimized out>, column=<optimized out>, this=<optimized out>) at /usr/include/qt4/QtGui/qtreewidget.h:230
#8  Digikam::AssignedListViewItem::setProgressIcon (this=0x9655188, icon=...) at /build/buildd/digikam-2.1.1/core/utilities/queuemanager/views/assignedlist.cpp:107
#9  0x0830bd48 in Digikam::QueueMgrWindow::slotProgressTimerDone (this=0x9379e68) at /build/buildd/digikam-2.1.1/core/utilities/queuemanager/main/queuemgrwindow.cpp:1008
#10 0x08311dc4 in Digikam::QueueMgrWindow::qt_metacall (this=0x9379e68, _c=QMetaObject::InvokeMetaMethod, _id=<optimized out>, _a=0xbfde3684) at /build/buildd/digikam-2.1.1/obj-i686-linux-gnu/core/utilities/queuemanager/queuemgrwindow.moc:118
#11 0x02324b7d in metacall (argv=0xbfde3684, idx=60, cl=QMetaObject::InvokeMetaMethod, object=0x9379e68) at kernel/qmetaobject.cpp:237
#12 QMetaObject::metacall (object=0x9379e68, cl=QMetaObject::InvokeMetaMethod, idx=60, argv=0xbfde3684) at kernel/qmetaobject.cpp:232
#13 0x02333a6a in QMetaObject::activate (sender=0x96cdce0, m=0x24555f8, local_signal_index=0, argv=0x0) at kernel/qobject.cpp:3278
#14 0x023827d5 in QTimer::timeout (this=0x96cdce0) at .moc/release-shared/moc_qtimer.cpp:134
#15 0x0233b286 in QTimer::timerEvent (this=0x96cdce0, e=0xbfde3a7c) at kernel/qtimer.cpp:271
#16 0x02336994 in QObject::event (this=0x96cdce0, e=0xbfde3a7c) at kernel/qobject.cpp:1181
#17 0x01580d54 in notify_helper (e=0xbfde3a7c, receiver=0x96cdce0, this=0x86ab7c0) at kernel/qapplication.cpp:4486
#18 QApplicationPrivate::notify_helper (this=0x86ab7c0, receiver=0x96cdce0, e=0xbfde3a7c) at kernel/qapplication.cpp:4458
#19 0x01586103 in QApplication::notify (this=0xbfde3a7c, receiver=0x96cdce0, e=0xbfde3a7c) at kernel/qapplication.cpp:3886
#20 0x0614c721 in KApplication::notify (this=0xbfde3e10, receiver=0x96cdce0, event=0xbfde3a7c) at ../../kdeui/kernel/kapplication.cpp:311
#21 0x0231e19e in QCoreApplication::notifyInternal (this=0xbfde3e10, receiver=0x96cdce0, event=0xbfde3a7c) at kernel/qcoreapplication.cpp:787
#22 0x0234ec10 in sendEvent (event=0xbfde3a7c, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215
#23 QTimerInfoList::activateTimers (this=0x86ae484) at kernel/qeventdispatcher_unix.cpp:603
#24 0x0234c122 in timerSourceDispatch (source=0x86ae450) at kernel/qeventdispatcher_glib.cpp:184
#25 0x02fe125f in g_main_context_dispatch () from /lib/i386-linux-gnu/libglib-2.0.so.0
#26 0x02fe1990 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#27 0x02fe1c2a in g_main_context_iteration () from /lib/i386-linux-gnu/libglib-2.0.so.0
#28 0x0234cada in QEventDispatcherGlib::processEvents (this=0x866b038, flags=...) at kernel/qeventdispatcher_glib.cpp:422
#29 0x01638e3a in QGuiEventDispatcherGlib::processEvents (this=0x866b038, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#30 0x0231d1dd in QEventLoop::processEvents (this=0xbfde3cf4, flags=...) at kernel/qeventloop.cpp:149
#31 0x0231d421 in QEventLoop::exec (this=0xbfde3cf4, flags=...) at kernel/qeventloop.cpp:201
#32 0x0232219d in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1064
#33 0x0157e8f4 in QApplication::exec () at kernel/qapplication.cpp:3760
#34 0x080b4b64 in main (argc=32290952, argv=0x16) at /build/buildd/digikam-2.1.1/core/digikam/main/main.cpp:232

Reported using DrKonqi
Comment 1 Andi Clemens 2011-10-24 21:57:42 UTC
What about this bug report? Any news here?

Joachim,
could you please tell the exact steps you have taken? Or at least which tools you have used, to reproduce the crash.

Andi
Comment 2 caulier.gilles 2011-11-03 12:42:36 UTC
digiKam 2.2.0 is out since few weeks. Crash still valid with this version ?

Gilles Caulier
Comment 3 Richard Mortimer 2011-11-06 21:40:52 UTC
Created attachment 65316 [details]
New crash information added by DrKonqi

digikam (2.2.0) on KDE Platform 4.7.2 (4.7.2) using Qt 4.7.2

- What I was doing when the application crashed:

I had a back queue (with 4 steps) running processing a number of files.

Then I went back to the main window and adjusted my filters to select some more images to process. Once selected I clicked the batch processing button on the top menubar and the crash occurred.

-- Backtrace (Reduced):
#7  0x08301f39 in setIcon (this=0xa5d72c0, icon=...) at /usr/include/qt4/QtGui/qtreewidget.h:230
#8  Digikam::AssignedListViewItem::setProgressIcon (this=0xa5d72c0, icon=...) at /build/buildd/digikam-2.2.0/core/utilities/queuemanager/views/assignedlist.cpp:107
#9  0x082f5f92 in Digikam::QueueMgrWindow::slotProgressTimerDone (this=0x9804fa8) at /build/buildd/digikam-2.2.0/core/utilities/queuemanager/main/queuemgrwindow.cpp:1008
#10 0x082fb97b in Digikam::QueueMgrWindow::qt_metacall (this=0x9804fa8, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0xbf9dce4c) at /build/buildd/digikam-2.2.0/obj-i686-linux-gnu/core/utilities/queuemanager/queuemgrwindow.moc:118
[...]
#13 0xb4bd72f7 in QTimer::timeout (this=0x9b67178) at .moc/release-shared/moc_qtimer.cpp:134
Comment 4 Richard Mortimer 2011-11-06 21:52:33 UTC
Created attachment 65317 [details]
New crash information added by DrKonqi

digikam (2.2.0) on KDE Platform 4.7.2 (4.7.2) using Qt 4.7.2

- What I was doing when the application crashed:

Same steps as before. Start a batch run on a number of images. Then select a different set of images from the main window thumbnail view. Once selected click the batch manager button and the crash happens.

-- Backtrace (Reduced):
#8  0x082f5f92 in Digikam::QueueMgrWindow::slotProgressTimerDone (this=0xa5e4dc8) at /build/buildd/digikam-2.2.0/core/utilities/queuemanager/main/queuemgrwindow.cpp:1008
#9  0x082fb97b in Digikam::QueueMgrWindow::qt_metacall (this=0xa5e4dc8, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0xbfa81d1c) at /build/buildd/digikam-2.2.0/obj-i686-linux-gnu/core/utilities/queuemanager/queuemgrwindow.moc:118
[...]
#12 0xb4bb92f7 in QTimer::timeout (this=0xa8ff950) at .moc/release-shared/moc_qtimer.cpp:134
#13 0xb4b723ee in QTimer::timerEvent (this=0xa8ff950, e=0xbfa8223c) at kernel/qtimer.cpp:271
#14 0xb4b6b214 in QObject::event (this=0xa8ff950, e=0xbfa8223c) at kernel/qobject.cpp:1190
Comment 5 Marcel Wiesweg 2011-11-19 11:06:47 UTC
Richard: can you reproduce this every time? Is the first queue still busy while you start the next one?
Gilles: it would seem that the d->currentTaskItem is invalid (deleted?) but not set to 0.
Comment 6 caulier.gilles 2011-11-19 11:27:13 UTC
Marcel,

Yes, i see, and i fixed it for 2.3.0 :

https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/42a2f8c95c6f27f1d28bdef310d1f95aad635f27

So, if people can try with digiKam 2.3.0, normally, it's already fixed.

Gilles Caulier
Comment 7 Richard Mortimer 2011-11-20 18:38:55 UTC
Created attachment 65873 [details]
New crash information added by DrKonqi

digikam (2.3.0) on KDE Platform 4.7.2 (4.7.2) using Qt 4.7.2

- What I was doing when the application crashed:

I just tried this with the philip5 natty ppa 2.3.0 packages and the problem still occurs.

To answer Marcel's questions:

I can reproduce it easily (it does seem to be every time). The other queue is still busy when I start the next one.

Just in case it helps to reproduce when I just tried I had 3 processing steps in my batch queue operation: auto level colours; remove meta data; apply metadata. I set the same for the 2nd batch queue entries.

-- Backtrace (Reduced):
#7  0x083032f9 in setIcon (this=0xa3af210, icon=...) at /usr/include/qt4/QtGui/qtreewidget.h:230
#8  Digikam::AssignedListViewItem::setProgressIcon (this=0xa3af210, icon=...) at /build/buildd/digikam-2.3.0/core/utilities/queuemanager/views/assignedlist.cpp:107
#9  0x082f72e2 in Digikam::QueueMgrWindow::slotProgressTimerDone (this=0x98d3fb8) at /build/buildd/digikam-2.3.0/core/utilities/queuemanager/main/queuemgrwindow.cpp:1017
#10 0x082fccdb in Digikam::QueueMgrWindow::qt_metacall (this=0x98d3fb8, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0xbfb6e1cc) at /build/buildd/digikam-2.3.0/obj-i686-linux-gnu/core/utilities/queuemanager/queuemgrwindow.moc:118
[...]
#13 0xb4a682f7 in QTimer::timeout (this=0x99d14a0) at .moc/release-shared/moc_qtimer.cpp:134
Comment 8 caulier.gilles 2011-11-21 12:39:09 UTC
Git commit 29ab1cb7a42cfb2145338eca30696ccd4077e351 by Gilles Caulier.
Committed on 21/11/2011 at 13:36.
Pushed by cgilles into branch 'master'.

BQM : add new signal to dispatch busy state to AlbumGUI, to disable BQM action from GUI when it's busy.
BQM cannot handle new item when processing is under progress, because it process all current queues as well.
If new one is add in list, this can crash application.
BUGS: 283281

M  +1    -1    digikam/items/digikamimageview.cpp
M  +0    -5    digikam/items/imageviewutilities.cpp
M  +0    -1    digikam/items/imageviewutilities.h
M  +17   -6    digikam/main/digikamapp.cpp
M  +3    -1    digikam/main/digikamapp_p.h
M  +2    -0    utilities/queuemanager/main/queuemgrwindow.cpp
M  +1    -0    utilities/queuemanager/main/queuemgrwindow.h

http://commits.kde.org/digikam/29ab1cb7a42cfb2145338eca30696ccd4077e351