Summary: | Crash when running batch queue in background | ||
---|---|---|---|
Product: | [Applications] digikam | Reporter: | Guenther M. Erhard <guenther-digikam> |
Component: | BatchQueueManager-Workflow | Assignee: | Digikam Developers <digikam-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | andresbajotierra, caulier.gilles, marcel.wiesweg |
Priority: | NOR | ||
Version: | 1.0.0 | ||
Target Milestone: | --- | ||
Platform: | openSUSE | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | 1.0.0 | |
Sentry Crash Report: |
Description
Guenther M. Erhard
2009-10-02 16:54:41 UTC
Sorry forgot to mention the version: Version 1.0.0-beta5 (rev.: 1029402) compiled from svn. Mh, weird, the backtrace has two KCrash handlers Anyways they seem to be Qt4 related issues. - What is your Qt4 version ? Thanks 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? 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 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(). (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 Marcel, Right. The solution 2/ sound like the best for me... Gilles 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 Yes this will be fine. 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 (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 |