memory leak...

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

memory leak...

Gilles Caulier-4
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
[hidden email]
https://mail.kde.org/mailman/listinfo/digikam-devel
Reply | Threaded
Open this post in threaded view
|

Re: memory leak...

Bugzilla from andi.clemens@gmx.net
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
> [hidden email]
> https://mail.kde.org/mailman/listinfo/digikam-devel

_______________________________________________
Digikam-devel mailing list
[hidden email]
https://mail.kde.org/mailman/listinfo/digikam-devel
Reply | Threaded
Open this post in threaded view
|

Re: memory leak...

Matthias Welwarsky
On Friday 15 May 2009 09:43:34 Andi Clemens wrote:
>
> 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.

DatabaseUrl is a KUrl, databaseurl.cpp line 118 is

url.setProtocol("digikamdates");

setProtocol is not reimplemented, so it could be inside KUrl or even inside
QString. Another place to look is what happens with the DatabaseUrl object
after it's returned to the caller. But if the whole object was lost, we'd see
a loss record for it as well.



_______________________________________________
Digikam-devel mailing list
[hidden email]
https://mail.kde.org/mailman/listinfo/digikam-devel
Reply | Threaded
Open this post in threaded view
|

Re: memory leak...

Gilles Caulier-4
In reply to this post by Gilles Caulier-4
2009/5/15 Gilles Caulier <[hidden email]>:

> 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)
>

This one is fied in svn...
Gilles
_______________________________________________
Digikam-devel mailing list
[hidden email]
https://mail.kde.org/mailman/listinfo/digikam-devel