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

Gilles Caulier caulier.gilles at gmail.com
Fri Nov 8 08:19:50 GMT 2013


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

--- Comment #66 from Gilles Caulier <caulier.gilles at gmail.com> ---
Rapahel,

I don't check your change about OpenMP support, but now, crash cannot be
reproduced as explained in comment #35. I can run qtpgftest command line tool :

[gilles at localhost tests]$ ./qtpgftest
unnamed app(22268)/digikam (core) main: Using LibPGF version:  "6.13.45"
unnamed app(22268)/digikam (core) main: Using OpenMP with LibPGF :  yes
unnamed app(22268)/digikam (core) main: Generate PGF file using file stream
unnamed app(22268)/digikam (core) Digikam::PGFUtils::writePGFImageDataToStream:
RGB => ARGB
unnamed app(22268)/digikam (core) Digikam::PGFUtils::writePGFImageDataToStream:
PGF image settings:
unnamed app(22268)/digikam (core) Digikam::PGFUtils::writePGFImageDataToStream:
   width:  256
unnamed app(22268)/digikam (core) Digikam::PGFUtils::writePGFImageDataToStream:
   height:  170
unnamed app(22268)/digikam (core) Digikam::PGFUtils::writePGFImageDataToStream:
   nLevels:  0
unnamed app(22268)/digikam (core) Digikam::PGFUtils::writePGFImageDataToStream:
   quality:  0
unnamed app(22268)/digikam (core) Digikam::PGFUtils::writePGFImageDataToStream:
   bpp:  32
unnamed app(22268)/digikam (core) Digikam::PGFUtils::writePGFImageDataToStream:
   channels:  4
unnamed app(22268)/digikam (core) Digikam::PGFUtils::writePGFImageDataToStream:
   mode:  17
unnamed app(22268)/digikam (core) Digikam::PGFUtils::writePGFImageDataToStream:
   usedBitsPerChannel:  0
unnamed app(22268)/digikam (core) Digikam::PGFUtils::writePGFImageFile: file
size written :  80806
unnamed app(22268)/digikam (core) main: Generate PGF file using data stream
unnamed app(22268)/digikam (core) Digikam::PGFUtils::writePGFImageData: PGF
stream memory allocation in bytes:  174080
unnamed app(22268)/digikam (core) Digikam::PGFUtils::writePGFImageDataToStream:
RGB => ARGB
unnamed app(22268)/digikam (core) Digikam::PGFUtils::writePGFImageDataToStream:
PGF image settings:
unnamed app(22268)/digikam (core) Digikam::PGFUtils::writePGFImageDataToStream:
   width:  256
unnamed app(22268)/digikam (core) Digikam::PGFUtils::writePGFImageDataToStream:
   height:  170
unnamed app(22268)/digikam (core) Digikam::PGFUtils::writePGFImageDataToStream:
   nLevels:  0
unnamed app(22268)/digikam (core) Digikam::PGFUtils::writePGFImageDataToStream:
   quality:  0
unnamed app(22268)/digikam (core) Digikam::PGFUtils::writePGFImageDataToStream:
   bpp:  32
unnamed app(22268)/digikam (core) Digikam::PGFUtils::writePGFImageDataToStream:
   channels:  4
unnamed app(22268)/digikam (core) Digikam::PGFUtils::writePGFImageDataToStream:
   mode:  17
unnamed app(22268)/digikam (core) Digikam::PGFUtils::writePGFImageDataToStream:
   usedBitsPerChannel:  0
unnamed app(22268)/digikam (core) Digikam::PGFUtils::writePGFImageData: data
size written :  80806
unnamed app(22268)/digikam (core) main: PGF Encoding time:  0.08  s
unnamed app(22268)/digikam (core) main: Load PGF file generated by data stream
unnamed app(22268)/digikam (core) Digikam::PGFUtils::readPGFImageData: image
data stream size is :  80806
unnamed app(22268)/digikam (core) Digikam::PGFUtils::readPGFImageData: PGF
image is open
unnamed app(22268)/digikam (core) Digikam::PGFUtils::readPGFImageData: PGF
image is read
unnamed app(22268)/digikam (core) Digikam::PGFUtils::readPGFImageData: PGF
image is decoded
unnamed app(22268)/digikam (core) main: PGF Decoding time:  0.1  s
unnamed app(22268)/digikam (core) main: Generate JPG file to compare
performances
unnamed app(22268)/digikam (core) main: JPG Encoding time:  0  s
unnamed app(22268)/digikam (core) main: JPG Decoding time:  0  s
unnamed app(22268)/digikam (core) main: Generate PNG file to compare
performances
unnamed app(22268)/digikam (core) main: PNG Encoding time:  0.01  s
libpng warning: Unknown iTXt compression type or method
unnamed app(22268)/digikam (core) main: PNG Decoding time:  0  s
[gilles at localhost tests]$

But valgrind report few traces about memory leak when OpenMP support is enabled
:

[gilles at localhost tests]$ valgrind --tool=memcheck --leak-check=full
--error-limit=no ./qtpgftest
==22448== Memcheck, a memory error detector
==22448== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al.
==22448== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info
==22448== Command: ./qtpgftest
==22448== 
...
==22448== 
==22448== HEAP SUMMARY:
==22448==     in use at exit: 2,219,171 bytes in 470 blocks
==22448==   total heap usage: 23,798 allocs, 23,328 frees, 39,735,306 bytes
allocated
...
==22448== 2,464 bytes in 7 blocks are possibly lost in loss record 247 of 260
==22448==    at 0x4C26DFF: calloc (in
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==22448==    by 0x4011008: _dl_allocate_tls (in /usr/lib64/ld-2.17.so)
==22448==    by 0x59CB8B8: pthread_create@@GLIBC_2.2.5 (in
/usr/lib64/libpthread-2.17.so)
==22448==    by 0x4E38CBD: ??? (in /usr/lib64/libgomp.so.1.0.0)
==22448==    by 0x40AD03: CPGFImage::WriteHeader(CPGFStream*)
(PGFimage.cpp:930)
==22448==    by 0x40B7C0: CPGFImage::Write(CPGFStream*, unsigned int*, bool
(*)(double, bool, void*), void*) (PGFimage.cpp:1167)
==22448==    by 0x417611: Digikam::PGFUtils::writePGFImageDataToStream(QImage
const&, CPGFStream&, int, unsigned int&, bool) (pgfutils.cpp:288)
==22448==    by 0x4167B3: Digikam::PGFUtils::writePGFImageFile(QImage const&,
QString const&, int, bool) (pgfutils.cpp:152)
==22448==    by 0x402992: main (qtpgftest.cpp:63)
...
==22448== 1,032,472 bytes in 7 blocks are definitely lost in loss record 259 of
260
==22448==    at 0x4C285F1: operator new(unsigned long) (in
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==22448==    by 0x40686A: CEncoder::CEncoder(CPGFStream*, PGFPreHeader,
PGFHeader, PGFPostHeader const&, unsigned long long&, bool) (Encoder.cpp:101)
==22448==    by 0x40AE60: CPGFImage::WriteHeader(CPGFStream*)
(PGFimage.cpp:982)
==22448==    by 0x40B7C0: CPGFImage::Write(CPGFStream*, unsigned int*, bool
(*)(double, bool, void*), void*) (PGFimage.cpp:1167)
==22448==    by 0x417611: Digikam::PGFUtils::writePGFImageDataToStream(QImage
const&, CPGFStream&, int, unsigned int&, bool) (pgfutils.cpp:288)
==22448==    by 0x416ABD: Digikam::PGFUtils::writePGFImageData(QImage const&,
QByteArray&, int, bool) (pgfutils.cpp:184)
==22448==    by 0x402AF3: main (qtpgftest.cpp:74)
==22448== 
==22448== 1,032,472 bytes in 7 blocks are definitely lost in loss record 260 of
260
==22448==    at 0x4C285F1: operator new(unsigned long) (in
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==22448==    by 0x40686A: CEncoder::CEncoder(CPGFStream*, PGFPreHeader,
PGFHeader, PGFPostHeader const&, unsigned long long&, bool) (Encoder.cpp:101)
==22448==    by 0x40AE60: CPGFImage::WriteHeader(CPGFStream*)
(PGFimage.cpp:982)
==22448==    by 0x40B7C0: CPGFImage::Write(CPGFStream*, unsigned int*, bool
(*)(double, bool, void*), void*) (PGFimage.cpp:1167)
==22448==    by 0x417611: Digikam::PGFUtils::writePGFImageDataToStream(QImage
const&, CPGFStream&, int, unsigned int&, bool) (pgfutils.cpp:288)
==22448==    by 0x4167B3: Digikam::PGFUtils::writePGFImageFile(QImage const&,
QString const&, int, bool) (pgfutils.cpp:152)
==22448==    by 0x402992: main (qtpgftest.cpp:63)
==22448== 
==22448== LEAK SUMMARY:
==22448==    definitely lost: 2,066,960 bytes in 35 blocks
==22448==    indirectly lost: 7,540 bytes in 63 blocks
==22448==      possibly lost: 2,464 bytes in 7 blocks
==22448==    still reachable: 142,207 bytes in 365 blocks
==22448==         suppressed: 0 bytes in 0 blocks
==22448== Reachable blocks (those to which a pointer was found) are not shown.
==22448== To see them, rerun with: --leak-check=full --show-reachable=yes
==22448== 
==22448== For counts of detected and suppressed errors, rerun with: -v
==22448== ERROR SUMMARY: 6 errors from 6 contexts (suppressed: 2 from 2)
[gilles at localhost tests]$

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



More information about the Digikam-devel mailing list