[Digikam-devel] [digikam] [Bug 326525] Severe memory leak during maintainance scan for rebuild thumbnails

Gilles Caulier caulier.gilles at gmail.com
Thu Nov 7 14:29:28 GMT 2013


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

--- Comment #54 from Gilles Caulier <caulier.gilles at gmail.com> ---
Raphael,

As you can see in my last comment, i commited last code from libpgf repository
and recompiled digiKam. Running it through valgrind report again some issue
about memory problems. Below, it's not a memory leak : 

=2438== Thread 21:
==2438== Conditional jump or move depends on uninitialised value(s)
==2438==    at 0x80BAA10: CEncoder::CMacroBlock::NumberOfBitplanes()
(Encoder.cpp:740)
==2438==    by 0x80BA233: CEncoder::CMacroBlock::BitplaneEncode()
(Encoder.cpp:495)
==2438==    by 0x80B9E7A: CEncoder::EncodeBuffer(ROIBlockHeader)
(Encoder.cpp:347)
==2438==    by 0x80B9D2B: CEncoder::Flush() (Encoder.cpp:313)
==2438==    by 0x80BE2CD: CPGFImage::WriteImage(CPGFStream*, bool (*)(double,
bool, void*), void*) (PGFimage.cpp:1128)
==2438==    by 0x80BE381: CPGFImage::Write(CPGFStream*, unsigned int*, bool
(*)(double, bool, void*), void*) (PGFimage.cpp:1163)
==2438==    by 0x80CA106: Digikam::PGFUtils::writePGFImageDataToStream(QImage
const&, CPGFStream&, int, unsigned int&, bool) (pgfutils.cpp:288)
==2438==    by 0x80C9562: Digikam::PGFUtils::writePGFImageData(QImage const&,
QByteArray&, int, bool) (pgfutils.cpp:184)
==2438==    by 0x80AA279:
Digikam::ThumbnailCreator::storeInDatabase(Digikam::ThumbnailInfo const&,
Digikam::ThumbnailImage const&) const (thumbnailcreator.cpp:695)
==2438==    by 0x80A7BF8: Digikam::ThumbnailCreator::load(QString const&, QRect
const&, bool) const (thumbnailcreator.cpp:267)
==2438==    by 0x80A77A5: Digikam::ThumbnailCreator::load(QString const&) const
(thumbnailcreator.cpp:199)
==2438==    by 0x80B6685: Digikam::ThumbnailLoadingTask::execute()
(thumbnailtask.cpp:172)
==2438== 
==2438== Conditional jump or move depends on uninitialised value(s)
==2438==    at 0x80BAA41: CEncoder::CMacroBlock::NumberOfBitplanes()
(Encoder.cpp:741)
==2438==    by 0x80BA233: CEncoder::CMacroBlock::BitplaneEncode()
(Encoder.cpp:495)
==2438==    by 0x80B9E7A: CEncoder::EncodeBuffer(ROIBlockHeader)
(Encoder.cpp:347)
==2438==    by 0x80B9D2B: CEncoder::Flush() (Encoder.cpp:313)
==2438==    by 0x80BE2CD: CPGFImage::WriteImage(CPGFStream*, bool (*)(double,
bool, void*), void*) (PGFimage.cpp:1128)
==2438==    by 0x80BE381: CPGFImage::Write(CPGFStream*, unsigned int*, bool
(*)(double, bool, void*), void*) (PGFimage.cpp:1163)
==2438==    by 0x80CA106: Digikam::PGFUtils::writePGFImageDataToStream(QImage
const&, CPGFStream&, int, unsigned int&, bool) (pgfutils.cpp:288)
==2438==    by 0x80C9562: Digikam::PGFUtils::writePGFImageData(QImage const&,
QByteArray&, int, bool) (pgfutils.cpp:184)
==2438==    by 0x80AA279:
Digikam::ThumbnailCreator::storeInDatabase(Digikam::ThumbnailInfo const&,
Digikam::ThumbnailImage const&) const (thumbnailcreator.cpp:695)
==2438==    by 0x80A7BF8: Digikam::ThumbnailCreator::load(QString const&, QRect
const&, bool) const (thumbnailcreator.cpp:267)
==2438==    by 0x80A77A5: Digikam::ThumbnailCreator::load(QString const&) const
(thumbnailcreator.cpp:199)
==2438==    by 0x80B6685: Digikam::ThumbnailLoadingTask::execute()
(thumbnailtask.cpp:172)
==2438== 

At end of application, valgrind report memory leak. It's not too huge, because
i stopped thumbnail maintenance task 30 secondes after to start (1%
completed)...

==2438== 9,200 bytes in 25 blocks are possibly lost in loss record 25,377 of
25,727
==2438==    at 0x4C26DFF: calloc (in
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==2438==    by 0x4011008: _dl_allocate_tls (in /usr/lib64/ld-2.17.so)
==2438==    by 0xFD028B8: pthread_create@@GLIBC_2.2.5 (in
/usr/lib64/libpthread-2.17.so)
==2438==    by 0x10AACCBD: ??? (in /usr/lib64/libgomp.so.1.0.0)
==2438==    by 0x80BD89F: CPGFImage::WriteHeader(CPGFStream*)
(PGFimage.cpp:924)
==2438==    by 0x80BE366: CPGFImage::Write(CPGFStream*, unsigned int*, bool
(*)(double, bool, void*), void*) (PGFimage.cpp:1160)
==2438==    by 0x80CA106: Digikam::PGFUtils::writePGFImageDataToStream(QImage
const&, CPGFStream&, int, unsigned int&, bool) (pgfutils.cpp:288)
==2438==    by 0x80C9562: Digikam::PGFUtils::writePGFImageData(QImage const&,
QByteArray&, int, bool) (pgfutils.cpp:184)
==2438==    by 0x80AA279:
Digikam::ThumbnailCreator::storeInDatabase(Digikam::ThumbnailInfo const&,
Digikam::ThumbnailImage const&) const (thumbnailcreator.cpp:695)
==2438==    by 0x80A7BF8: Digikam::ThumbnailCreator::load(QString const&, QRect
const&, bool) const (thumbnailcreator.cpp:267)
==2438==    by 0x80A77A5: Digikam::ThumbnailCreator::load(QString const&) const
(thumbnailcreator.cpp:199)
==2438==    by 0x80B6685: Digikam::ThumbnailLoadingTask::execute()
(thumbnailtask.cpp:172)

==2438== 2,208 bytes in 6 blocks are possibly lost in loss record 24,976 of
25,727
==2438==    at 0x4C26DFF: calloc (in
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==2438==    by 0x4011008: _dl_allocate_tls (in /usr/lib64/ld-2.17.so)
==2438==    by 0xFD028B8: pthread_create@@GLIBC_2.2.5 (in
/usr/lib64/libpthread-2.17.so)
==2438==    by 0x10AACCBD: ??? (in /usr/lib64/libgomp.so.1.0.0)
==2438==    by 0x80BC372: CPGFImage::Read(int, bool (*)(double, bool, void*),
void*) (PGFimage.cpp:428)
==2438==    by 0x80C8C51: Digikam::PGFUtils::readPGFImageData(QByteArray
const&, QImage&, bool) (pgfutils.cpp:93)
==2438==    by 0x80AAE7E:
Digikam::ThumbnailCreator::loadFromDatabase(Digikam::ThumbnailInfo const&)
const (thumbnailcreator.cpp:886)
==2438==    by 0x80A7ACC: Digikam::ThumbnailCreator::load(QString const&, QRect
const&, bool) const (thumbnailcreator.cpp:248)
==2438==    by 0x80A77A5: Digikam::ThumbnailCreator::load(QString const&) const
(thumbnailcreator.cpp:199)
==2438==    by 0x80B6685: Digikam::ThumbnailLoadingTask::execute()
(thumbnailtask.cpp:172)
==2438==    by 0x8091550: Digikam::LoadSaveThread::run()
(loadsavethread.cpp:136)
==2438==    by 0x80CF451: Digikam::DynamicThread::DynamicThreadPriv::run()
(dynamicthread.cpp:186)

Gilles Caulier

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



More information about the Digikam-devel mailing list