https://bugs.kde.org/show_bug.cgi?id=451175

            Bug ID: 451175
           Summary: Krita deadlocks on cancelling an export or save with a
                    configuration dialog
           Product: krita
           Version: git master (please specify the git hash!)
          Platform: Compiled Sources
                OS: Microsoft Windows
            Status: REPORTED
          Severity: major
          Priority: NOR
         Component: General
          Assignee: krita-bugs-n...@kde.org
          Reporter: a...@amyspark.me
  Target Milestone: ---

SUMMARY
***
NOTE: If you are reporting a crash, please try to attach a backtrace with debug
symbols.
See
https://community.kde.org/Guidelines_and_HOWTOs/Debugging/How_to_create_useful_crash_reports
***

After commit 7516fe61f6b22ca79215d4aac39ab9a7288730fe, Krita deadlocks if a
file save or export fires a configuration dialog, and the action gets canceled
from inside it.

This is the deadlock. Check the two instances of KoProgressUpdater, they both
attempt to lock the same mutex.

ntdll.dll!NtWaitForSingleObject() (Origen desconocido:0)
KernelBase.dll!WaitForSingleObjectEx() (Origen desconocido:0)
Qt5Core.dll!00007ffd918baa88() (Origen desconocido:0)
Qt5Core.dll!00007ffd918a3c29() (Origen desconocido:0)
kritawidgetutils.dll!KoProgressUpdater::updateUi() Line 204
(e:\krita-win\src\libs\widgetutils\KoProgressUpdater.cpp:204)
Qt5Core.dll!00007ffd91a71850() (Origen desconocido:0)
[Inline Frame] kritaglobal.dll!KisSignalCompressor::timeout() Line 151
(e:\krita-win\b_msvc\libs\global\kritaglobal_autogen\EWIEGA46WW\moc_kis_signal_compressor.cpp:151)
[Inline Frame] kritaglobal.dll!KisSignalCompressor::tryEmitSignalSafely() Line
195 (e:\krita-win\src\libs\global\kis_signal_compressor.cpp:195)
kritaglobal.dll!KisSignalCompressor::start() Line 115
(e:\krita-win\src\libs\global\kis_signal_compressor.cpp:115)
Qt5Core.dll!00007ffd91a71850() (Origen desconocido:0)
[Inline Frame] kritawidgetutils.dll!KoUpdaterPrivate::sigUpdated() Line 173
(e:\krita-win\b_msvc\libs\widgetutils\kritawidgetutils_autogen\EWIEGA46WW\moc_KoUpdaterPrivate_p.cpp:173)
[Inline Frame] kritawidgetutils.dll!KoUpdaterPrivate::setProgress(int) Line 85
(e:\krita-win\src\libs\widgetutils\KoUpdaterPrivate_p.cpp:85)
kritawidgetutils.dll!KoProgressUpdater::cancel() Line 173
(e:\krita-win\src\libs\widgetutils\KoProgressUpdater.cpp:173)
Qt5Core.dll!00007ffd91a71850() (Origen desconocido:0)
kritaui.dll!KisDocument::startExportInBackground(const QString & actionName,
const QString & location, const QString & realLocation, const QByteArray &
mimeType, bool showWarnings, KisPinnedSharedPtr<KisPropertiesConfiguration>
exportConfiguration, bool isAdvancedExporting) Line 1509
(e:\krita-win\src\libs\ui\KisDocument.cpp:1509)
kritaui.dll!KisDocument::initiateSavingInBackground(const QString actionName,
const QObject * receiverObject, const char * receiverMethod, const
KritaUtils::ExportFileJob & job, KisPinnedSharedPtr<KisPropertiesConfiguration>
exportConfiguration,
std::unique_ptr<KisDocument,std::default_delete<KisDocument>> &&
optionalClonedDocument, bool isAdvancedExporting) Line 1277
(e:\krita-win\src\libs\ui\KisDocument.cpp:1277)
kritaui.dll!KisDocument::initiateSavingInBackground(const QString actionName,
const QObject * receiverObject, const char * receiverMethod, const
KritaUtils::ExportFileJob & job, KisPinnedSharedPtr<KisPropertiesConfiguration>
exportConfiguration, bool isAdvancedExporting) Line 1200
(e:\krita-win\src\libs\ui\KisDocument.cpp:1200)
kritaui.dll!KisDocument::exportDocumentImpl(const KritaUtils::ExportFileJob &
job, KisPinnedSharedPtr<KisPropertiesConfiguration> exportConfiguration, bool
isAdvancedExporting) Line 779 (e:\krita-win\src\libs\ui\KisDocument.cpp:779)
kritaui.dll!KisDocument::exportDocument(const QString & path, const QByteArray
& mimeType, bool isAdvancedExporting, bool showWarnings,
KisPinnedSharedPtr<KisPropertiesConfiguration> exportConfiguration) Line 810
(e:\krita-win\src\libs\ui\KisDocument.cpp:810)
kritaui.dll!KisMainWindow::saveDocument(KisDocument * document, bool saveas,
bool isExporting, bool isAdvancedExporting) Line 1370
(e:\krita-win\src\libs\ui\KisMainWindow.cpp:1370)


STEPS TO REPRODUCE
1. Open an image in Krita.
2. Try to export it to e.g. HEIF or TIFF.
3. Cancel the export configuration dialog.

OBSERVED RESULT
Krita ceases to respond.

EXPECTED RESULT
The export is successfully canceled.


SOFTWARE/OS VERSIONS
Windows: 10 21H2
macOS: 
Linux/KDE Plasma: 
(available in About System)
KDE Plasma Version: 
KDE Frameworks Version: 
Qt Version: 5.12.12

ADDITIONAL INFORMATION
commit hash aa0ef82a89056484323f00bd9c22c42aff3a69b0

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to