Bug 495011

Summary: digiKam crash when making "search faces" on an image.
Product: [Applications] digikam Reporter: pascal lacroix <kikoucalou>
Component: Faces-DetectionAssignee: Digikam Developers <digikam-bugs-null>
Status: RESOLVED FIXED    
Severity: crash CC: caulier.gilles
Priority: NOR    
Version First Reported In: 8.5.0   
Target Milestone: ---   
Platform: Mint (Debian based)   
OS: Linux   
Latest Commit: Version Fixed/Implemented In: 8.5.0
Sentry Crash Report:

Description pascal lacroix 2024-10-18 22:23:05 UTC
Digikam crash when making "search faces" on an image

BT :

Thread 97 "Thread (pooled)" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fff820006c0 (LWP 983604)]
Digikam::DNNFaceDetectorYOLO::loadModels (this=0x7fff34021eb0)
    at /mnt/2c98cfab-4320-4ff2-b8d7-f2da522cc741/digikam-devel/dk-2024-09-05/digikam/core/libs/facesengine/detection/opencv-dnn/dnnfacedetectoryolo.cpp:55
warning: Source file is more recent than executable.
55	    if (!model->modelLoaded)
(gdb) bt
#0  Digikam::DNNFaceDetectorYOLO::loadModels (this=0x7fff34021eb0)
    at /mnt/2c98cfab-4320-4ff2-b8d7-f2da522cc741/digikam-devel/dk-2024-09-05/digikam/core/libs/facesengine/detection/opencv-dnn/dnnfacedetectoryolo.cpp:55
#1  0x00007ffff60d0077 in Digikam::DNNFaceDetectorYOLO::DNNFaceDetectorYOLO
    (this=0x7fff34021eb0)
    at /mnt/2c98cfab-4320-4ff2-b8d7-f2da522cc741/digikam-devel/dk-2024-09-05/digikam/core/libs/facesengine/detection/opencv-dnn/dnnfacedetectoryolo.cpp:48
#2  0x00007ffff60cb278 in Digikam::OpenCVDNNFaceDetector::OpenCVDNNFaceDetector
    (this=0x7fff34009740, model=Digikam::DNNDetectorYOLOv3)
    at /mnt/2c98cfab-4320-4ff2-b8d7-f2da522cc741/digikam-devel/dk-2024-09-05/digikam/core/libs/facesengine/detection/opencv-dnn/opencvdnnfacedetector.cpp:51
#3  0x00007ffff60c9eae in Digikam::FaceDetector::Private::backend
    (this=0x5555696e3550)
    at /mnt/2c98cfab-4320-4ff2-b8d7-f2da522cc741/digikam-devel/dk-2024-09-05/digikam/core/libs/facesengine/detection/facedetector.cpp:60
#4  0x00007ffff60ca126 in Digikam::FaceDetector::Private::applyParameters
    (this=0x5555696e3550)
    at /mnt/2c98cfab-4320-4ff2-b8d7-f2da522cc741/digikam-devel/dk-2024-09-05/digikam/core/libs/facesengine/detection/facedetector.cpp:89
#5  0x00007ffff60c97a0 in Digikam::FaceDetector::setParameters
    (this=0x5555696e3878, parameters=...)
    at /mnt/2c98cfab-4320-4ff2-b8d7-f2da522cc741/digikam-devel/dk-2024-09-05/digikam/core/libs/facesengine/detection/facedetector.cpp:252
--Type <RET> for more, q to quit, c to continue without paging--
#6  0x00007ffff7a38b47 in Digikam::DetectionWorker::setAccuracyAndModel
    (this=0x5555696e3860, detectAccuracy=0.76000000000000001, detectModel=Digikam::FaceScanSettings::YOLOv3, detectSize=Digikam::FaceScanSettings::Medium, recognizeAccuracy=0.75, recognizeModel=Digikam::FaceScanSettings::SFace)
    at /mnt/2c98cfab-4320-4ff2-b8d7-f2da522cc741/digikam-devel/dk-2024-09-05/digikam/core/utilities/facemanagement/workers/detectionworker.cpp:79
#7  0x00007ffff7a38d64 in Digikam::DetectionWorker::qt_static_metacall
    (_o=0x5555696e3860, _c=QMetaObject::InvokeMetaMethod, _id=2, _a=0x5555696dd290)
    at /mnt/2c98cfab-4320-4ff2-b8d7-f2da522cc741/digikam-devel/dk-2024-09-05/digikam/build/core/utilities/facemanagement/gui_facemanagement_obj_autogen/include/moc_detectionworker.cpp:101
#8  0x00007ffff4306343 in QObject::event(QEvent*) ()
    at /lib/x86_64-linux-gnu/libQt5Core.so.5
#9  0x00007ffff5ce592f in Digikam::WorkerObject::event
    (this=0x5555696e3860, e=0x55556964e330)
    at /mnt/2c98cfab-4320-4ff2-b8d7-f2da522cc741/digikam-devel/dk-2024-09-05/digikam/core/libs/threads/workerobject.cpp:163
#10 0x00007ffff4f6bd45 in QApplicationPrivate::notify_helper(QObject*, QEvent*)
    () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#11 0x00007ffff42d8118 in QCoreApplication::notifyInternal2(QObject*, QEvent*)
    () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#12 0x00007ffff42db94b in QCoreApplicationPrivate::sendPostedEvents(QObject*, in--Type <RET> for more, q to quit, c to continue without paging--
t, QThreadData*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#13 0x00007ffff4335c0f in ??? () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#14 0x00007fffec1d75b5 in ??? () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#15 0x00007fffec236717 in ??? () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#16 0x00007fffec1d6a53 in g_main_context_iteration ()
    at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#17 0x00007ffff4335279 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#18 0x00007ffff42d6a7b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#19 0x00007ffff5ce36fd in Digikam::WorkerObjectRunnable::run
    (this=0x555569790e40)
    at /mnt/2c98cfab-4320-4ff2-b8d7-f2da522cc741/digikam-devel/dk-2024-09-05/digikam/core/libs/threads/threadmanager.cpp:198
#20 0x00007ffff40deab9 in ??? () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#21 0x00007ffff40db674 in ??? () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#22 0x00007ffff389ca94 in start_thread (arg=<optimized out>)
    at ./nptl/pthread_create.c:447
#23 0x00007ffff3929c3c in clone3 ()
    at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
(gdb) 


STEPS TO REPRODUCE
1. select an image on album
2. resquest "search faces" on image

3. Digikam crash ...

Note when starting: $ digikam
"digikam.facedb: Faces recognition feature cannot be used!
kf.xmlgui: Unhandled container to remove :  Digikam::DigikamApp
Ouverture dans une session de navigateur existante."


SOFTWARE/OS VERSIONS
ThinkStation-S30 Kernel: 6.8.0-47-generic arch: x86_64 bits: 64
  Desktop: Cinnamon v: 6.2.9 Distro: Linux Mint 22 Wilma

Operating System: Linux Mint 22
KDE Plasma Version: 5.27.11
KDE Frameworks Version: 5.115.0
Qt Version: 5.15.13
Kernel Version: 6.8.0-47-generic (64-bit)
Graphics Platform: offscreen
Processors: 16 × Intel® Xeon® CPU E5-2690 0 @ 2.90GHz
Memory: 31.3 Gio of RAM
Graphics Processor: Quadro M4000/PCIe/SSE2

ADDITIONAL INFORMATION

Revision =
https://invent.kde.org/graphics/digikam/commit/15ac7ff827a2a16dd3117e6e4f902a25b1026741
Comment 1 caulier.gilles 2024-10-19 03:58:41 UTC
It crash probably because 'model' is null at core/libs/facesengine/detection/opencv-dnn/dnnfacedetectoryolo.cpp:55 :

if (!model->modelLoaded)

There is no check in this case. I will do it.

Q: If the model is not found, probably the file have been not downloaded from Internet first. Please GO to Setup/Miscs/System and press on "Download Binary data" button.

Gilles Caulier
Comment 2 caulier.gilles 2024-10-19 05:09:29 UTC
Git commit acb410907dd3ec3a82d0acbdd72b6619c2f88e2d by Gilles Caulier.
Committed on 19/10/2024 at 05:06.
Pushed by cgilles into branch 'master'.

Add new debug space for dnn model manager.
Add more warnings and critical debug traces if model files|pathes cannot be found.
Prevent crash if model pointer returned by DNNModelManager is null.

M  +1    -0    core/app/utils/digikam_debug.cpp
M  +1    -0    core/app/utils/digikam_debug.h
M  +18   -10   core/libs/dnnmodelmanager/dnnmodelbase.cpp
M  +10   -1    core/libs/dnnmodelmanager/dnnmodelbase.h
M  +6    -1    core/libs/dnnmodelmanager/dnnmodelconfig.h
M  +12   -4    core/libs/dnnmodelmanager/dnnmodelmanager.cpp
M  +1    -0    core/libs/dnnmodelmanager/dnnmodelmanager.h
M  +2    -5    core/libs/dnnmodelmanager/dnnmodelnet.cpp
M  +6    -1    core/libs/dnnmodelmanager/dnnmodelnet.h
M  +5    -1    core/libs/dnnmodelmanager/dnnmodelsface.h
M  +5    -1    core/libs/dnnmodelmanager/dnnmodelyunet.h
M  +10   -3    core/libs/facesengine/detection/opencv-dnn/dnnfacedetectorssd.cpp
M  +10   -3    core/libs/facesengine/detection/opencv-dnn/dnnfacedetectoryolo.cpp
M  +8    -5    core/libs/facesengine/detection/opencv-dnn/dnnfacedetectoryunet.cpp
M  +5    -4    core/libs/facesengine/recognition/opencv-dnn/dnnsfaceextractor.cpp
M  +2    -2    core/libs/tags/autoassignment/model/dnnresnetdetector.cpp
M  +3    -1    core/libs/tags/autoassignment/model/dnnyolodetector.cpp

https://invent.kde.org/graphics/digikam/-/commit/acb410907dd3ec3a82d0acbdd72b6619c2f88e2d
Comment 3 caulier.gilles 2024-10-19 05:11:57 UTC
Pascal, 

Even if dnn model files are not taken from the Internet, with my last commit, digiKam must don't crash.
Of course the DNN features will be not usable. Models must be downloaded on your computer.

Gilles Caulier
Comment 4 caulier.gilles 2024-10-19 05:37:27 UTC
Git commit 1048f5794c6ce4219699a4348339420291110198 by Gilles Caulier.
Committed on 19/10/2024 at 05:36.
Pushed by cgilles into branch 'master'.

dnnmodel.conf: try first the roaming path from user dir, else fail back on system path

M  +11   -1    core/libs/dnnmodelmanager/dnnmodelmanager.cpp

https://invent.kde.org/graphics/digikam/-/commit/1048f5794c6ce4219699a4348339420291110198
Comment 5 pascal lacroix 2024-10-19 06:50:11 UTC
Solved on Revision https://invent.kde.org/graphics/digikam/commit/1048f5794c6ce4219699a4348339420291110198

Some modeles files have been downloaded, working fine now.

Thanks
Comment 6 caulier.gilles 2024-10-19 08:59:16 UTC
Git commit 8629321e8424ddb89e8224c8fa97fbdff4147298 by Gilles Caulier.
Committed on 19/10/2024 at 08:57.
Pushed by cgilles into branch 'master'.

Use right suffix with QStandardPaths::AppDataLocation
FIXED-IN: 8.5.0

M  +1    -12   core/libs/dnnmodelmanager/dnnmodelmanager.cpp

https://invent.kde.org/graphics/digikam/-/commit/8629321e8424ddb89e8224c8fa97fbdff4147298