[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