Frameworks & Performance Question

Christoph Cullmann cullmann at absint.com
Sun Dec 29 19:07:38 UTC 2013


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

-- 
----------------------------- Dr.-Ing. Christoph Cullmann ---------
AbsInt Angewandte Informatik GmbH      Email: cullmann at AbsInt.com
Science Park 1                         Tel:   +49-681-38360-22
66123 Saarbrücken                      Fax:   +49-681-38360-20
GERMANY                                WWW:   http://www.AbsInt.com
--------------------------------------------------------------------
Geschäftsführung: Dr.-Ing. Christian Ferdinand
Eingetragen im Handelsregister des Amtsgerichts Saarbrücken, HRB 11234


More information about the Kde-frameworks-devel mailing list