Bug 450518 - Crash when opening Advanced Search
Summary: Crash when opening Advanced Search
Status: RESOLVED FIXED
Alias: None
Product: digikam
Classification: Applications
Component: Searches-Advanced (other bugs)
Version First Reported In: 8.0.0
Platform: Other Linux
: NOR crash
Target Milestone: ---
Assignee: Digikam Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-02-18 13:22 UTC by Kristian Karl
Modified: 2022-02-18 17:22 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In: 8.0.0
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Kristian Karl 2022-02-18 13:22:42 UTC
SUMMARY
When opening the Advanced Search dialog, Digikam crashes for me

STEPS TO REPRODUCE
1. Start Digikam
2. Open the Advanced Search dialog

OBSERVED RESULT
Digikam crashes. 

Thread 1 "digikam" received signal SIGSEGV, Segmentation fault.
0x00007ffff4d766d2 in QObject::setObjectName(QString const&) () from /lib/x86_64-linux-gnu/libQt5Core.so.5
(gdb) bt
#0  0x00007ffff4d766d2 in QObject::setObjectName(QString const&) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#1  0x00007ffff7a9c7c4 in Digikam::SearchFieldChoice::setupValueWidgets(QGridLayout*, int, int) (this=0x55555708d330, layout=0x555556cd3370, row=3, column=3)
    at /home/krikar/dev/kde/digikam/core/utilities/searchwindow/searchfields.cpp:2184
#2  0x00007ffff7a97c54 in Digikam::SearchField::setup(QGridLayout*, int) (this=0x55555708d330, layout=0x555556cd3370, line=3)
    at /home/krikar/dev/kde/digikam/core/utilities/searchwindow/searchfields.cpp:1066
#3  0x00007ffff7a84be4 in Digikam::SearchFieldGroup::addField(Digikam::SearchField*) (this=0x555556298fd0, field=0x55555708d330)
    at /home/krikar/dev/kde/digikam/core/utilities/searchwindow/searchfieldgroup.cpp:64
#4  0x00007ffff7a7e927 in Digikam::SearchGroup::setup(Digikam::SearchGroup::Type) (this=0x5555563e9700, type=Digikam::SearchGroup::FirstGroup)
    at /home/krikar/dev/kde/digikam/core/utilities/searchwindow/searchgroup.cpp:104
#5  0x00007ffff7a77335 in Digikam::SearchView::createSearchGroup() (this=0x55555783c010) at /home/krikar/dev/kde/digikam/core/utilities/searchwindow/searchview.cpp:280
#6  0x00007ffff7a7657d in Digikam::AbstractSearchGroupContainer::addSearchGroup() (this=0x55555783c010)
    at /home/krikar/dev/kde/digikam/core/utilities/searchwindow/searchview.cpp:63
#7  0x00007ffff7a76dd6 in Digikam::SearchView::setup() (this=0x55555783c010) at /home/krikar/dev/kde/digikam/core/utilities/searchwindow/searchview.cpp:205
#8  0x00007ffff7a75378 in Digikam::SearchWindow::SearchWindow() (this=0x5555569b0200) at /home/krikar/dev/kde/digikam/core/utilities/searchwindow/searchwindow.cpp:82
#9  0x00007ffff7aae6f1 in Digikam::SearchTabHeader::searchWindow() const (this=0x5555577d20a0)
    at /home/krikar/dev/kde/digikam/core/utilities/searchwindow/searchtabheader.cpp:426
#10 0x00007ffff7aaee16 in Digikam::SearchTabHeader::newAdvancedSearch() (this=0x5555577d20a0) at /home/krikar/dev/kde/digikam/core/utilities/searchwindow/searchtabheader.cpp:515
#11 0x00007ffff7a723fa in Digikam::SearchTabHeader::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)
    (_o=0x5555577d20a0, _c=QMetaObject::InvokeMetaMethod, _id=4, _a=0x7fffffffcb60)
    at /home/krikar/dev/kde/digikam/build/core/utilities/searchwindow/gui_searchwindow_obj_autogen/EWIEGA46WW/moc_searchtabheader.cpp:128
#12 0x00007ffff4d7d1f0 in  () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#13 0x00007ffff5919fb6 in QAbstractButton::clicked(bool) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#14 0x00007ffff591a1de in  () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#15 0x00007ffff591b6b3 in  () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#16 0x00007ffff591b875 in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#17 0x00007ffff5864cf6 in QWidget::event(QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#18 0x00007ffff59c0283 in QPushButton::event(QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#19 0x00007ffff5821dc3 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#20 0x00007ffff582ae77 in QApplication::notify(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#21 0x00007ffff4d4619a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#22 0x00007ffff582a0a7 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) ()
    at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#23 0x00007ffff587fed4 in  () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#24 0x00007ffff58831f4 in  () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#25 0x00007ffff5821dc3 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#26 0x00007ffff582abb8 in QApplication::notify(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#27 0x00007ffff4d4619a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#28 0x00007ffff512a4d8 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () at /lib/x86_64-linux-gnu/libQt5Gui.so.5
#29 0x00007ffff512bb45 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () at /lib/x86_64-linux-gnu/libQt5Gui.so.5
#30 0x00007ffff51037ac in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/x86_64-linux-gnu/libQt5Gui.so.5
#31 0x00007fffd2ac4ffe in  () at /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#32 0x00007fffe592b17d in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#33 0x00007fffe592b400 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0

EXPECTED RESULT
The Advanced Search dialog should be opened.

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: KDE neon 5.24
KDE Plasma Version: 5.24.1
KDE Frameworks Version: 5.91.0
Qt Version: 5.15.3
Digikam built from sources (879b7a80be6525b77741df2f9afc9bbeee20fa9c)

ADDITIONAL INFORMATION
It seems to me as the label (in method SearchFieldChoice::setupValueWidgets) is never created after setting the model.
m_comboBox->m_label is NULL when the crash happens.
Changing the setModel to setSearchModel appears to fix the crash, see patch below.

diff --git a/core/utilities/searchwindow/searchfields.cpp b/core/utilities/searchwindow/searchfields.cpp
index 058c08493b..677db67cd7 100644
--- a/core/utilities/searchwindow/searchfields.cpp
+++ b/core/utilities/searchwindow/searchfields.cpp
@@ -2173,7 +2173,7 @@ void SearchFieldChoice::setupValueWidgets(QGridLayout* layout, int row, int colu
     connect(m_model, SIGNAL(checkStateChanged(QVariant,bool)),
             this, SLOT(checkStateChanged()));
 
-    m_comboBox->setModel(m_model);
+    m_comboBox->setSearchModel(m_model);
 
     // set object name for style sheet
Comment 1 caulier.gilles 2022-02-18 17:19:32 UTC
Right. This is due to mys last changes to rename internal method setModel to setSearchModel to prevent hidden redefintion of functions with Qt API. Sounds like i forget to rename this call...

Gilles
Comment 2 caulier.gilles 2022-02-18 17:22:15 UTC
Git commit bd50917da8c01492fdc5916f49d21598f39203a3 by Gilles Caulier.
Committed on 18/02/2022 at 17:21.
Pushed by cgilles into branch 'master'.

Fix crash due to wrong called method to setup search model.
FIXED-IN: 8.0.0

M  +1    -1    core/utilities/searchwindow/searchfields.cpp

https://invent.kde.org/graphics/digikam/commit/bd50917da8c01492fdc5916f49d21598f39203a3