[Digikam-devel] [digikam] [Bug 323888] Face recognition makes digikam fill all the available memory (Qt SQlite plugin relevant)

Gilles Caulier caulier.gilles at gmail.com
Tue Jul 8 09:11:48 BST 2014


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

--- Comment #86 from Gilles Caulier <caulier.gilles at gmail.com> ---
I just check again digiKam 4.2.0 (current git/master implementation), and i can
confirm the huge memory leak done by Qt Sqlite plugin when face are detected
from image and registered to digiKam Database.

Sound like there is a big problem in Qt Sqlite plugin. See end of valgrind
backtrace below :

==7348== 34,560 bytes in 27 blocks are possibly lost in loss record 26,533 of
26,604
==7348==    at 0x4C266ED: malloc (in
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==7348==    by 0x1F8569A6: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F832189: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F83A317: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F83CDCA: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F83D021: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F8378E8: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F862255: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F86250C: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F864701: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F8649EE: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F8660E4: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348== 
==7348== 44,800 bytes in 35 blocks are possibly lost in loss record 26,540 of
26,604
==7348==    at 0x4C266ED: malloc (in
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==7348==    by 0x1F8569A6: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F832189: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F83A317: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F83CDCA: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F83D021: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F8378E8: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F862255: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F86250C: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F864701: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F864779: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F864867: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348== 
==7348== 64,008 bytes in 1 blocks are possibly lost in loss record 26,549 of
26,604
==7348==    at 0x4C266ED: malloc (in
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==7348==    by 0x1F8569A6: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F832189: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F83A317: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F840AE1: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F8B42A6: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x2D04581E: ??? (in
/usr/lib64/qt4/plugins/sqldrivers/libqsqlite.so)
==7348==    by 0x4E42D60: QSqlDatabase::open() (in
/usr/lib64/libQtSql.so.4.8.6)
==7348==    by 0x7C179D6:
Digikam::DatabaseCoreBackendPrivate::open(QSqlDatabase&)
(databasecorebackend.cpp:214)
==7348==    by 0x7C172C0:
Digikam::DatabaseCoreBackendPrivate::databaseForThread()
(databasecorebackend.cpp:120)
==7348==    by 0x7C1A7A3:
Digikam::DatabaseCoreBackend::open(Digikam::DatabaseParameters const&)
(databasecorebackend.cpp:769)
==7348==    by 0x81D2BD1:
Digikam::DatabaseAccess::checkReadyForUse(Digikam::InitializationObserver*)
(databaseaccess.cpp:286)
==7348== 
==7348== 602,880 bytes in 471 blocks are possibly lost in loss record 26,596 of
26,604
==7348==    at 0x4C266ED: malloc (in
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==7348==    by 0x1F8569A6: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F832189: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F83A317: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F83CDCA: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F83D021: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F8378E8: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F862255: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F86250C: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F864701: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F864779: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F866338: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348== 
==7348== 768,096 bytes in 12 blocks are possibly lost in loss record 26,600 of
26,604
==7348==    at 0x4C266ED: malloc (in
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==7348==    by 0x1F8569A6: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F832189: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F83A317: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F840AE1: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F8B42A6: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x2D04581E: ??? (in
/usr/lib64/qt4/plugins/sqldrivers/libqsqlite.so)
==7348==    by 0x4E42D60: QSqlDatabase::open() (in
/usr/lib64/libQtSql.so.4.8.6)
==7348==    by 0x7C179D6:
Digikam::DatabaseCoreBackendPrivate::open(QSqlDatabase&)
(databasecorebackend.cpp:214)
==7348==    by 0x7C172C0:
Digikam::DatabaseCoreBackendPrivate::databaseForThread()
(databasecorebackend.cpp:120)
==7348==    by 0x7C1D2DD: Digikam::DatabaseCoreBackend::getQuery()
(databasecorebackend.cpp:1512)
==7348==    by 0x7C1CF12: Digikam::DatabaseCoreBackend::prepareQuery(QString
const&) (databasecorebackend.cpp:1467)
==7348== 
==7348== 2,291,200 bytes in 1,790 blocks are possibly lost in loss record
26,603 of 26,604
==7348==    at 0x4C266ED: malloc (in
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==7348==    by 0x1F8569A6: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F832189: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F83A317: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F83CDCA: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F83D021: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F8378E8: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F862255: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F865B53: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F866B26: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F895911: ??? (in /usr/lib64/libsqlite3.so.0.8.6)
==7348==    by 0x1F89655E: sqlite3_step (in /usr/lib64/libsqlite3.so.0.8.6)
==7348== 
==7348== LEAK SUMMARY:
==7348==    definitely lost: 246,004 bytes in 1,710 blocks
==7348==    indirectly lost: 584,784 bytes in 10,817 blocks
==7348==      possibly lost: 4,004,231 bytes in 4,642 blocks
==7348==    still reachable: 21,369,113 bytes in 64,209 blocks
==7348==         suppressed: 0 bytes in 0 blocks
==7348== Reachable blocks (those to which a pointer was found) are not shown.
==7348== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==7348== 
==7348== For counts of detected and suppressed errors, rerun with: -v
==7348== Use --track-origins=yes to see where uninitialised values come from
==7348== ERROR SUMMARY: 1474 errors from 1450 contexts (suppressed: 4 from 3)

Gilles Caulier

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



More information about the Digikam-devel mailing list