[Digikam-devel] memory leak...

Andi Clemens andi.clemens at gmx.net
Fri May 15 08:43:34 BST 2009


Valgrind memory leak is very random for me sometimes.
When I first start it, 1MB is lost, after restart and doing exactly the same 
things (and visiting the same albums), I only lost 300KB of RAM.
If only valgrind would be faster, then I would do those checks more 
frequently. But it takes 2 minutes to only start digiKam (even with no 
instructions at startup).
Also finding memory leaks is, most of the time, just luck.

For profiling I use another tool now: oprofile. MUCH faster and it will 
profile the whole system. Some features from valgrind are missing, but I can 
live with that. Profiling with oprofile gives me no speed loss here, which is 
great.

The scanTAlbums, scanDAlbums() etc part in your report annoys me since a few 
months now. I really don't see what is wrong here. But it constantly tells me 
that.
And another one that bugs me is some painter issue in the splashscreen. It 
just prints text at some point, but it always loses memory in this 
instruction, although it is not different from all the other lines where we 
print text onto the splash.

The rest is marble, and there are a lot of messages about it. Either we use 
Marble in a wrong way, or they really have that much memory leaks.

Andi

On Friday 15 May 2009 08:13:07 Gilles Caulier wrote:
> Hi all,
>
> Just running valgrind...
>
> >From digiKam core
>
> ==3462== 338 bytes in 9 blocks are definitely lost in loss record 513
> of 722
> ==3462==    at 0x4024D0E: malloc (vg_replace_malloc.c:207)
> ==3462==    by 0x69009FA: qMalloc(unsigned int) (in
> /usr/lib/libQtCore.so.4.5.0)
> ==3462==    by 0x694E490: QString::fromLatin1_helper(char const*, int)
> (in /usr/lib/libQtCore.so.4.5.0)
> ==3462==    by 0x6959D4B: QString::fromAscii_helper(char const*, int)
> (in /usr/lib/libQtCore.so.4.5.0)
> ==3462==    by 0x5021AAB:
> Digikam::DatabaseUrl::dateUrl(Digikam::DatabaseParameters const&)
> (databaseurl.cpp:118)
> ==3462==    by 0x828F3CD: Digikam::AlbumManager::scanDAlbums()
> (albummanager.cpp:1299)
> ==3462==    by 0x829AF41: Digikam::AlbumManager::refresh()
> (albummanager.cpp:827)
> ==3462==    by 0x829BE78: Digikam::AlbumManager::startScan()
> (albummanager.cpp:738)
> ==3462==    by 0x82EC057: Digikam::DigikamApp::DigikamApp()
> (digikamapp.cpp:227)
> ==3462==    by 0x838612D: main (main.cpp:160)
>
> ==3462== 324 (304 direct, 20 indirect) bytes in 1 blocks are
> definitely lost in loss record 654 of 722
> ==3462==    at 0x402471E: operator new(unsigned int)
> (vg_replace_malloc.c:224)
> ==3462==    by 0x61B9D1C: QRubberBand::QRubberBand(QRubberBand::Shape,
> QWidget*) (in /usr/lib/libQtGui.so.4.5.0)
> ==3462==    by 0x5258DBB: (within /usr/lib/libmarblewidget.so.4.2.0)
> ==3462==    by 0x522FB47: (within /usr/lib/libmarblewidget.so.4.2.0)
> ==3462==    by 0x5231687: Marble::MarbleWidget::MarbleWidget(QWidget*)
> (in /usr/lib/libmarblewidget.so.4.2.0)
> ==3462==    by 0x81FAB03:
> Digikam::GPSSearchWidget::GPSSearchWidget(QWidget*)
> (gpssearchwidget.cpp:46)
> ==3462==    by 0x81F8A9A:
> Digikam::GPSSearchView::GPSSearchView(QWidget*)
> (gpssearchview.cpp:100)
> ==3462==    by 0x82F6F9C: Digikam::DigikamView::DigikamView(QWidget*)
> (digikamview.cpp:234)
> ==3462==    by 0x82EA241: Digikam::DigikamApp::setupView()
> (digikamapp.cpp:442)
> ==3462==    by 0x82EBE8B: Digikam::DigikamApp::DigikamApp()
> (digikamapp.cpp:200)
> ==3462==    by 0x838612D: main (main.cpp:160)
>
> >From 2 kipi plugins :
>
> ==3462== 4 bytes in 1 blocks are definitely lost in loss record 10 of
> 722
> ==3462==    at 0x402471E: operator new(unsigned int)
> (vg_replace_malloc.c:224)
> ==3462==    by 0x17349431: Plugin_AdvancedSlideshow::setup(QWidget*)
> (plugin_advancedslideshow.cpp:101)
> ==3462==    by 0x82CF5F3: Digikam::DigikamApp::slotKipiPluginPlug()
> (digikamapp.cpp:2259)
> ==3462==    by 0x82ED8E8:
> Digikam::DigikamApp::qt_metacall(QMetaObject::Call, int, void**)
> (digikamapp.moc:204)
> ==3462==    by 0x6A18E44: QMetaObject::activate(QObject*, int, int,
> void**) (in /usr/lib/libQtCore.so.4.5.0)
> ==3462==    by 0x6A1A6E4: QMetaObject::activate(QObject*, QMetaObject
> const*, int, void**) (in /usr/lib/libQtCore.so.4.5.0)
> ==3462==    by 0x47B2821: KIPI::PluginLoader::loadPlugins() (in
> /usr/lib/libkipi.so.6.1.0)
> ==3462==    by 0x82D09B6: Digikam::DigikamApp::loadPlugins()
> (digikamapp.cpp:2202)
> ==3462==    by 0x82EC062: Digikam::DigikamApp::DigikamApp()
> (digikamapp.cpp:230)
> ==3462==    by 0x838612D: main (main.cpp:160)
>
> ==3462== 156 (28 direct, 128 indirect) bytes in 1 blocks are
> definitely lost in loss record 596 of 722
> ==3462==    at 0x402471E: operator new(unsigned int)
> (vg_replace_malloc.c:224)
> ==3462==    by 0x173F5E6B: Plugin_GalleryExport::setup(QWidget*)
> (plugin_galleryexport.cpp:65)
> ==3462==    by 0x82CF5F3: Digikam::DigikamApp::slotKipiPluginPlug()
> (digikamapp.cpp:2259)
> ==3462==    by 0x82ED8E8:
> Digikam::DigikamApp::qt_metacall(QMetaObject::Call, int, void**)
> (digikamapp.moc:204)
> ==3462==    by 0x6A18E44: QMetaObject::activate(QObject*, int, int,
> void**) (in /usr/lib/libQtCore.so.4.5.0)
> ==3462==    by 0x6A1A6E4: QMetaObject::activate(QObject*, QMetaObject
> const*, int, void**) (in /usr/lib/libQtCore.so.4.5.0)
> ==3462==    by 0x47B2821: KIPI::PluginLoader::loadPlugins() (in
> /usr/lib/libkipi.so.6.1.0)
> ==3462==    by 0x82D09B6: Digikam::DigikamApp::loadPlugins()
> (digikamapp.cpp:2202)
> ==3462==    by 0x82EC062: Digikam::DigikamApp::DigikamApp()
> (digikamapp.cpp:230)
> ==3462==    by 0x838612D: main (main.cpp:160)
>
>
> All the rest (and there is a lots) come from Marble !
>
> Final results, only to use album gui and setup dialog is :
>
> ==3462== LEAK SUMMARY:
> ==3462==    definitely lost: 3,838 bytes in 75 blocks.
> ==3462==    indirectly lost: 157,684 bytes in 547 blocks.
> ==3462==      possibly lost: 517,540 bytes in 1,544 blocks.
> ==3462==    still reachable: 5,309,186 bytes in 36,742 blocks.
> ==3462==         suppressed: 0 bytes in 0 blocks.
> ==3462== Reachable blocks (those to which a pointer was found) are not
> shown. ==3462== To see them, rerun with: --leak-check=full
> --show-reachable=yes
>
> Gilles
> _______________________________________________
> Digikam-devel mailing list
> Digikam-devel at kde.org
> https://mail.kde.org/mailman/listinfo/digikam-devel




More information about the Digikam-devel mailing list