On Sun, Dec 29, 2013 at 8:07 PM, Christoph Cullmann <cullm...@absint.com> wrote: > Hi, > > if I play around with Kate on KF5, it laggs like hell the whole time. > > I tried to profile, but guess I am stuck a bit. > > Interesting is that most times you see it lag and you interrupt it then, it > hangs around in: > > #0 0x00007ffff3fc1a90 in operator< (k1=..., k2=...) at > /home/cullmann/local/kf5/src/frameworks/kconfig/src/core/kconfigdata.h:126 > #1 0x00007ffff3fc4cce in qMapLessThanKey<KEntryKey> (key1=..., key2=...) at > /usr/include/qt5/QtCore/qmap.h:75 > #2 0x00007ffff3fc4c6d in QMapNode<KEntryKey, KEntry>::lowerBound > (this=0xab2ca0, akey=...) at /usr/include/qt5/QtCore/qmap.h:145 > #3 0x00007ffff3fc3d66 in QMapData<KEntryKey, KEntry>::findNode > (this=0x1086100, akey=...) at /usr/include/qt5/QtCore/qmap.h:292 > #4 0x00007ffff3fc8c9e in QMap<KEntryKey, KEntry>::find (this=0x647628, > akey=...) at /usr/include/qt5/QtCore/qmap.h:844 > #5 0x00007ffff3fc733a in KEntryMap::findExactEntry (this=0x647628, > group=..., key=..., flags=...) at > /home/cullmann/local/kf5/src/frameworks/kconfig/src/core/kconfigdata.cpp:45 > #6 0x00007ffff3fc7695 in KEntryMap::setEntry (this=0x647628, group=..., > key=..., value=..., options=...) > at > /home/cullmann/local/kf5/src/frameworks/kconfig/src/core/kconfigdata.cpp:90 > #7 0x00007ffff3fd4f74 in KConfigIniBackend::parseConfig (this=0x689850, > currentLocale=..., entryMap=..., options=..., merging=false) > at > /home/cullmann/local/kf5/src/frameworks/kconfig/src/core/kconfigini.cpp:270 > #8 0x00007ffff3fd3ef8 in KConfigIniBackend::parseConfig (this=0x689850, > currentLocale=..., entryMap=..., options=...) > at > /home/cullmann/local/kf5/src/frameworks/kconfig/src/core/kconfigini.cpp:66 > #9 0x00007ffff3fbf3bc in KConfigPrivate::parseConfigFiles (this=0x647600) at > /home/cullmann/local/kf5/src/frameworks/kconfig/src/core/kconfig.cpp:711 > #10 0x00007ffff3fbeaa0 in KConfig::reparseConfiguration (this=0x688130) at > /home/cullmann/local/kf5/src/frameworks/kconfig/src/core/kconfig.cpp:633 > #11 0x00007fffe5bad6b7 in KStyle::styleHint (this=0x658da0, > hint=QStyle::SH_Widget_ShareActivation, option=0x0, widget=0x9f2050, > returnData=0x0) > at > /home/cullmann/local/kf5/src/frameworks/frameworkintegration/src/kstyle/kstyle.cpp:338 > #12 0x00007fffe5e12afe in Oxygen::Style::styleHint (this=0x658da0, > hint=<optimized out>, option=0x0, widget=<optimized out>, returnData=0x0) > at > /home/cullmann/local/kf5/src/kde-workspace/kstyles/oxygen/oxygenstyle.cpp:873 > #13 0x00007ffff31f798a in QWidget::isActiveWindow() const () from > /usr/lib64/libQt5Widgets.so.5 > #14 0x00007ffff31f7b25 in QWidget::palette() const () from > /usr/lib64/libQt5Widgets.so.5 > #15 0x00007ffff3206ab8 in QWidget::event(QEvent*) () from > /usr/lib64/libQt5Widgets.so.5 > #16 0x00007ffff31cb0bc in QApplicationPrivate::notify_helper(QObject*, > QEvent*) () from /usr/lib64/libQt5Widgets.so.5 > #17 0x00007ffff31d0286 in QApplication::notify(QObject*, QEvent*) () from > /usr/lib64/libQt5Widgets.so.5 > #18 0x00007ffff1f4d2cd in QCoreApplication::notifyInternal(QObject*, QEvent*) > () from /usr/lib64/libQt5Core.so.5 > #19 0x00007ffff320683b in QWidget::event(QEvent*) () from > /usr/lib64/libQt5Widgets.so.5 > #20 0x00007ffff33599d7 in QStatusBar::event(QEvent*) () from > /usr/lib64/libQt5Widgets.so.5 > #21 0x00007ffff31cb0bc in QApplicationPrivate::notify_helper(QObject*, > QEvent*) () from /usr/lib64/libQt5Widgets.so.5 > #22 0x00007ffff31d0286 in QApplication::notify(QObject*, QEvent*) () from > /usr/lib64/libQt5Widgets.so.5 > #23 0x00007ffff1f4d2cd in QCoreApplication::notifyInternal(QObject*, QEvent*) > () from /usr/lib64/libQt5Core.so.5 > #24 0x00007ffff320683b in QWidget::event(QEvent*) () from > /usr/lib64/libQt5Widgets.so.5 > #25 0x00007ffff330231e in QFrame::event(QEvent*) () from > /usr/lib64/libQt5Widgets.so.5 > #26 0x00007ffff31cb0bc in QApplicationPrivate::notify_helper(QObject*, > QEvent*) () from /usr/lib64/libQt5Widgets.so.5 > #27 0x00007ffff31d0286 in QApplication::notify(QObject*, QEvent*) () from > /usr/lib64/libQt5Widgets.so.5 > #28 0x00007ffff1f4d2cd in QCoreApplication::notifyInternal(QObject*, QEvent*) > () from /usr/lib64/libQt5Core.so.5 > #29 0x00007ffff320683b in QWidget::event(QEvent*) () from > /usr/lib64/libQt5Widgets.so.5 > #30 0x00007ffff31cb0bc in QApplicationPrivate::notify_helper(QObject*, > QEvent*) () from /usr/lib64/libQt5Widgets.so.5 > #31 0x00007ffff31d0286 in QApplication::notify(QObject*, QEvent*) () from > /usr/lib64/libQt5Widgets.so.5 > #32 0x00007ffff1f4d2cd in QCoreApplication::notifyInternal(QObject*, QEvent*) > () from /usr/lib64/libQt5Core.so.5 > #33 0x00007ffff320683b in QWidget::event(QEvent*) () from > /usr/lib64/libQt5Widgets.so.5 > #34 0x00007ffff330231e in QFrame::event(QEvent*) () from > /usr/lib64/libQt5Widgets.so.5 > #35 0x00007ffff31cb0bc in QApplicationPrivate::notify_helper(QObject*, > QEvent*) () from /usr/lib64/libQt5Widgets.so.5 > #36 0x00007ffff31d0286 in QApplication::notify(QObject*, QEvent*) () from > /usr/lib64/libQt5Widgets.so.5 > #37 0x00007ffff1f4d2cd in QCoreApplication::notifyInternal(QObject*, QEvent*) > () from /usr/lib64/libQt5Core.so.5 > #38 0x00007ffff320683b in QWidget::event(QEvent*) () from > /usr/lib64/libQt5Widgets.so.5 > #39 0x00007ffff31cb0bc in QApplicationPrivate::notify_helper(QObject*, > QEvent*) () from /usr/lib64/libQt5Widgets.so.5 > #40 0x00007ffff31d0286 in QApplication::notify(QObject*, QEvent*) () from > /usr/lib64/libQt5Widgets.so.5 > #41 0x00007ffff1f4d2cd in QCoreApplication::notifyInternal(QObject*, QEvent*) > () from /usr/lib64/libQt5Core.so.5 > #42 0x00007ffff320683b in QWidget::event(QEvent*) () from > /usr/lib64/libQt5Widgets.so.5 > ---Type <return> to continue, or q <return> to quit--- > #43 0x00007ffff31cb0bc in QApplicationPrivate::notify_helper(QObject*, > QEvent*) () from /usr/lib64/libQt5Widgets.so.5 > #44 0x00007ffff31d0286 in QApplication::notify(QObject*, QEvent*) () from > /usr/lib64/libQt5Widgets.so.5 > #45 0x00007ffff1f4d2cd in QCoreApplication::notifyInternal(QObject*, QEvent*) > () from /usr/lib64/libQt5Core.so.5 > #46 0x00007ffff320683b in QWidget::event(QEvent*) () from > /usr/lib64/libQt5Widgets.so.5 > #47 0x00007ffff330231e in QFrame::event(QEvent*) () from > /usr/lib64/libQt5Widgets.so.5 > #48 0x00007ffff31cb0bc in QApplicationPrivate::notify_helper(QObject*, > QEvent*) () from /usr/lib64/libQt5Widgets.so.5 > #49 0x00007ffff31d0286 in QApplication::notify(QObject*, QEvent*) () from > /usr/lib64/libQt5Widgets.so.5 > #50 0x00007ffff1f4d2cd in QCoreApplication::notifyInternal(QObject*, QEvent*) > () from /usr/lib64/libQt5Core.so.5 > #51 0x00007ffff320683b in QWidget::event(QEvent*) () from > /usr/lib64/libQt5Widgets.so.5 > #52 0x00007ffff31cb0bc in QApplicationPrivate::notify_helper(QObject*, > QEvent*) () from /usr/lib64/libQt5Widgets.so.5 > #53 0x00007ffff31d0286 in QApplication::notify(QObject*, QEvent*) () from > /usr/lib64/libQt5Widgets.so.5 > #54 0x00007ffff1f4d2cd in QCoreApplication::notifyInternal(QObject*, QEvent*) > () from /usr/lib64/libQt5Core.so.5 > #55 0x00007ffff320683b in QWidget::event(QEvent*) () from > /usr/lib64/libQt5Widgets.so.5 > #56 0x00007ffff330231e in QFrame::event(QEvent*) () from > /usr/lib64/libQt5Widgets.so.5 > #57 0x00007ffff31cb0bc in QApplicationPrivate::notify_helper(QObject*, > QEvent*) () from /usr/lib64/libQt5Widgets.so.5 > #58 0x00007ffff31d0286 in QApplication::notify(QObject*, QEvent*) () from > /usr/lib64/libQt5Widgets.so.5 > #59 0x00007ffff1f4d2cd in QCoreApplication::notifyInternal(QObject*, QEvent*) > () from /usr/lib64/libQt5Core.so.5 > #60 0x00007ffff320683b in QWidget::event(QEvent*) () from > /usr/lib64/libQt5Widgets.so.5 > #61 0x00007ffff331784b in QMainWindow::event(QEvent*) () from > /usr/lib64/libQt5Widgets.so.5 > #62 0x00007ffff638cc3d in KMainWindow::event (this=0x8976b0, > ev=0x7fffffffd100) at > /home/cullmann/local/kf5/src/frameworks/kxmlgui/src/kmainwindow.cpp:840 > #63 0x00007ffff63ca0db in KXmlGuiWindow::event (this=0x8976b0, > ev=0x7fffffffd100) at > /home/cullmann/local/kf5/src/frameworks/kxmlgui/src/kxmlguiwindow.cpp:118 > #64 0x00007ffff31cb0bc in QApplicationPrivate::notify_helper(QObject*, > QEvent*) () from /usr/lib64/libQt5Widgets.so.5 > #65 0x00007ffff31d0286 in QApplication::notify(QObject*, QEvent*) () from > /usr/lib64/libQt5Widgets.so.5 > #66 0x00007ffff1f4d2cd in QCoreApplication::notifyInternal(QObject*, QEvent*) > () from /usr/lib64/libQt5Core.so.5 > #67 0x00007ffff31cdadb in QApplication::setActiveWindow(QWidget*) () from > /usr/lib64/libQt5Widgets.so.5 > #68 0x00007ffff28f2ad9 in > QGuiApplicationPrivate::processActivatedEvent(QWindowSystemInterfacePrivate::ActivatedWindowEvent*) > () from /usr/lib64/libQt5Gui.so.5 > #69 0x00007ffff28f2de5 in > QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) > () from /usr/lib64/libQt5Gui.so.5 > #70 0x00007ffff28dbdb8 in > QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) > () from /usr/lib64/libQt5Gui.so.5 > #71 0x00007fffe94e3960 in ?? () from > /usr/lib64/qt5/plugins/platforms/libqxcb.so > #72 0x00007fffed33d316 in g_main_context_dispatch () from > /usr/lib64/libglib-2.0.so.0 > #73 0x00007fffed33d668 in ?? () from /usr/lib64/libglib-2.0.so.0 > #74 0x00007fffed33d70c in g_main_context_iteration () from > /usr/lib64/libglib-2.0.so.0 > #75 0x00007ffff1f9a08c in > QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () > from /usr/lib64/libQt5Core.so.5 > #76 0x00007ffff1f4bffb in > QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from > /usr/lib64/libQt5Core.so.5 > #77 0x00007ffff1f527b1 in QCoreApplication::exec() () from > /usr/lib64/libQt5Core.so.5 > #78 0x00007ffff7bd60a7 in kdemain (argc=1, argv=<optimized out>) at > /home/cullmann/local/kf5/kate/kate/app/katemain.cpp:447 > #79 0x00007ffff116abe5 in __libc_start_main () from /lib64/libc.so.6 > #80 0x0000000000400a91 in _start () at ../sysdeps/x86_64/start.S:122 > > It seems on nearly each event (like windows resize, ...) again and again the > reparseConfiguration code path is called. > > I use current KF5 frameworks (yesterday build from scratch) and a Qt 5.2.0 > build. > > Any clue what I could try to fix that would be really great. > > Greetings > Christoph >
What you see there are sorting operations: > #1 0x00007ffff3fc4cce in qMapLessThanKey<KEntryKey> (key1=..., key2=...) at > /usr/include/qt5/QtCore/qmap.h:75 But what i don't get is that it "seems" to be coming from config files. Those aren't usually big and certainly don't take a notable time when being parsed/sorted.. You could do a trace on kate to see which files it is reading. I'm just guessing here btw. I hope someone else can provide a more educated answer for you :) _______________________________________________ Kde-frameworks-devel mailing list Kde-frameworks-devel@kde.org https://mail.kde.org/mailman/listinfo/kde-frameworks-devel