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
Git commit 8f335dfa461857bf32a3aebdcf65d4a6a3c103d6 by Dmitry Kazakov. Committed on 14/03/2022 at 11:55. Pushed by dkazakov into branch 'master'. Fix a deadlock when cancelling save dialog for a PSD file M +10 -5 libs/widgetutils/KoProgressUpdater.cpp https://invent.kde.org/graphics/krita/commit/8f335dfa461857bf32a3aebdcf65d4a6a3c103d6