Bug 209225 - Crash when running batch queue in background
Summary: Crash when running batch queue in background
Status: RESOLVED FIXED
Alias: None
Product: digikam
Classification: Applications
Component: BatchQueueManager-Workflow (show other bugs)
Version: 1.0.0
Platform: openSUSE Linux
: NOR crash
Target Milestone: ---
Assignee: Digikam Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-10-02 16:54 UTC by Guenther M. Erhard
Modified: 2016-07-04 05:55 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed In: 1.0.0


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Guenther M. Erhard 2009-10-02 16:54:41 UTC
Version:            (using KDE 4.2.4)
OS:                Linux
Installed from:    SuSE RPMs

Hi,

I've added about 200 tif-files to a new batch queue. 
I've assigned three tools:
1) resize to 1600px
2) simple sharp 10%
3) convert to jpg with 90%

After starting the process I put the batch queue manager window in the background. A while later digikam crashes. The crash is not related to a certain file or number of images in the queue. It occurs most of the time at a random time. A high number of images in the queue does increase the possibility of a crash, of course.

Here is the crash log:
Anwendung: digiKam (digikam), Signal SIGSEGV
[?1034h[Thread debugging using libthread_db enabled]
[Current thread is 1 (Thread 0xb456c700 (LWP 5519))]

Thread 14 (Thread 0xb2fa3b90 (LWP 5521)):
#0  0xffffe430 in __kernel_vsyscall ()
#1  0xb5574c35 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2  0xb5606872 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4
#3  0x083593d9 in Digikam::ScanController::run (this=0x85da450) at /home/guenni/tmp/kde4/graphics/digikam/digikam/scancontroller.cpp:499
#4  0xb560585e in ?? () from /usr/lib/libQtCore.so.4
#5  0xb55711b5 in start_thread () from /lib/libpthread.so.0
#6  0xb53b43ae in clone () from /lib/libc.so.6

Thread 13 (Thread 0xb1a67b90 (LWP 5525)):
#0  0xb5573cc6 in __pthread_mutex_unlock_usercnt () from /lib/libpthread.so.0
#1  0xb4df3d54 in g_main_context_prepare () from /usr/lib/libglib-2.0.so.0
#2  0xb4df4124 in ?? () from /usr/lib/libglib-2.0.so.0
#3  0xb4df45d8 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#4  0xb571ffd7 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#5  0xb56f401a in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#6  0xb56f41da in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#7  0xb5602559 in QThread::exec() () from /usr/lib/libQtCore.so.4
#8  0xb6ee81d3 in Digikam::ImageFilterModelWorker::Thread::run (this=0x86538d0) at /home/guenni/tmp/kde4/graphics/digikam/libs/models/imagefiltermodelthreads.h:66
#9  0xb560585e in ?? () from /usr/lib/libQtCore.so.4
#10 0xb55711b5 in start_thread () from /lib/libpthread.so.0
#11 0xb53b43ae in clone () from /lib/libc.so.6

Thread 12 (Thread 0xb2268b90 (LWP 5526)):
#0  0xb4e803da in clock_gettime () from /lib/librt.so.1
#1  0xb5721beb in ?? () from /usr/lib/libQtCore.so.4
#2  0xb5721dc1 in ?? () from /usr/lib/libQtCore.so.4
#3  0xb57235bc in ?? () from /usr/lib/libQtCore.so.4
#4  0xb5720198 in ?? () from /usr/lib/libQtCore.so.4
#5  0xb4df3d60 in g_main_context_prepare () from /usr/lib/libglib-2.0.so.0
#6  0xb4df4124 in ?? () from /usr/lib/libglib-2.0.so.0
#7  0xb4df45d8 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#8  0xb571ffd7 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#9  0xb56f401a in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#10 0xb56f41da in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#11 0xb5602559 in QThread::exec() () from /usr/lib/libQtCore.so.4
#12 0xb6ee81d3 in Digikam::ImageFilterModelWorker::Thread::run (this=0x8665ea0) at /home/guenni/tmp/kde4/graphics/digikam/libs/models/imagefiltermodelthreads.h:66
#13 0xb560585e in ?? () from /usr/lib/libQtCore.so.4
#14 0xb55711b5 in start_thread () from /lib/libpthread.so.0
#15 0xb53b43ae in clone () from /lib/libc.so.6

Thread 11 (Thread 0xafcb7b90 (LWP 5527)):
#0  0xffffe430 in __kernel_vsyscall ()
#1  0xb5574c35 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2  0xb5606872 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4
#3  0xb7130931 in Digikam::LoadSaveThread::run (this=0x869efe0) at /home/guenni/tmp/kde4/graphics/digikam/libs/threadimageio/loadsavethread.cpp:136
#4  0xb560585e in ?? () from /usr/lib/libQtCore.so.4
#5  0xb55711b5 in start_thread () from /lib/libpthread.so.0
#6  0xb53b43ae in clone () from /lib/libc.so.6

Thread 10 (Thread 0xaf4b6b90 (LWP 5528)):
#0  0xb4e803da in clock_gettime () from /lib/librt.so.1
#1  0xb5721beb in ?? () from /usr/lib/libQtCore.so.4
#2  0xb5721dc1 in ?? () from /usr/lib/libQtCore.so.4
#3  0xb57235bc in ?? () from /usr/lib/libQtCore.so.4
#4  0xb5720198 in ?? () from /usr/lib/libQtCore.so.4
#5  0xb4df3d60 in g_main_context_prepare () from /usr/lib/libglib-2.0.so.0
#6  0xb4df4124 in ?? () from /usr/lib/libglib-2.0.so.0
#7  0xb4df45d8 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#8  0xb571ffd7 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#9  0xb56f401a in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#10 0xb56f41da in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#11 0xb5602559 in QThread::exec() () from /usr/lib/libQtCore.so.4
#12 0x0834e01d in Digikam::MetadataManagerWorker::Thread::run (this=0x86c31e0) at /home/guenni/tmp/kde4/graphics/build/digikam/digikam/../../../digikam/digikam/metadatamanager_p.h:145
#13 0xb560585e in ?? () from /usr/lib/libQtCore.so.4
#14 0xb55711b5 in start_thread () from /lib/libpthread.so.0
#15 0xb53b43ae in clone () from /lib/libc.so.6

Thread 9 (Thread 0xaecb5b90 (LWP 5529)):
#0  0xb4e803da in clock_gettime () from /lib/librt.so.1
#1  0xb5721beb in ?? () from /usr/lib/libQtCore.so.4
#2  0xb5721dc1 in ?? () from /usr/lib/libQtCore.so.4
#3  0xb57235bc in ?? () from /usr/lib/libQtCore.so.4
#4  0xb5720198 in ?? () from /usr/lib/libQtCore.so.4
#5  0xb4df3d60 in g_main_context_prepare () from /usr/lib/libglib-2.0.so.0
#6  0xb4df4124 in ?? () from /usr/lib/libglib-2.0.so.0
#7  0xb4df45d8 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#8  0xb571ffd7 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#9  0xb56f401a in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#10 0xb56f41da in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#11 0xb5602559 in QThread::exec() () from /usr/lib/libQtCore.so.4
#12 0x0834e01d in Digikam::MetadataManagerWorker::Thread::run (this=0x86682d0) at /home/guenni/tmp/kde4/graphics/build/digikam/digikam/../../../digikam/digikam/metadatamanager_p.h:145
#13 0xb560585e in ?? () from /usr/lib/libQtCore.so.4
#14 0xb55711b5 in start_thread () from /lib/libpthread.so.0
#15 0xb53b43ae in clone () from /lib/libc.so.6

Thread 8 (Thread 0xae4b4b90 (LWP 5530)):
#0  0xffffe430 in __kernel_vsyscall ()
#1  0xb5574c35 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2  0xb5606872 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4
#3  0xb7130931 in Digikam::LoadSaveThread::run (this=0xb2332ef8) at /home/guenni/tmp/kde4/graphics/digikam/libs/threadimageio/loadsavethread.cpp:136
#4  0xb560585e in ?? () from /usr/lib/libQtCore.so.4
#5  0xb55711b5 in start_thread () from /lib/libpthread.so.0
#6  0xb53b43ae in clone () from /lib/libc.so.6

Thread 7 (Thread 0xab3aab90 (LWP 5531)):
#0  0xffffe430 in __kernel_vsyscall ()
#1  0xb5574f62 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2  0xac553721 in ?? () from /usr/lib/libxine.so.1
#3  0xb55711b5 in start_thread () from /lib/libpthread.so.0
#4  0xb53b43ae in clone () from /lib/libc.so.6

Thread 6 (Thread 0xaa744b90 (LWP 5532)):
#0  0xffffe430 in __kernel_vsyscall ()
#1  0xb5574f62 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2  0xac5621ae in ?? () from /usr/lib/libxine.so.1
#3  0xb55711b5 in start_thread () from /lib/libpthread.so.0
#4  0xb53b43ae in clone () from /lib/libc.so.6

Thread 5 (Thread 0xa9f43b90 (LWP 5533)):
#0  0xb4e803da in clock_gettime () from /lib/librt.so.1
#1  0xb5721beb in ?? () from /usr/lib/libQtCore.so.4
#2  0xb5721dc1 in ?? () from /usr/lib/libQtCore.so.4
#3  0xb57235bc in ?? () from /usr/lib/libQtCore.so.4
#4  0xb5720198 in ?? () from /usr/lib/libQtCore.so.4
#5  0xb4df3d60 in g_main_context_prepare () from /usr/lib/libglib-2.0.so.0
#6  0xb4df4124 in ?? () from /usr/lib/libglib-2.0.so.0
#7  0xb4df45d8 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#8  0xb571ffd7 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#9  0xb56f401a in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#10 0xb56f41da in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#11 0xb5602559 in QThread::exec() () from /usr/lib/libQtCore.so.4
#12 0xac5aa8f9 in ?? () from /usr/lib/kde4/plugins/phonon_backend/phonon_xine.so
#13 0xb560585e in ?? () from /usr/lib/libQtCore.so.4
#14 0xb55711b5 in start_thread () from /lib/libpthread.so.0
#15 0xb53b43ae in clone () from /lib/libc.so.6

Thread 4 (Thread 0xa9354b90 (LWP 5535)):
#0  0xffffe430 in __kernel_vsyscall ()
#1  0xb5574c35 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2  0xac565f43 in ?? () from /usr/lib/libxine.so.1
#3  0xb55711b5 in start_thread () from /lib/libpthread.so.0
#4  0xb53b43ae in clone () from /lib/libc.so.6

Thread 3 (Thread 0xa5cffb90 (LWP 5552)):
#0  0xffffe430 in __kernel_vsyscall ()
#1  0xb5574c35 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2  0xb5606872 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4
#3  0xb7130931 in Digikam::LoadSaveThread::run (this=0x9313990) at /home/guenni/tmp/kde4/graphics/digikam/libs/threadimageio/loadsavethread.cpp:136
#4  0xb560585e in ?? () from /usr/lib/libQtCore.so.4
#5  0xb55711b5 in start_thread () from /lib/libpthread.so.0
#6  0xb53b43ae in clone () from /lib/libc.so.6

Thread 2 (Thread 0xa8b37b90 (LWP 5638)):
[KCrash Handler]
#6  0xb5cf9b5b in ?? () from /usr/lib/libQtGui.so.4
#7  0xb5cfbf96 in ?? () from /usr/lib/libQtGui.so.4
#8  0xb5cfc4bc in ?? () from /usr/lib/libQtGui.so.4
#9  0xb5d00101 in QRegion::operator+=(QRegion const&) () from /usr/lib/libQtGui.so.4
#10 0xb5d70aa4 in ?? () from /usr/lib/libQtGui.so.4
#11 0xb5d70d4c in ?? () from /usr/lib/libQtGui.so.4
#12 0xb5d70f23 in QWidget::update() () from /usr/lib/libQtGui.so.4
#13 0xb5ef356b in ?? () from /usr/lib/libQtGui.so.4
#14 0xb5f9d3ae in QSpinBox::setValue(int) () from /usr/lib/libQtGui.so.4
#15 0xb67aa9ca in KIntNumInput::setValue(int) () from /usr/lib/libkdeui.so.5
#16 0xb774bc26 in KDcrawIface::RIntNumInput::setValue (this=0x87bbe50, v=10) at /home/guenni/tmp/kde4/kdegraphics/libs/libkdcraw/libkdcraw/rnuminput.cpp:115
#17 0x0825023f in Digikam::Sharpen::assignSettings2Widget (this=0x9af8dc0) at /home/guenni/tmp/kde4/graphics/digikam/utilities/queuemanager/basetools/enhance/sharpen.cpp:251
#18 0x0824448a in Digikam::BatchTool::setSettings (this=0x9af8dc0, settings=@0xa8b372cc) at /home/guenni/tmp/kde4/graphics/digikam/utilities/queuemanager/batchtool.cpp:175
#19 0x0821eb06 in Digikam::ActionThread::run (this=0x879bfb8) at /home/guenni/tmp/kde4/graphics/digikam/utilities/queuemanager/actionthread.cpp:191
#20 0xb560585e in ?? () from /usr/lib/libQtCore.so.4
#21 0xb55711b5 in start_thread () from /lib/libpthread.so.0
#22 0xb53b43ae in clone () from /lib/libc.so.6

Thread 1 (Thread 0xb456c700 (LWP 5519)):
[KCrash Handler]
#6  0xb53517d0 in ?? () from /lib/libc.so.6
#7  0xb535388c in malloc () from /lib/libc.so.6
#8  0xb5533147 in operator new(unsigned int) () from /usr/lib/libstdc++.so.6
#9  0xb5cfca8e in QRegion::copy() const () from /usr/lib/libQtGui.so.4
#10 0xb5cfcc35 in QRegion::detach() () from /usr/lib/libQtGui.so.4
#11 0xb5cfd14e in QRegion::translate(int, int) () from /usr/lib/libQtGui.so.4
#12 0xb5cfd222 in QRegion::translated(int, int) const () from /usr/lib/libQtGui.so.4
#13 0xb5bfec35 in QWidgetPrivate::getOpaqueSiblings(QRegion const&) const () from /usr/lib/libQtGui.so.4
#14 0xb5bfec51 in QWidgetPrivate::getOpaqueSiblings(QRegion const&) const () from /usr/lib/libQtGui.so.4
#15 0xb5bfef1c in QWidgetPrivate::subtractOpaqueSiblings(QRegion&, QPoint const&) const () from /usr/lib/libQtGui.so.4
#16 0xb5d70ca7 in ?? () from /usr/lib/libQtGui.so.4
#17 0xb5d70e75 in QWidget::update(QRect const&) () from /usr/lib/libQtGui.so.4
#18 0xb60a9f48 in ?? () from /usr/lib/libQtGui.so.4
#19 0xb60bb4d2 in QTreeView::qt_metacall(QMetaObject::Call, int, void**) () from /usr/lib/libQtGui.so.4
#20 0xb60f3e1a in QTreeWidget::qt_metacall(QMetaObject::Call, int, void**) () from /usr/lib/libQtGui.so.4
#21 0x08223f08 in Digikam::AssignedListView::qt_metacall (this=0x9befa10, _c=QMetaObject::InvokeMetaMethod, _id=87, _a=0xbfed7788)
    at /home/guenni/tmp/kde4/graphics/build/digikam/digikam/assignedlist.moc:81
#22 0xb570a580 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQtCore.so.4
#23 0xb570b302 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
#24 0xb60c47b9 in QItemSelectionModel::currentChanged(QModelIndex const&, QModelIndex const&) () from /usr/lib/libQtGui.so.4
#25 0xb60c495d in QItemSelectionModel::setCurrentIndex(QModelIndex const&, QFlags<QItemSelectionModel::SelectionFlag>) () from /usr/lib/libQtGui.so.4
#26 0xb6076f06 in QAbstractItemView::setCurrentIndex(QModelIndex const&) () from /usr/lib/libQtGui.so.4
#27 0xb60f19d9 in QTreeWidget::setCurrentItem(QTreeWidgetItem*, int) () from /usr/lib/libQtGui.so.4
#28 0xb60f1a1c in QTreeWidget::setCurrentItem(QTreeWidgetItem*) () from /usr/lib/libQtGui.so.4
#29 0x0822129d in Digikam::AssignedListView::setCurrentTool (this=0x9befa10, index=2) at /home/guenni/tmp/kde4/graphics/digikam/utilities/queuemanager/assignedlist.cpp:161
#30 0x0822f1db in Digikam::QueueMgrWindow::slotAction (this=0x9726b98, ad=@0xa475d108) at /home/guenni/tmp/kde4/graphics/digikam/utilities/queuemanager/queuemgrwindow.cpp:903
#31 0x082350ab in Digikam::QueueMgrWindow::qt_metacall (this=0x9726b98, _c=QMetaObject::InvokeMetaMethod, _id=17, _a=0xa129f338)
    at /home/guenni/tmp/kde4/graphics/build/digikam/digikam/queuemgrwindow.moc:122
#32 0xb570371b in QMetaCallEvent::placeMetaCall(QObject*) () from /usr/lib/libQtCore.so.4
#33 0xb5705281 in QObject::event(QEvent*) () from /usr/lib/libQtCore.so.4
#34 0xb5c05114 in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4
#35 0xb5f57ff7 in QMainWindow::event(QEvent*) () from /usr/lib/libQtGui.so.4
#36 0xb679f917 in KMainWindow::event(QEvent*) () from /usr/lib/libkdeui.so.5
#37 0xb67e430c in KXmlGuiWindow::event(QEvent*) () from /usr/lib/libkdeui.so.5
#38 0x08234ed9 in Digikam::QueueMgrWindow::event (this=0x9726b98, e=0xa475cb48) at /home/guenni/tmp/kde4/graphics/digikam/utilities/queuemanager/queuemgrwindow.cpp:1168
#39 0xb5bad8fc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#40 0xb5bb582a in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#41 0xb66c407d in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#42 0xb56f5961 in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#43 0xb56f65d5 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/libQtCore.so.4
#44 0xb56f67cd in QCoreApplication::sendPostedEvents(QObject*, int) () from /usr/lib/libQtCore.so.4
#45 0xb572036f in ?? () from /usr/lib/libQtCore.so.4
#46 0xb4df0e28 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#47 0xb4df4453 in ?? () from /usr/lib/libglib-2.0.so.0
#48 0xb4df45d8 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#49 0xb571ffb8 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#50 0xb5c467c5 in ?? () from /usr/lib/libQtGui.so.4
#51 0xb56f401a in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#52 0xb56f41da in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#53 0xb56f6895 in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4
#54 0xb5bad777 in QApplication::exec() () from /usr/lib/libQtGui.so.4
#55 0x083fd3b9 in main (argc=5, argv=0xbfed8514) at /home/guenni/tmp/kde4/graphics/digikam/digikam/main.cpp:186

Regards,
Guenther
Comment 1 Guenther M. Erhard 2009-10-02 16:56:33 UTC
Sorry forgot to mention the version:
Version 1.0.0-beta5 (rev.: 1029402) compiled from svn.
Comment 2 Dario Andres 2009-10-03 19:48:53 UTC
Mh, weird, the backtrace has two KCrash handlers
Anyways they seem to be Qt4 related issues. - What is your Qt4 version ?
Thanks
Comment 3 Marcel Wiesweg 2009-10-03 20:28:33 UTC
Thread 2 is the problem: Accessing a widget must never happen from non-UI thread!
Gilles, is this a single bug or are more parts of BQM affected?
Comment 4 caulier.gilles 2009-10-03 20:45:58 UTC
Marcel,

I have see the pb in trace, but if i remember, tool settings is passed from GUI threads to tool thread using a simple container... Look BatchToolSet class...

Gilles
Comment 5 Marcel Wiesweg 2009-10-03 21:45:13 UTC
The ActionThread calls BatchTool::setSettings from the thread.
From there assignSettings2Widget() is called. The name of this method implies that a widget is accessed.
Which is the best way to solve this:
1) Changing a widget is not needed at all when called from the thread - remove the call from setSettings() and add this call where appropriate
2) Changing the widget is necessary - emit a signal to a slot assignSettings2Widget().
Comment 6 Guenther M. Erhard 2009-10-03 23:23:21 UTC
(In reply to comment #2)
> Mh, weird, the backtrace has two KCrash handlers
> Anyways they seem to be Qt4 related issues. - What is your Qt4 version ?
> Thanks
Hi,
My qt4 version is 4.4.3

Guenther
Comment 7 caulier.gilles 2009-10-03 23:29:46 UTC
Marcel,

Right. The solution 2/ sound like the best for me...

Gilles
Comment 8 caulier.gilles 2009-10-04 10:46:53 UTC
Marcel,

If i use BatchTool::signalSettingsChanged(const BatchToolSettings&) and connect it to new pure virtual void BatchTool::slotAssignSettings2Widget(const BatchToolSettings&), will be enough ?

Of course, if this case, BatchTool::assignSettings2Widget() method is removed everywhere, and not called from batch thread...

Gilles
Comment 9 Marcel Wiesweg 2009-10-04 15:33:16 UTC
Yes this will be fine.
Comment 10 caulier.gilles 2009-10-04 21:22:40 UTC
SVN commit 1031352 by cgilles:

use internal signal and slot connection to dispatch Batch tool settings to settings widget from children thread to gui thread
Note: I cannot reproduce the original crash here. Please test thisp patch and report if all is fine...
CCBUGS: 209225


 M  +1 -2      basetools/convert/convert2jp2.cpp  
 M  +1 -1      basetools/convert/convert2jp2.h  
 M  +1 -2      basetools/convert/convert2jpeg.cpp  
 M  +1 -1      basetools/convert/convert2jpeg.h  
 M  +1 -2      basetools/convert/convert2pgf.cpp  
 M  +1 -1      basetools/convert/convert2pgf.h  
 M  +1 -2      basetools/convert/convert2png.cpp  
 M  +1 -1      basetools/convert/convert2png.h  
 M  +1 -2      basetools/convert/convert2tiff.cpp  
 M  +1 -1      basetools/convert/convert2tiff.h  
 M  +1 -2      basetools/decorate/watermark.cpp  
 M  +2 -8      basetools/decorate/watermark.h  
 M  +1 -2      basetools/enhance/autocorrection.cpp  
 M  +1 -1      basetools/enhance/autocorrection.h  
 M  +1 -2      basetools/enhance/restoration.cpp  
 M  +1 -1      basetools/enhance/restoration.h  
 M  +1 -2      basetools/enhance/sharpen.cpp  
 M  +3 -3      basetools/enhance/sharpen.h  
 M  +1 -2      basetools/metadata/assigntemplate.cpp  
 M  +1 -1      basetools/metadata/assigntemplate.h  
 M  +1 -1      basetools/transform/flip.cpp  
 M  +1 -1      basetools/transform/flip.h  
 M  +1 -1      basetools/transform/resize.cpp  
 M  +1 -1      basetools/transform/resize.h  
 M  +1 -1      basetools/transform/rotate.cpp  
 M  +1 -1      basetools/transform/rotate.h  
 M  +6 -1      batchtool.cpp  
 M  +5 -5      batchtool.h  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1031352
Comment 11 Guenther M. Erhard 2009-10-07 00:20:06 UTC
(In reply to comment #10)
 
> Please test thisp patch and
> report if all is fine...
> 
Yes this looks good. I've done now about a thousand files in a few batch tool runs without a crash. Tried to minimize the window, put it in background, doing editing in parallel - everything is stable.

Thanks,
Guenther