Bug 457972

Summary: digiKam Crash when select multiple files and add to cue to batch process
Product: [Applications] digikam Reporter: mg
Component: BatchQueueManager-CoreAssignee: Digikam Developers <digikam-bugs-null>
Status: RESOLVED FIXED    
Severity: crash CC: amantia, caulier.gilles, metzpinguin
Priority: NOR Keywords: drkonqi
Version: 7.7.0   
Target Milestone: ---   
Platform: openSUSE   
OS: Linux   
Latest Commit: Version Fixed In: 7.8.0
Sentry Crash Report:

Description mg 2022-08-16 21:18:34 UTC
Application: digikam (7.7.0)

Qt Version: 5.15.5
Frameworks Version: 5.96.0
Operating System: Linux 5.19.1-1-default x86_64
Windowing System: X11
Distribution: openSUSE Tumbleweed
DrKonqi: 5.25.4 [KCrashBackend]

-- Information about the crash:
selected 2 images and added it to actual cue to batch process

The reporter is unsure if this crash is reproducible.

-- Backtrace:
Application: digiKam (digikam), signal: Segmentation fault

[KCrash Handler]
#4  0x00007ff7113a782b in QTreeView::drawRow(QPainter*, QStyleOptionViewItem const&, QModelIndex const&) const () from /lib64/libQt5Widgets.so.5
#5  0x00007ff7113ab7f9 in QTreeView::drawTree(QPainter*, QRegion const&) const () from /lib64/libQt5Widgets.so.5
#6  0x00007ff7113b2234 in QTreeView::paintEvent(QPaintEvent*) () from /lib64/libQt5Widgets.so.5
#7  0x00007ff71110ac68 in QWidget::event(QEvent*) () from /lib64/libQt5Widgets.so.5
#8  0x00007ff7111b659e in QFrame::event(QEvent*) () from /lib64/libQt5Widgets.so.5
#9  0x00007ff710518d3b in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /lib64/libQt5Core.so.5
#10 0x00007ff7110c940e in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib64/libQt5Widgets.so.5
#11 0x00007ff710518fb8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /lib64/libQt5Core.so.5
#12 0x00007ff711102fc5 in QWidgetPrivate::sendPaintEvent(QRegion const&) () from /lib64/libQt5Widgets.so.5
#13 0x00007ff711103881 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /lib64/libQt5Widgets.so.5
#14 0x00007ff711104b86 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /lib64/libQt5Widgets.so.5
#15 0x00007ff7111049e9 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /lib64/libQt5Widgets.so.5
#16 0x00007ff7111034fc in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /lib64/libQt5Widgets.so.5
#17 0x00007ff711104b86 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /lib64/libQt5Widgets.so.5
#18 0x00007ff7111034fc in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /lib64/libQt5Widgets.so.5
#19 0x00007ff711104b86 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /lib64/libQt5Widgets.so.5
#20 0x00007ff7111049e9 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /lib64/libQt5Widgets.so.5
#21 0x00007ff7111034fc in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /lib64/libQt5Widgets.so.5
#22 0x00007ff711104b86 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /lib64/libQt5Widgets.so.5
#23 0x00007ff7111034fc in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /lib64/libQt5Widgets.so.5
#24 0x00007ff711104b86 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /lib64/libQt5Widgets.so.5
#25 0x00007ff7111049e9 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /lib64/libQt5Widgets.so.5
#26 0x00007ff7111049e9 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /lib64/libQt5Widgets.so.5
#27 0x00007ff7111034fc in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /lib64/libQt5Widgets.so.5
#28 0x00007ff711104b86 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /lib64/libQt5Widgets.so.5
#29 0x00007ff7111049e9 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /lib64/libQt5Widgets.so.5
#30 0x00007ff7111034fc in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /lib64/libQt5Widgets.so.5
#31 0x00007ff711104b86 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /lib64/libQt5Widgets.so.5
#32 0x00007ff7111034fc in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /lib64/libQt5Widgets.so.5
#33 0x00007ff711104b86 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /lib64/libQt5Widgets.so.5
#34 0x00007ff7111049e9 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /lib64/libQt5Widgets.so.5
#35 0x00007ff7111049e9 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /lib64/libQt5Widgets.so.5
#36 0x00007ff7111049e9 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /lib64/libQt5Widgets.so.5
#37 0x00007ff7111034fc in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /lib64/libQt5Widgets.so.5
#38 0x00007ff7110da5f5 in ?? () from /lib64/libQt5Widgets.so.5
#39 0x00007ff7110dadea in ?? () from /lib64/libQt5Widgets.so.5
#40 0x00007ff7111272cc in ?? () from /lib64/libQt5Widgets.so.5
#41 0x00007ff7110c941e in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib64/libQt5Widgets.so.5
#42 0x00007ff710518fb8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /lib64/libQt5Core.so.5
#43 0x00007ff71097ad2d in QGuiApplicationPrivate::processExposeEvent(QWindowSystemInterfacePrivate::ExposeEvent*) () from /lib64/libQt5Gui.so.5
#44 0x00007ff71094d33c in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQt5Gui.so.5
#45 0x00007ff676e607fa in ?? () from /lib64/libQt5XcbQpa.so.5
#46 0x00007ff702f3fea0 in g_main_context_dispatch () from /lib64/libglib-2.0.so.0
#47 0x00007ff702f40258 in ?? () from /lib64/libglib-2.0.so.0
#48 0x00007ff702f402ec in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#49 0x00007ff710570456 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQt5Core.so.5
#50 0x00007ff710517a2b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQt5Core.so.5
#51 0x00007ff71051fb96 in QCoreApplication::exec() () from /lib64/libQt5Core.so.5
#52 0x000056152654898b in ?? ()
#53 0x00007ff70fe015b0 in __libc_start_call_main () from /lib64/libc.so.6
#54 0x00007ff70fe01679 in __libc_start_main_impl () from /lib64/libc.so.6
#55 0x00005615265498b5 in ?? ()
[Inferior 1 (process 2742) detached]

The reporter indicates this bug may be a duplicate of or related to bug 457693.

Reported using DrKonqi
Comment 1 caulier.gilles 2022-08-16 21:30:04 UTC
Maik, it's probably the same problem than Delete Dialog that you fix few days ago...

Gilles
Comment 2 Maik Qualmann 2022-08-16 21:33:40 UTC
This is a Qt bug in current Qt-5.15.5. This problem occurs on openSUSE Tumbleweed and Gentoo when a QTreeWidget does not have Uniform Row Heights set to true. We can do a workaround here, but the problem needs to be fixed in Qt, please report the problem to openSUSE with the link to here.

Maik
Comment 3 Maik Qualmann 2022-08-16 21:38:03 UTC
Yes, Gilles it should be the same problem. I can't reproduce it with the BQM at the moment, but as a test with the Delete Dialog immediately if the Uniform Row Heights are set to false. Although it is generally a good idea to set the Uniform Row Heights to true for performance reasons, it must not crash.

Maik
Comment 4 Maik Qualmann 2022-08-17 06:22:35 UTC
Git commit 8bb5ef5f4dce76392e824459748dfa24f5e32b6d by Maik Qualmann.
Committed on 17/08/2022 at 06:20.
Pushed by mqualmann into branch 'qt5-maintenance'.

set uniform row heights to all possible QTreeWidgets
This is a workaround for a bug in Qt-5.15.5
Related: bug 457693
FIXED-IN: 7.8.0

M  +2    -1    NEWS
M  +2    -1    core/dplugins/generic/tools/expoblending/blendingdlg/bracketstack.cpp
M  +2    -1    core/dplugins/generic/tools/expoblending/blendingdlg/enfusestack.cpp
M  +1    -0    core/libs/dimg/filters/hotpixels/blackframelistview.cpp
M  +1    -0    core/libs/dplugins/setup/dpluginconfview.cpp
M  +1    -0    core/libs/dplugins/widgets/ditemslist_view.cpp
M  +1    -0    core/libs/progressmanager/dhistoryview.cpp
M  +2    -1    core/libs/template/templatelist.cpp
M  +2    -1    core/libs/widgets/files/dbinarysearch.cpp
M  +1    -0    core/libs/widgets/metadata/config/metadataselector.cpp
M  +1    -0    core/libs/widgets/metadata/exiftool/exiftoollistview.cpp
M  +1    -0    core/libs/widgets/metadata/exiv2/metadatalistview.cpp
M  +1    -0    core/showfoto/folderview/showfotofolderviewbookmarklist.cpp
M  +1    -0    core/showfoto/stackview/showfotostackviewfavoritelist.cpp
M  +4    -3    core/showfoto/stackview/showfotostackviewlist.cpp
M  +1    -0    core/tests/geolocation/geoiface/demo/mytreewidget.cpp
M  +3    -2    core/utilities/advancedrename/parser/options/database/dbkeyselector.cpp
M  +3    -3    core/utilities/fuzzysearch/findduplicatesalbum.cpp
M  +3    -2    core/utilities/import/dialogs/cameramessagebox.cpp
M  +3    -2    core/utilities/import/views/camerafolderview.cpp
M  +2    -1    core/utilities/queuemanager/views/assignedlist.cpp
M  +6    -5    core/utilities/queuemanager/views/queuelist.cpp
M  +1    -0    core/utilities/queuemanager/views/toolslistview.cpp
M  +2    -1    core/utilities/queuemanager/views/workflowlist.cpp

https://invent.kde.org/graphics/digikam/commit/8bb5ef5f4dce76392e824459748dfa24f5e32b6d
Comment 5 Maik Qualmann 2022-08-17 17:25:04 UTC
Git commit f7843a237932589656c73d6bd226f6c554a3a8e9 by Maik Qualmann.
Committed on 17/08/2022 at 17:23.
Pushed by mqualmann into branch 'qt5-maintenance'.

set uniform row heights also to QTreeViews
Related: bug 457693

M  +2    -1    core/app/views/tableview/tableview_treeview.cpp
M  +1    -0    core/libs/dialogs/dconfigdlgview_p.cpp
M  +1    -0    core/libs/properties/history/versionstreeview.cpp
M  +1    -0    core/libs/tags/manager/models/tagmngrlistview.cpp
M  +1    -0    core/showfoto/folderview/showfotofolderviewlist.cpp
M  +1    -1    core/utilities/geolocation/geoiface/items/gpsitemlist.cpp
M  +2    -1    core/utilities/setup/collections/setupcollectionview.cpp

https://invent.kde.org/graphics/digikam/commit/f7843a237932589656c73d6bd226f6c554a3a8e9
Comment 6 Maik Qualmann 2022-08-21 10:10:55 UTC
*** Bug 458138 has been marked as a duplicate of this bug. ***