Bug 1237269

Summary: kplasmashell hangs with 100% cpu.
Product: [Fedora] Fedora Reporter: Mathias Fröhlich <Mathias.Froehlich>
Component: qt5-qtdeclarativeAssignee: Rex Dieter <rdieter>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 22CC: jgrulich, jreznik, kevin, nfd, rdieter, rnovacek, than
Target Milestone: ---Keywords: Patch, Reopened
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: kf5-kdeclarative-5.12.0-2.fc22 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-01-28 07:17:39 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
Mentioned patch. none

Description Mathias Fröhlich 2015-06-30 16:50:54 UTC
Created attachment 1044737 [details]
Mentioned patch.

Description of problem:

kplasmashell hangs with 100% cpu every now and then.

Version-Release number of selected component (if applicable):

qt5-qtdeclarative-5.4.2-2.fc22

How reproducible:

Sporadic.


Additional info:

kplasmashell hangs in qt5-declerative/QQuickShaderEffectSource::updatePaintNode in an endless loop.
Attached is a workaround patch that fixes the problem here. It appears that the texture size ends up being zero which makes the successive while loops endless.

Comment 1 Rex Dieter 2015-08-03 12:17:12 UTC
Can you please test,
https://admin.fedoraproject.org/updates/FEDORA-2015-12448/kf5-kdeclarative-5.12.0-2.fc22

it may help here

Comment 2 Fedora Update System 2015-08-03 12:17:39 UTC
kf5-kdeclarative-5.12.0-2.fc22 has been submitted as an update for Fedora 22.
https://admin.fedoraproject.org/updates/FEDORA-2015-12448/kf5-kdeclarative-5.12.0-2.fc22

Comment 3 Mathias Fröhlich 2015-08-03 21:14:09 UTC
No, the problem just happened again.

I saved the backtrace this time.

(gdb) where
#0  QQuickShaderEffectSource::updatePaintNode (this=0x496e3f0, oldNode=0x5e47a90)
    at /usr/src/debug/qtdeclarative-opensource-src-5.4.2/src/quick/items/qquickshadereffectsource.cpp:638
#1  0x00007f522952f647 in QQuickWindowPrivate::updateDirtyNode (this=this@entry=0x2916ef0, item=item@entry=0x496e3f0)
    at /usr/src/debug/qtdeclarative-opensource-src-5.4.2/src/quick/items/qquickwindow.cpp:2823
#2  0x00007f52295300eb in QQuickWindowPrivate::updateDirtyNodes (this=this@entry=0x2916ef0)
    at /usr/src/debug/qtdeclarative-opensource-src-5.4.2/src/quick/items/qquickwindow.cpp:2648
#3  0x00007f522953075e in QQuickWindowPrivate::syncSceneGraph (this=this@entry=0x2916ef0)
    at /usr/src/debug/qtdeclarative-opensource-src-5.4.2/src/quick/items/qquickwindow.cpp:340
#4  0x00007f52295014a0 in QSGGuiThreadRenderLoop::renderWindow (this=this@entry=0x1875a80, window=0x2b85110)
    at /usr/src/debug/qtdeclarative-opensource-src-5.4.2/src/quick/scenegraph/qsgrenderloop.cpp:359
#5  0x00007f5229501f31 in QSGGuiThreadRenderLoop::event (this=0x1875a80, e=<optimized out>)
    at /usr/src/debug/qtdeclarative-opensource-src-5.4.2/src/quick/scenegraph/qsgrenderloop.cpp:462
#6  0x00007f52263147ec in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib64/libQt5Widgets.so.5
#7  0x00007f5226319e90 in QApplication::notify(QObject*, QEvent*) () from /lib64/libQt5Widgets.so.5
#8  0x00007f5224d8267b in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /lib64/libQt5Core.so.5
#9  0x00007f5224dd898d in QTimerInfoList::activateTimers() () from /lib64/libQt5Core.so.5
#10 0x00007f5224dd8ec9 in idleTimerSourceDispatch(_GSource*, int (*)(void*), void*) () from /lib64/libQt5Core.so.5
#11 0x00007f521f149a8a in g_main_context_dispatch () from /lib64/libglib-2.0.so.0
#12 0x00007f521f149e20 in g_main_context_iterate.isra () from /lib64/libglib-2.0.so.0
#13 0x00007f521f149ecc in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#14 0x00007f5224dd9b6f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQt5Core.so.5
#15 0x00007f5224d7feba in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQt5Core.so.5
#16 0x00007f5224d87a2c in QCoreApplication::exec() () from /lib64/libQt5Core.so.5
#17 0x000000000042ef16 in main ()

Comment 4 Fedora Update System 2015-08-05 22:29:24 UTC
kf5-kdeclarative-5.12.0-2.fc22 has been pushed to the Fedora 22 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 5 Mathias Fröhlich 2015-08-06 07:37:16 UTC
Well, the note is already there with Comment #3.
Reopening ...

Comment 6 Fredy Neeser 2015-08-07 12:48:52 UTC
kplasmashell had 100% cpu when mouse ptr "rested" in the KDE Panel area.
Update from Comment #1 fixes problem for me -- thanks!

Comment 7 Mathias Fröhlich 2015-08-21 06:04:45 UTC
The newly arrived qt5-qtdeclarative-5.5.0-3.fc22 does *NOT* fix the issue either!
Applying the patch still fixes this issue.

As I started, I don't know if it is already an error that the textureSize value
contains zero and that this root cause needs to be fixed.
But without either the root cause fixed or the workaround patch applied, the desktop hangs every some minutes - and is basically unusable.
The workaround runs now for 2 months here without problems. Except whenever I get a new upstream rpm update over my handrolled rpm installed, then the desktop hangs within some minutes.

Does anybody mind applying the provided workaround patch at least to the fedora rpms?

Thanks,

Mathias

Comment 8 Rex Dieter 2015-10-24 13:14:45 UTC
Added to 5.5.1 (currently in rawhide)

%changelog
* Sat Oct 24 2015 Rex Dieter <rdieter> 5.5.1-3
- workaround QQuickShaderEffectSource::updatePaintNode deadlock (#1237269, kde#348385)


Will include in subsequent f23/f22 qt 5.5.1 builds coming soon.

Comment 9 Mathias Fröhlich 2015-10-25 16:00:42 UTC
Plenty thanks for including!

As I have no f23/24/rawhide installed here, I cannot easily test.
But I assume that this helps me a lot with upcoming fedoras!!

Greetings

Mathias