Summary: | FileIndexer leaking memory | ||
---|---|---|---|
Product: | nepomuk | Reporter: | Stephan Menzel <stephan.menzel> |
Component: | fileindexer | Assignee: | Nepomuk Bugs Coordination <nepomuk-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | bladud, me |
Priority: | NOR | ||
Version: | 4.9 | ||
Target Milestone: | --- | ||
Platform: | Gentoo Packages | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | 4.10 |
Description
Stephan Menzel
2012-08-20 11:21:03 UTC
Interesting. If the dbus command didn't work, then something else is wrong. Do you think you could forcibly kill the process a number of times. do a $ ps aux | grep nepomuk | grep fileindexer , to get the pid of the process. When you forcibly kill it, the nepomukserver will detect that the process has crashed, and automatically restart it. It'll do that about 5-6 times. So keep killing it until it is no longer respawned. Then try running valgrind. Thanks. I did that. However, strangely it was not the fileindexer process I had to kill but nepomukservices. As seen in the 'top' output above, that's the one that's leaking mem. An actual fileindexer process was not there. Here's the valgrind output. Unfortunately this doesn't look like much. The few leaks it reports seem OK to me and are not enough to explain the amount I'm seeing. sm@hal9001 ~ $ valgrind --leak-check=full nepomukservicestub nepomukfileindexer ==18382== Memcheck, a memory error detector ==18382== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al. ==18382== Using Valgrind-3.8.0 and LibVEX; rerun with -h for copyright info ==18382== Command: nepomukservicestub nepomukfileindexer ==18382== nepomukfileindexer(18382)/nepomuk (strigi service): Already running an indexer job on URL KUrl("file:///home/sm/Downloads") This is a scheduling bug! QObject::connect: Cannot connect XSyncBasedPoller::destroyed() to (null)::_k_x11FilterDestroyed() nepomukfileindexer(18382)/nepomuk (strigi service): Already running an indexer job on URL KUrl("file:///home/sm/JDownloader/backup/database.zip") This is a scheduling bug! ^C==18382== ==18382== HEAP SUMMARY: ==18382== in use at exit: 178,066 bytes in 1,824 blocks ==18382== total heap usage: 11,632,837 allocs, 11,631,013 frees, 1,270,856,246 bytes allocated ==18382== ==18382== 234 (96 direct, 138 indirect) bytes in 1 blocks are definitely lost in loss record 344 of 417 ==18382== at 0x4A08F87: operator new(unsigned long) (vg_replace_malloc.c:298) ==18382== by 0x3E8156B8E3: QLibraryPrivate::findOrCreate(QString const&, QString const&) (qlibrary.cpp:437) ==18382== by 0x3E8156BEEA: QLibrary::setFileNameAndVersion(QString const&, QString const&) (qlibrary.cpp:1110) ==18382== by 0x3E8156BF5B: QLibrary::QLibrary(QString const&, QString const&, QObject*) (qlibrary.cpp:1005) ==18382== by 0x3E814DB403: qt_initIcu(QString const&) (qlocale_icu.cpp:113) ==18382== by 0x3E814A041E: QLocalePrivate::updateSystemPrivate() (qlocale.cpp:529) ==18382== by 0x3E814A064A: systemPrivate() (qlocale.cpp:540) ==18382== by 0x3E814A067C: defaultPrivate() (qlocale.cpp:551) ==18382== by 0x3E814A07E9: QLocale::QLocale() (qlocale.cpp:673) ==18382== by 0x3E8152C85C: QResourceFileEngine::QResourceFileEngine(QString const&) (qresource.cpp:1200) ==18382== by 0x3E8155519E: _q_resolveEntryAndCreateLegacyEngine_recursive(QFileSystemEntry&, QFileSystemMetaData&, QAbstractFileEngine*&, bool) (qfilesystemengine.cpp:162) ==18382== by 0x3E815552FC: QFileSystemEngine::resolveEntryAndCreateLegacyEngine(QFileSystemEntry&, QFileSystemMetaData&) (qfilesystemengine.cpp:208) ==18382== ==18382== 240 bytes in 1 blocks are possibly lost in loss record 345 of 417 ==18382== at 0x4A07030: memalign (vg_replace_malloc.c:727) ==18382== by 0x4A07127: posix_memalign (vg_replace_malloc.c:876) ==18382== by 0x3E8101CCB8: slab_allocator_alloc_chunk (gslice.c:1381) ==18382== by 0x3E81069F48: g_slice_alloc (gslice.c:719) ==18382== by 0x3E8106A93D: g_slist_prepend (gslist.c:265) ==18382== by 0x3E81072BE4: g_once_init_enter (gthread.c:682) ==18382== by 0x3E8104BA9A: g_main_context_new (gmain.c:520) ==18382== by 0x3E8104BAFC: g_main_context_default (gmain.c:589) ==18382== by 0x3E815B0C14: QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*) (qeventdispatcher_glib.cpp:309) ==18382== by 0x3B5C87C86E: QGuiEventDispatcherGlibPrivate::QGuiEventDispatcherGlibPrivate() (qguieventdispatcher_glib.cpp:171) ==18382== by 0x3B5C87C93D: QGuiEventDispatcherGlib::QGuiEventDispatcherGlib(QObject*) (qguieventdispatcher_glib.cpp:186) ==18382== by 0x3B5C843597: QApplicationPrivate::createEventDispatcher() (qapplication_x11.cpp:629) ==18382== ==18382== 242 (96 direct, 146 indirect) bytes in 1 blocks are definitely lost in loss record 346 of 417 ==18382== at 0x4A08F87: operator new(unsigned long) (vg_replace_malloc.c:298) ==18382== by 0x3E8156B8E3: QLibraryPrivate::findOrCreate(QString const&, QString const&) (qlibrary.cpp:437) ==18382== by 0x3E8156BEEA: QLibrary::setFileNameAndVersion(QString const&, QString const&) (qlibrary.cpp:1110) ==18382== by 0x3E8156BF5B: QLibrary::QLibrary(QString const&, QString const&, QObject*) (qlibrary.cpp:1005) ==18382== by 0x3E814DB196: qt_initIcu(QString const&) (qlocale_icu.cpp:84) ==18382== by 0x3E814A041E: QLocalePrivate::updateSystemPrivate() (qlocale.cpp:529) ==18382== by 0x3E814A064A: systemPrivate() (qlocale.cpp:540) ==18382== by 0x3E814A067C: defaultPrivate() (qlocale.cpp:551) ==18382== by 0x3E814A07E9: QLocale::QLocale() (qlocale.cpp:673) ==18382== by 0x3E8152C85C: QResourceFileEngine::QResourceFileEngine(QString const&) (qresource.cpp:1200) ==18382== by 0x3E8155519E: _q_resolveEntryAndCreateLegacyEngine_recursive(QFileSystemEntry&, QFileSystemMetaData&, QAbstractFileEngine*&, bool) (qfilesystemengine.cpp:162) ==18382== by 0x3E815552FC: QFileSystemEngine::resolveEntryAndCreateLegacyEngine(QFileSystemEntry&, QFileSystemMetaData&) (qfilesystemengine.cpp:208) ==18382== ==18382== 292 (52 direct, 240 indirect) bytes in 1 blocks are definitely lost in loss record 349 of 417 ==18382== at 0x4A0955B: malloc (vg_replace_malloc.c:270) ==18382== by 0x32FCAFA502: nss_parse_service_list (nsswitch.c:596) ==18382== by 0x32FCAFA9F5: __nss_database_lookup (nsswitch.c:145) ==18382== by 0x7F115DF: ??? ==18382== by 0x7F130A4: ??? ==18382== by 0x32FCAB7B2C: getpwuid_r@@GLIBC_2.2.5 (getXXbyYY_r.c:256) ==18382== by 0x32FCAB73D6: getpwuid (getXXbyYY.c:117) ==18382== by 0x3308C020BB: gamin_get_socket_path (gam_api.c:121) ==18382== by 0x3308C024FD: FAMOpen (gam_api.c:974) ==18382== by 0x3B5D932AA9: KDirWatchPrivate::KDirWatchPrivate() (kdirwatch.cpp:186) ==18382== by 0x3B5D9339D4: KDirWatch::KDirWatch(QObject*) (kdirwatch.cpp:83) ==18382== by 0x3B5D933A2F: KDirWatch::self() (kdirwatch.cpp:1728) ==18382== ==18382== 320 bytes in 1 blocks are possibly lost in loss record 354 of 417 ==18382== at 0x4A073B2: calloc (vg_replace_malloc.c:593) ==18382== by 0x32FB210D99: allocate_dtv (dl-tls.c:297) ==18382== by 0x32FB21149D: _dl_allocate_tls (dl-tls.c:461) ==18382== by 0x32FD608837: pthread_create@@GLIBC_2.2.5 (allocatestack.c:572) ==18382== by 0x3E8147FDFB: QThread::start(QThread::Priority) (qthread_unix.cpp:609) ==18382== by 0x3E8155DCAE: QProcessPrivate::startProcess() (qprocess_unix.cpp:541) ==18382== by 0x3E8151A74E: QProcess::start(QString const&, QStringList const&, QFlags<QIODevice::OpenModeFlag>) (qprocess.cpp:1977) ==18382== by 0x3B5D93FC79: KProcess::start() (kprocess.cpp:344) ==18382== by 0x7AF9532: Nepomuk2::Indexer::start() (nepomukindexer.cpp:61) ==18382== by 0x7AEB50E: Nepomuk2::IndexScheduler::analyzeDir(QString const&, QFlags<Nepomuk2::IndexScheduler::UpdateDirFlag>) (indexscheduler.cpp:397) ==18382== by 0x7AECDCB: Nepomuk2::IndexScheduler::doIndexing() (indexscheduler.cpp:339) ==18382== by 0x7AED44C: Nepomuk2::IndexScheduler::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) [clone .part.35] (indexscheduler.moc:107) ==18382== ==18382== 448 (96 direct, 352 indirect) bytes in 1 blocks are definitely lost in loss record 363 of 417 ==18382== at 0x4A08F87: operator new(unsigned long) (vg_replace_malloc.c:298) ==18382== by 0x3E8156B8E3: QLibraryPrivate::findOrCreate(QString const&, QString const&) (qlibrary.cpp:437) ==18382== by 0x3E815664A7: QFactoryLoader::updateDir(QString const&, QSettings&) (qfactoryloader.cpp:145) ==18382== by 0x3E8156870C: QFactoryLoader::update() (qfactoryloader.cpp:233) ==18382== by 0x3E81568A28: QFactoryLoader::QFactoryLoader(char const*, QString const&, Qt::CaseSensitivity) (qfactoryloader.cpp:121) ==18382== by 0x3B5CADD9B4: loader() (qstylefactory.cpp:85) ==18382== by 0x3B5CADDBE9: QStyleFactory::create(QString const&) (qstylefactory.cpp:192) ==18382== by 0x3B5C7DB440: QApplication::style() (qapplication.cpp:1462) ==18382== by 0x3B5C84A703: qt_set_x11_resources(char const*, char const*, char const*, char const*) (qapplication_x11.cpp:1289) ==18382== by 0x3B5C8508C9: qt_init(QApplicationPrivate*, int, _XDisplay*, unsigned long, unsigned long) (qapplication_x11.cpp:2397) ==18382== by 0x3B5C7DE1C8: QApplicationPrivate::construct(_XDisplay*, unsigned long, unsigned long) (qapplication.cpp:839) ==18382== by 0x3B5C7DEAB3: QApplication::QApplication(int&, char**, int) (qapplication.cpp:738) ==18382== ==18382== 472 (96 direct, 376 indirect) bytes in 1 blocks are definitely lost in loss record 364 of 417 ==18382== at 0x4A08F87: operator new(unsigned long) (vg_replace_malloc.c:298) ==18382== by 0x3E8156B8E3: QLibraryPrivate::findOrCreate(QString const&, QString const&) (qlibrary.cpp:437) ==18382== by 0x3E815664A7: QFactoryLoader::updateDir(QString const&, QSettings&) (qfactoryloader.cpp:145) ==18382== by 0x3E8156870C: QFactoryLoader::update() (qfactoryloader.cpp:233) ==18382== by 0x3E81568A28: QFactoryLoader::QFactoryLoader(char const*, QString const&, Qt::CaseSensitivity) (qfactoryloader.cpp:121) ==18382== by 0x3B5C840CB9: qt_guiPlatformPlugin() (qguiplatformplugin.cpp:101) ==18382== by 0x3B5C84936C: QApplicationPrivate::x11_apply_settings() (qapplication_x11.cpp:959) ==18382== by 0x3B5C84C052: qt_set_x11_resources(char const*, char const*, char const*, char const*) (qapplication_x11.cpp:1136) ==18382== by 0x3B5C8508C9: qt_init(QApplicationPrivate*, int, _XDisplay*, unsigned long, unsigned long) (qapplication_x11.cpp:2397) ==18382== by 0x3B5C7DE1C8: QApplicationPrivate::construct(_XDisplay*, unsigned long, unsigned long) (qapplication.cpp:839) ==18382== by 0x3B5C7DEAB3: QApplication::QApplication(int&, char**, int) (qapplication.cpp:738) ==18382== by 0x403EE5: main (main.cpp:107) ==18382== ==18382== 720 bytes in 3 blocks are possibly lost in loss record 379 of 417 ==18382== at 0x4A07030: memalign (vg_replace_malloc.c:727) ==18382== by 0x4A07127: posix_memalign (vg_replace_malloc.c:876) ==18382== by 0x3E8101CCB8: slab_allocator_alloc_chunk (gslice.c:1381) ==18382== by 0x3E81069F77: g_slice_alloc (gslice.c:724) ==18382== by 0x3E8106A93D: g_slist_prepend (gslist.c:265) ==18382== by 0x3E81072BE4: g_once_init_enter (gthread.c:682) ==18382== by 0x3E8104BA9A: g_main_context_new (gmain.c:520) ==18382== by 0x3E8104BAFC: g_main_context_default (gmain.c:589) ==18382== by 0x3E815B0C14: QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*) (qeventdispatcher_glib.cpp:309) ==18382== by 0x3B5C87C86E: QGuiEventDispatcherGlibPrivate::QGuiEventDispatcherGlibPrivate() (qguieventdispatcher_glib.cpp:171) ==18382== by 0x3B5C87C93D: QGuiEventDispatcherGlib::QGuiEventDispatcherGlib(QObject*) (qguieventdispatcher_glib.cpp:186) ==18382== by 0x3B5C843597: QApplicationPrivate::createEventDispatcher() (qapplication_x11.cpp:629) ==18382== ==18382== 808 (96 direct, 712 indirect) bytes in 1 blocks are definitely lost in loss record 381 of 417 ==18382== at 0x4A08F87: operator new(unsigned long) (vg_replace_malloc.c:298) ==18382== by 0x3E8156B8E3: QLibraryPrivate::findOrCreate(QString const&, QString const&) (qlibrary.cpp:437) ==18382== by 0x3E81564CF8: QPluginLoader::setFileName(QString const&) (qpluginloader.cpp:340) ==18382== by 0x3E81564E30: QPluginLoader::QPluginLoader(QString const&, QObject*) (qpluginloader.cpp:162) ==18382== by 0x3B5DA68DE2: KPluginLoader::KPluginLoader(KService const&, KComponentData const&, QObject*) (kpluginloader.cpp:151) ==18382== by 0x40539E: Nepomuk2::ServiceControl::start() (kservice.h:556) ==18382== by 0x405A3C: Nepomuk2::ServiceControl::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) [clone .part.12] (servicecontrol.moc:62) ==18382== by 0x3E81596965: QObject::event(QEvent*) (qobject.cpp:1195) ==18382== by 0x3B5C7D73E3: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4551) ==18382== by 0x3B5C7DBEBE: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4412) ==18382== by 0x3E81581CDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:915) ==18382== by 0x3E815852A6: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:231) ==18382== ==18382== 960 bytes in 4 blocks are possibly lost in loss record 385 of 417 ==18382== at 0x4A07030: memalign (vg_replace_malloc.c:727) ==18382== by 0x4A07127: posix_memalign (vg_replace_malloc.c:876) ==18382== by 0x3E8101CCB8: slab_allocator_alloc_chunk (gslice.c:1381) ==18382== by 0x3E81069F77: g_slice_alloc (gslice.c:724) ==18382== by 0x3E8108F287: g_wakeup_new (gwakeup.c:143) ==18382== by 0x3E8104B9A6: g_main_context_new (gmain.c:553) ==18382== by 0x3E815B0BF0: QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*) (qeventdispatcher_glib.cpp:312) ==18382== by 0x3E815B0CEF: QEventDispatcherGlib::QEventDispatcherGlib(QObject*) (qeventdispatcher_glib.cpp:359) ==18382== by 0x3E8147F121: QThreadPrivate::createEventDispatcher(QThreadData*) (qthread_unix.cpp:268) ==18382== by 0x3E8147F79B: QThreadPrivate::start(void*) (qthread_unix.cpp:302) ==18382== by 0x32FD607D95: start_thread (pthread_create.c:305) ==18382== by 0x32FCAEAA1C: clone (clone.S:115) ==18382== ==18382== 1,488 bytes in 3 blocks are possibly lost in loss record 392 of 417 ==18382== at 0x4A07030: memalign (vg_replace_malloc.c:727) ==18382== by 0x4A07127: posix_memalign (vg_replace_malloc.c:876) ==18382== by 0x3E8101CCB8: slab_allocator_alloc_chunk (gslice.c:1381) ==18382== by 0x3E81069F77: g_slice_alloc (gslice.c:724) ==18382== by 0x3E8106A065: g_slice_alloc0 (gslice.c:1029) ==18382== by 0x3E81073099: g_thread_self (gthread.c:1004) ==18382== by 0x3E8104CE7A: g_main_context_acquire (gmain.c:2619) ==18382== by 0x3E8104CF2C: g_main_context_push_thread_default (gmain.c:660) ==18382== by 0x3E815B09D4: QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*) (qeventdispatcher_glib.cpp:317) ==18382== by 0x3B5C87C86E: QGuiEventDispatcherGlibPrivate::QGuiEventDispatcherGlibPrivate() (qguieventdispatcher_glib.cpp:171) ==18382== by 0x3B5C87C93D: QGuiEventDispatcherGlib::QGuiEventDispatcherGlib(QObject*) (qguieventdispatcher_glib.cpp:186) ==18382== by 0x3B5C843597: QApplicationPrivate::createEventDispatcher() (qapplication_x11.cpp:629) ==18382== ==18382== 1,688 (136 direct, 1,552 indirect) bytes in 1 blocks are definitely lost in loss record 393 of 417 ==18382== at 0x4A09772: realloc (vg_replace_malloc.c:662) ==18382== by 0x32FE65D2B4: load_generic (lcGeneric.c:186) ==18382== by 0x32FE65EEC0: initialize (lcGeneric.c:1013) ==18382== by 0x32FE65F6C5: _XlcCreateLC (lcPubWrap.c:90) ==18382== by 0x32FE682FBF: _XlcUtf8Loader (lcUTF8Load.c:47) ==18382== by 0x32FE666F45: _XOpenLC (lcWrap.c:294) ==18382== by 0x32FE66716A: _XrmInitParseInfo (lcWrap.c:369) ==18382== by 0x32FE6508E7: XrmGetStringDatabase (Xrm.c:502) ==18382== by 0x32FE629C10: InitDefaults (GetDflt.c:171) ==18382== by 0x32FE629E87: XGetDefault (GetDflt.c:243) ==18382== by 0x3B5C842B65: getXDefault(char const*, char const*, int*) [clone .clone.97] (qapplication_x11.cpp:1584) ==18382== by 0x3B5C85041B: qt_init(QApplicationPrivate*, int, _XDisplay*, unsigned long, unsigned long) (qapplication_x11.cpp:2188) ==18382== ==18382== 3,472 bytes in 7 blocks are possibly lost in loss record 403 of 417 ==18382== at 0x4A07030: memalign (vg_replace_malloc.c:727) ==18382== by 0x4A07127: posix_memalign (vg_replace_malloc.c:876) ==18382== by 0x3E8101CCB8: slab_allocator_alloc_chunk (gslice.c:1381) ==18382== by 0x3E81069F77: g_slice_alloc (gslice.c:724) ==18382== by 0x3E81020651: g_ptr_array_sized_new (garray.c:884) ==18382== by 0x3E8104B993: g_main_context_new (gmain.c:549) ==18382== by 0x3E815B0BF0: QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*) (qeventdispatcher_glib.cpp:312) ==18382== by 0x3E815B0CEF: QEventDispatcherGlib::QEventDispatcherGlib(QObject*) (qeventdispatcher_glib.cpp:359) ==18382== by 0x3E8147F121: QThreadPrivate::createEventDispatcher(QThreadData*) (qthread_unix.cpp:268) ==18382== by 0x3E8147F79B: QThreadPrivate::start(void*) (qthread_unix.cpp:302) ==18382== by 0x32FD607D95: start_thread (pthread_create.c:305) ==18382== by 0x32FCAEAA1C: clone (clone.S:115) ==18382== ==18382== 3,968 bytes in 8 blocks are possibly lost in loss record 406 of 417 ==18382== at 0x4A07030: memalign (vg_replace_malloc.c:727) ==18382== by 0x4A07127: posix_memalign (vg_replace_malloc.c:876) ==18382== by 0x3E8101CCB8: slab_allocator_alloc_chunk (gslice.c:1381) ==18382== by 0x3E81069F77: g_slice_alloc (gslice.c:724) ==18382== by 0x3E8106A065: g_slice_alloc0 (gslice.c:1029) ==18382== by 0x3E81073099: g_thread_self (gthread.c:1004) ==18382== by 0x3E8104CE7A: g_main_context_acquire (gmain.c:2619) ==18382== by 0x3E8104CF2C: g_main_context_push_thread_default (gmain.c:660) ==18382== by 0x3E815B09D4: QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*) (qeventdispatcher_glib.cpp:317) ==18382== by 0x3E815B0CEF: QEventDispatcherGlib::QEventDispatcherGlib(QObject*) (qeventdispatcher_glib.cpp:359) ==18382== by 0x3E8147F121: QThreadPrivate::createEventDispatcher(QThreadData*) (qthread_unix.cpp:268) ==18382== by 0x3E8147F79B: QThreadPrivate::start(void*) (qthread_unix.cpp:302) ==18382== ==18382== LEAK SUMMARY: ==18382== definitely lost: 668 bytes in 7 blocks ==18382== indirectly lost: 3,516 bytes in 61 blocks ==18382== possibly lost: 11,168 bytes in 27 blocks ==18382== still reachable: 162,714 bytes in 1,729 blocks ==18382== suppressed: 0 bytes in 0 blocks ==18382== Reachable blocks (those to which a pointer was found) are not shown. ==18382== To see them, rerun with: --leak-check=full --show-reachable=yes ==18382== ==18382== For counts of detected and suppressed errors, rerun with: -v ==18382== ERROR SUMMARY: 14 errors from 14 contexts (suppressed: 2 from 2) Maybe it is something else than fileindexing? could this be a duplicate of bug 304476 ? I have tested this for every upgrade since I filed the bug and it appears like it disappeared with the upgrade to 4.10. I'm doing some more testing to confirm. Marking fixed - re-open if it happens again |