Bug 242979 - opening the desktop effects kcm causes high CPU usage
Summary: opening the desktop effects kcm causes high CPU usage
Status: RESOLVED WORKSFORME
Alias: None
Product: kwin
Classification: Plasma
Component: general (show other bugs)
Version: unspecified
Platform: openSUSE Linux
: NOR normal
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords: triaged
Depends on:
Blocks:
 
Reported: 2010-06-27 23:39 UTC by S. Burmeister
Modified: 2018-10-27 02:55 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description S. Burmeister 2010-06-27 23:39:53 UTC
Version:           unspecified (using Devel) 
OS:                Linux

If I open the desktop effects kcm I get a high cpu usage. I attached gdb to the process and got the following output.

(gdb) bt
#0  0xb6160eb7 in memset () from /lib/libc.so.6
#1  0xb6157e67 in _int_free () from /lib/libc.so.6
#2  0xb615a37d in _int_realloc () from /lib/libc.so.6
#3  0xb615a9d8 in realloc_check () from /lib/libc.so.6
#4  0xb615be3f in realloc () from /lib/libc.so.6
#5  0xb63a2f63 in qRealloc (ptr=0x84f78d0, size=13616) at global/qmalloc.cpp:65
#6  0xb6400c1c in QVectorData::reallocate (x=0x84f78d0, newsize=13616, oldsize=13516, 
    alignment=4) at tools/qvector.cpp:74
#7  0xb6b6fd36 in ?? () from /usr/lib/libQtGui.so.4
#8  0xb6b75aab in ?? () from /usr/lib/libQtGui.so.4
#9  0xb6b9e69f in QPainterPath::addRect(QRectF const&) () from /usr/lib/libQtGui.so.4
#10 0xb6c43aef in ?? () from /usr/lib/libQtGui.so.4
#11 0xb6b93bce in QPainter::drawTextItem(QPointF const&, QTextItem const&) ()
   from /usr/lib/libQtGui.so.4
#12 0xb6ca7d79 in QTextLine::draw(QPainter*, QPointF const&, QTextLayout::FormatRange const*) const () from /usr/lib/libQtGui.so.4
#13 0xb6b95628 in ?? () from /usr/lib/libQtGui.so.4
#14 0xb6b965bf in QPainter::drawText(QRect const&, int, QString const&, QRect*) ()
   from /usr/lib/libQtGui.so.4
#15 0xb6d3f602 in QStyle::drawItemText(QPainter*, QRect const&, int, QPalette const&, bool, QString const&, QPalette::ColorRole) const () from /usr/lib/libQtGui.so.4
#16 0xb7548744 in KStyle::drawItemText (this=0x80b01c0, painter=0xbfa5da6c, rect=..., 
---Type <return> to continue, or q <return> to quit---
    flags=3218, pal=..., enabled=true, text=..., textRole=QPalette::WindowText)
    at /usr/src/debug/kdelibs-4.4.90/kdeui/kernel/kstyle.cpp:437
#17 0xb4f65770 in Oxygen::Style::drawItemText (this=0x80b01c0, painter=0xbfa5da6c, r=..., 
    alignment=3218, palette=..., enabled=true, text=..., textRole=QPalette::WindowText)
    at /usr/src/debug/kdebase-workspace-4.4.90/kstyles/oxygen/oxygenstyle.cpp:335
#18 0xb6e80b79 in QLabel::paintEvent(QPaintEvent*) () from /usr/lib/libQtGui.so.4
#19 0xb6a7ff5a in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4
#20 0xb6e79765 in QFrame::event(QEvent*) () from /usr/lib/libQtGui.so.4
#21 0xb6e7c400 in QLabel::event(QEvent*) () from /usr/lib/libQtGui.so.4
#22 0xb6a26c64 in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /usr/lib/libQtGui.so.4
#23 0xb6a2eca4 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#24 0xb753dc01 in KApplication::notify (this=0xbfa620ac, receiver=0x837b918, event=
    0xbfa5e054) at /usr/src/debug/kdelibs-4.4.90/kdeui/kernel/kapplication.cpp:309
#25 0xb64a1e0e in QCoreApplication::notifyInternal (this=0xbfa620ac, receiver=0x837b918, 
    event=0xbfa5e054) at kernel/qcoreapplication.cpp:726
#26 0xb6a7ac82 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQtGui.so.4
#27 0xb6a7b9d7 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#28 0xb6a7b89d in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const---Type <return> to continue, or q <return> to quit---
&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#29 0xb6a7b89d in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#30 0xb6a7b89d in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#31 0xb6a7a9d8 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQtGui.so.4
#32 0xb6a7b9d7 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#33 0xb6a7b89d in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#34 0xb6a7a9d8 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQtGui.so.4
#35 0xb6a7b9d7 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#36 0xb6a7a9d8 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, in---Type <return> to continue, or q <return> to quit---
t, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQtGui.so.4
#37 0xb6a7b9d7 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#38 0xb6a7a9d8 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQtGui.so.4
#39 0xb6a7b9d7 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#40 0xb6a7b89d in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#41 0xb6a7a9d8 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQtGui.so.4
#42 0xb6a7b9d7 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#43 0xb6a7a9d8 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQtGui.so.4
#44 0xb6a7b9d7 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
---Type <return> to continue, or q <return> to quit---
#45 0xb6a7a9d8 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQtGui.so.4
#46 0xb6a7b9d7 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#47 0xb6a7a9d8 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQtGui.so.4
#48 0xb6a7b9d7 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#49 0xb6a7a9d8 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQtGui.so.4
#50 0xb6a7b9d7 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#51 0xb6a7a9d8 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQtGui.so.4
#52 0xb6a7b9d7 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#53 0xb6a7a9d8 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQtGui.so.4
---Type <return> to continue, or q <return> to quit---
#54 0xb6a7b9d7 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#55 0xb6a7a9d8 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQtGui.so.4
#56 0xb6a7b9d7 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#57 0xb6a7a9d8 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQtGui.so.4
#58 0xb6a7b9d7 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#59 0xb6a7a9d8 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQtGui.so.4
#60 0xb6a7b9d7 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#61 0xb6a7a9d8 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQtGui.so.4
#62 0xb6c58a98 in ?? () from /usr/lib/libQtGui.so.4
#63 0xb6a706fb in QWidgetPrivate::syncBackingStore() () from /usr/lib/libQtGui.so.4
---Type <return> to continue, or q <return> to quit---
#64 0xb6a80a16 in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4
#65 0xb6e9620c in QMainWindow::event(QEvent*) () from /usr/lib/libQtGui.so.4
#66 0xb7623e64 in KMainWindow::event (this=0x81241d8, ev=0x84a1860)
    at /usr/src/debug/kdelibs-4.4.90/kdeui/widgets/kmainwindow.cpp:1100
#67 0xb7662eb2 in KXmlGuiWindow::event (this=0x81241d8, ev=0x84a1860)
    at /usr/src/debug/kdelibs-4.4.90/kdeui/xmlgui/kxmlguiwindow.cpp:130
#68 0xb6a26c64 in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /usr/lib/libQtGui.so.4
#69 0xb6a2eca4 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#70 0xb753dc01 in KApplication::notify (this=0xbfa620ac, receiver=0x81241d8, 
    event=0x84a1860) at /usr/src/debug/kdelibs-4.4.90/kdeui/kernel/kapplication.cpp:309
#71 0xb64a1e0e in QCoreApplication::notifyInternal (this=0xbfa620ac, receiver=0x81241d8, 
    event=0x84a1860) at kernel/qcoreapplication.cpp:726
#72 0xb64a59b4 in sendEvent (receiver=0x0, event_type=0, data=0x8061e28)
    at kernel/qcoreapplication.h:215
#73 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x8061e28)
    at kernel/qcoreapplication.cpp:1367
#74 0xb64a5b9c in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0)
    at kernel/qcoreapplication.cpp:1260
#75 0xb64cd83d in sendPostedEvents (s=0x8085520) at kernel/qcoreapplication.h:220
#76 postEventSourceDispatch (s=0x8085520) at kernel/qeventdispatcher_glib.cpp:276
#77 0xb5d96b49 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
---Type <return> to continue, or q <return> to quit---
#78 0xb5d97350 in ?? () from /usr/lib/libglib-2.0.so.0
#79 0xb5d9760e in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#80 0xb64cdd4b in QEventDispatcherGlib::processEvents (this=0x80827e8, flags=...)
    at kernel/qeventdispatcher_glib.cpp:412
#81 0xb6ad719a in ?? () from /usr/lib/libQtGui.so.4
#82 0xb64a111d in QEventLoop::processEvents (this=0xbfa62004, flags=...)
    at kernel/qeventloop.cpp:149
#83 0xb64a1319 in QEventLoop::exec (this=0xbfa62004, flags=...) at kernel/qeventloop.cpp:201
#84 0xb64a5c70 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1003
#85 0xb6a24164 in QApplication::exec() () from /usr/lib/libQtGui.so.4
#86 0x080577be in main (argc=Cannot access memory at address 0x5baa5
)
    at /usr/src/debug/kdebase-workspace-4.4.90/systemsettings/app/main.cpp:49


Reproducible: Always
Comment 1 Thomas Lübking 2010-06-28 14:22:46 UTC
as long as you don't enter an infinte loop, a stackdump is hardly helpful regarding performance issues.

first you need to determine which process causes the cpu load (top, could be induced by the kcm but occur in X11 or -through compositing- kwin)

then you have to profile it (try sysprof) to get some usable numbers

last: the dump ends in some style painting. you might want to try "kcmshell4 kwincompositing --style cde" to quick-check whether the style is the culprit (but as mentioned, this cannot be really read of of a stackdump)
Comment 2 Martin Flöser 2011-03-19 10:17:47 UTC
is this still an issue?
Comment 3 Martin Flöser 2012-04-06 20:12:35 UTC
(In reply to comment #2)
> is this still an issue?
apparently not...
Comment 4 Martin Flöser 2012-04-13 19:23:52 UTC
Bulk change: move all KWin kcm bugs to product kwin
Comment 5 Andrew Crouthamel 2018-09-23 02:29:40 UTC
Dear Bug Submitter,

This bug has been in NEEDSINFO status with no change for at least 15 days. Please provide the requested information as soon as possible and set the bug status as REPORTED. Due to regular bug tracker maintenance, if the bug is still in NEEDSINFO status with no change in 30 days, the bug will be closed as RESOLVED > WORKSFORME due to lack of needed information.

For more information about our bug triaging procedures please read the wiki located here: https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

If you have already provided the requested information, please set the bug status as REPORTED so that the KDE team knows that the bug is ready to be confirmed.

Thank you for helping us make KDE software even better for everyone!
Comment 6 Andrew Crouthamel 2018-10-27 02:55:04 UTC
Dear Bug Submitter,

This bug has been in NEEDSINFO status with no change for at least 30 days. The bug is now closed as RESOLVED > WORKSFORME due to lack of needed information.

For more information about our bug triaging procedures please read the wiki located here: https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

Thank you for helping us make KDE software even better for everyone!