Summary: | Dolphin is unresponsive for a second or two on startup | ||
---|---|---|---|
Product: | [Unmaintained] nepomuk | Reporter: | Kai Uwe Broulik <kde> |
Component: | widgets - FileMetadataWidget | Assignee: | Nepomuk Bugs Coordination <nepomuk-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | emmanuelpescosta099, frank78ac, me |
Priority: | NOR | ||
Version: | 4.10.80 | ||
Target Milestone: | --- | ||
Platform: | Other | ||
OS: | Linux | ||
Latest Commit: | http://commits.kde.org/nepomuk-widgets/376b6de7916138f75c8c08b4fdfc1a6fbf26102d | Version Fixed In: | |
Sentry Crash Report: |
Description
Kai Uwe Broulik
2013-07-01 20:19:35 UTC
Thanks for the bug report, but I cannot reproduce the problem. Please run Dolphin in gdb, stop it using Ctrl+Z while it's frozen, and provide a backtrace. It would also be interesting which view mode you use, what the folder contents are sorted by, and how many folders/files are in places where you can reproduce this problem. I can reproduce this problem with enabled tooltips or with a visible information panel. The freeze happenes somewhere in nepomuk-widgets/nepomuk-core. (FileMetaDataWidget calls userVisibleRoles which blocks Dolphin) Thanks Emmanuel for testing it. I guess we should reassign to Nepomuk then. However, I still think that a backtrace would be helpful (I cannot test it myself because I'm currently at the machine where I build kde-baseapps master on top of kdelibs 4.10 with some hacks). Could you please provide be a backtrace? You'll have to gdb into dolphin when it is frozen.
gdb --pid DolphinPID
> thread apply all backtrace
Here is the backtrace: (Compiled kdelibs, nepomuk-core, nepomuk-widgets and kde-baseapps from git master) (gdb) thread apply all backtrace Thread 3 (Thread 0x7fffd3df2700 (LWP 30849)): #0 0x00007ffff1d6b08d in poll () from /usr/lib/libc.so.6 #1 0x00007fffed3e9094 in ?? () from /usr/lib/libglib-2.0.so.0 #2 0x00007fffed3e919c in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0 #3 0x00007ffff2e918f6 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4 #4 0x00007ffff2e6396f in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4 #5 0x00007ffff2e63c65 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4 #6 0x00007ffff2d6267f in QThread::exec() () from /usr/lib/libQtCore.so.4 #7 0x00007ffff2e45113 in ?? () from /usr/lib/libQtCore.so.4 #8 0x00007ffff2d64d1f in ?? () from /usr/lib/libQtCore.so.4 #9 0x00007ffff2ad5dd2 in start_thread () from /usr/lib/libpthread.so.0 #10 0x00007ffff1d73cdd in clone () from /usr/lib/libc.so.6 Thread 2 (Thread 0x7fffd8c35700 (LWP 30846)): #0 0x00007ffff1d6cd03 in select () from /usr/lib/libc.so.6 #1 0x00007ffff2e41ed3 in ?? () from /usr/lib/libQtCore.so.4 #2 0x00007ffff2d64d1f in ?? () from /usr/lib/libQtCore.so.4 #3 0x00007ffff2ad5dd2 in start_thread () from /usr/lib/libpthread.so.0 #4 0x00007ffff1d73cdd in clone () from /usr/lib/libc.so.6 Thread 1 (Thread 0x7ffff7f7e7c0 (LWP 30838)): #0 0x00007ffff1d6cd03 in select () from /usr/lib/libc.so.6 #1 0x00007fffd810c6e1 in ?? () from /usr/lib64/virtodbc_r.so #2 0x00007fffd8111451 in ?? () from /usr/lib64/virtodbc_r.so #3 0x00007fffd80dd7cd in ?? () from /usr/lib64/virtodbc_r.so #4 0x00007fffd80e1835 in ?? () from /usr/lib64/virtodbc_r.so #5 0x00007fffd8c4c5e4 in ?? () from /usr/lib/libiodbc.so.2 #6 0x00007fffd8c4c914 in SQLExecDirect () from /usr/lib/libiodbc.so.2 #7 0x00007fffd8eaa257 in ?? () from /usr/lib/soprano/libsoprano_virtuosobackend.so #8 0x00007fffd8eaa580 in ?? () from /usr/lib/soprano/libsoprano_virtuosobackend.so #9 0x00007fffd8e94e72 in ?? () from /usr/lib/soprano/libsoprano_virtuosobackend.so #10 0x00007fffd8e95211 in ?? () from /usr/lib/soprano/libsoprano_virtuosobackend.so #11 0x00007fffd8e953d8 in ?? () from /usr/lib/soprano/libsoprano_virtuosobackend.so #12 0x00007ffff6458dc6 in Nepomuk2::MainModel::executeQuery (this=this@entry=0x8b8770, query=..., language=language@entry=Soprano::Query::QueryLanguageSparql, userQueryLanguage=...) at /home/emmanuel/kde-devel/src/nepomuk-core/libnepomukcore/resource/nepomukmainmodel.cpp:210 #13 0x00007ffff6460a03 in Nepomuk2::Types::EntityPrivate::load (this=0x12203d0) at /home/emmanuel/kde-devel/src/nepomuk-core/libnepomukcore/types/entity.cpp:76 #14 0x00007ffff64601b8 in Nepomuk2::Types::EntityPrivate::init (this=0x12203d0) at /home/emmanuel/kde-devel/src/nepomuk-core/libnepomukcore/types/entity.cpp:51 #15 0x00007ffff6460476 in Nepomuk2::Types::Entity::userVisible (this=this@entry=0x7fffffffd8d0) at /home/emmanuel/kde-devel/src/nepomuk-core/libnepomukcore/types/entity.cpp:293 #16 0x00007ffff673d02b in Nepomuk2::MetadataFilter::filter (this=<optimized out>, data=...) at /home/emmanuel/kde-devel/src/nepomuk-widgets/ui/metadatafilter.cpp:167 #17 0x00007ffff6732258 in Nepomuk2::FileMetaDataWidget::Private::slotLoadingFinished (this=0xf6e400) at /home/emmanuel/kde-devel/src/nepomuk-widgets/ui/filemetadatawidget.cpp:145 #18 0x00007ffff2e788ec in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4 #19 0x00007ffff6735260 in Nepomuk2::FileMetaDataProvider::loadingFinished (this=<optimized out>) at /home/emmanuel/kde-devel/build/nepomuk-widgets/filemetadataprovider_p.moc:109 #20 0x00007ffff6736a39 in Nepomuk2::FileMetaDataProvider::Private::slotLoadingFinished (this=0xde9270, loader=0x0) at /home/emmanuel/kde-devel/src/nepomuk-widgets/ui/filemetadataprovider.cpp:251 #21 0x00007ffff2e788ec in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4 #22 0x00007ffff6728fef in Nepomuk2::ResourceLoader::finished (this=<optimized out>, _t1=0x138df70) at /home/emmanuel/kde-devel/build/nepomuk-widgets/moc_resourceloader.cpp:103 #23 0x00007ffff2e7cc5e in QObject::event(QEvent*) () from /usr/lib/libQtCore.so.4 #24 0x00007ffff3fd80ac in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4 #25 0x00007ffff3fde670 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4 #26 0x00007ffff4cec7b6 in KApplication::notify (this=0x7fffffffe4b0, receiver=0x138df70, event=0x7fffc401c310) at /home/emmanuel/kde-devel/src/kdelibs/kdeui/kernel/kapplication.cpp:311 #27 0x00007ffff2e64c3d in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4 #28 0x00007ffff2e67c8f in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/libQtCore.so.4 #29 0x00007ffff2e91ef3 in ?? () from /usr/lib/libQtCore.so.4 #30 0x00007fffed3e8da6 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0 #31 0x00007fffed3e90f8 in ?? () from /usr/lib/libglib-2.0.so.0 ---Type <return> to continue, or q <return> to quit--- #32 0x00007fffed3e919c in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0 #33 0x00007ffff2e918d5 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4 #34 0x00007ffff4075066 in ?? () from /usr/lib/libQtGui.so.4 #35 0x00007ffff2e6396f in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4 #36 0x00007ffff2e63c65 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4 #37 0x00007ffff2e68ccb in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4 #38 0x00007ffff7b6eb2a in kdemain (argc=1, argv=0x7fffffffe5e8) at /home/emmanuel/kde-devel/src/kde-baseapps/dolphin/src/main.cpp:93 #39 0x00007ffff1cafa15 in __libc_start_main () from /usr/lib/libc.so.6 #40 0x0000000000400891 in _start () Git commit 376b6de7916138f75c8c08b4fdfc1a6fbf26102d by Vishesh Handa. Committed on 07/07/2013 at 22:08. Pushed by vhanda into branch 'master'. ResourceLoader: Load all the associated properties as well When using the FileMetadataWidget, the MetadatFilter class is used which internally uses Types::Property. This Property class is unfortunately synchronous and can block for a bit. Therefore we load all the properties in this separate thread so that they are always there in the cache. This never used to be a problem earlier because connecting to the Nepomuk Server used to be quite fast. Since now we connect directly to virtuoso, it can take some time and block. M +8 -1 ui/resourceloader.cpp http://commits.kde.org/nepomuk-widgets/376b6de7916138f75c8c08b4fdfc1a6fbf26102d |