[Digikam-devel] [digikam] [Bug 323253] When face tag scanning, digikam exhausts all memory on computer.

Kristian Karl kristian.hermann.karl at gmail.com
Thu Aug 8 11:12:07 BST 2013


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

--- Comment #5 from Kristian Karl <kristian.hermann.karl at gmail.com> ---
Some more data:
I uncommented kDebug extra/libkface/libkface/database/trainingdb.cpp:297
and it prints 10680 histograms. Is this a realistic number of histograms to
store?
:
digikam(9826)/KFACE KFaceIface::TrainingDB::lbphFaceModel: Adding histogram
10676 identity 19 size 65536
digikam(9826)/KFACE KFaceIface::TrainingDB::lbphFaceModel: Adding histogram
10677 identity 19 size 65536
digikam(9826)/KFACE KFaceIface::TrainingDB::lbphFaceModel: Adding histogram
10678 identity 19 size 65536
digikam(9826)/KFACE KFaceIface::TrainingDB::lbphFaceModel: Adding histogram
10679 identity 19 size 65536
digikam(9826)/KFACE KFaceIface::TrainingDB::lbphFaceModel: Adding histogram
10680 identity 19 size 65536
:

The memory gets exhausted, later, when converting the the histograms to [yaml]
cv::String, at:
extra/libkface/libkface/recognition-opencv-lbph/lbphfacemodel.cpp:153

I compiled a debug version of latest opencv, and the amount of bytes that gets
allocated to the string ends up at some 1691131415 bytes.
I got the value from variable size_t len, at opencv2/core/cvstd.hpp:565

I found that the memory gets exhausted in the while loop in
opencv2/core/cvstd.hpp between lines 567 and 571

#0 cv::String::String<std::_Deque_iterator<char, char&, char*> >() at
/home/krikar/dev/opencv/modules/core/include/opencv2/core/cvstd.hpp:566
#1 icvClose() at /home/krikar/dev/opencv/modules/core/src/persistence.cpp:545
#2 cv::FileStorage::releaseAndGetString() at
/home/krikar/dev/opencv/modules/core/src/persistence.cpp:5173
#3 KFaceIface::LBPHFaceModel::setHistograms() at
/home/krikar/dev/kde/digikam/extra/libkface/libkface/recognition-opencv-lbph/lbphfacemodel.cpp:153
#4 KFaceIface::TrainingDB::lbphFaceModel() at
/home/krikar/dev/kde/digikam/extra/libkface/libkface/database/trainingdb.cpp:303
#5 lbph() at
/home/krikar/dev/kde/digikam/extra/libkface/libkface/recognition-opencv-lbph/opencvlbphfacerecognizer.cpp:67
#6 KFaceIface::OpenCVLBPHFaceRecognizer::recognize() at
/home/krikar/dev/kde/digikam/extra/libkface/libkface/recognition-opencv-lbph/opencvlbphfacerecognizer.cpp:153
#7 KFaceIface::RecognitionDatabase::recognizeFaces() at
/home/krikar/dev/kde/digikam/extra/libkface/libkface/recognitiondatabase.cpp:620
#8 KFaceIface::RecognitionDatabase::recognizeFaces() at
/home/krikar/dev/kde/digikam/extra/libkface/libkface/recognitiondatabase.cpp:594
#9 Digikam::RecognitionWorker::process() at
/home/krikar/dev/kde/digikam/core/utilities/facemanagement/facepipeline.cpp:594
#10 Digikam::RecognitionWorker::qt_static_metacall() at
/home/krikar/dev/kde/digikam/build/core/digikam/facepipeline_p.moc:406
#11 QObject::event(QEvent*)() at /lib64/libQtCore.so.4
#12 QApplicationPrivate::notify_helper(QObject*, QEvent*)() at
/lib64/libQtGui.so.4
#13 QApplication::notify(QObject*, QEvent*)() at /lib64/libQtGui.so.4
#14 KApplication::notify(QObject*, QEvent*)() at /lib64/libkdeui.so.5
#15 QCoreApplication::notifyInternal(QObject*, QEvent*)() at
/lib64/libQtCore.so.4
#16 QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*)() at
/lib64/libQtCore.so.4
#17 postEventSourceDispatch(_GSource*, int (*)(void*), void*)() at
/lib64/libQtCore.so.4
#18 g_main_context_dispatch() at /lib64/libglib-2.0.so.0
#19 g_main_context_iterate.isra.22() at /lib64/libglib-2.0.so.0
#20 g_main_context_iteration() at /lib64/libglib-2.0.so.0

-- 
You are receiving this mail because:
You are the assignee for the bug.



More information about the Digikam-devel mailing list