Summary: | Kwin crashes everytime the "Dim Inactive" effect is turned off | ||
---|---|---|---|
Product: | [Plasma] kwin | Reporter: | Jekyll Wu <adaptee> |
Component: | effects-various | Assignee: | KWin default assignee <kwin-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | abulak |
Priority: | NOR | Flags: | thomas.luebking:
ReviewRequest+
|
Version: | git master | ||
Target Milestone: | --- | ||
Platform: | Compiled Sources | ||
OS: | Linux | ||
Latest Commit: | http://commits.kde.org/kde-workspace/3a2abb892ecb11886460ad8786e01e351aa6a249 | Version Fixed In: | 4.9 |
Description
Jekyll Wu
2012-05-07 19:07:08 UTC
how old is your master? git rev? I'd say the issue here is that the m_currentBuildQuadsIterator is initialized in startPaint() so that whenever the effect chain is altered between two paint passes, this can cause a crash for a dangeling iterator?! (also see the dupe, corrupted memory) Any reason why the iterator not initialized right before the quad building recursion is triggered (protected by a recursion check)? (In reply to comment #1) > how old is your master? git rev? I built it a few ours ago. Should be 08909f1ae3b485b4e3857b8d660d018d2476a37f . (In reply to comment #2) > I'd say the issue here is that the m_currentBuildQuadsIterator is > initialized in startPaint() so that whenever the effect chain is altered > between two paint passes, this can cause a crash for a dangeling iterator?! > (also see the dupe, corrupted memory) Is that possible at all? I would hope that after startPaint() no event would interrupt the processing till endPaint, shouldn't it? > > Any reason why the iterator not initialized right before the quad building > recursion is triggered (protected by a recursion check)? nobody added it yet? (In reply to comment #4) > (In reply to comment #2) > > I'd say the issue here is that the m_currentBuildQuadsIterator is > > initialized in startPaint() so that whenever the effect chain is altered > > between two paint passes, this can cause a crash for a dangeling iterator?! > > (also see the dupe, corrupted memory) > Is that possible at all? I would hope that after startPaint() no event would > interrupt the processing till endPaint, shouldn't it? No (well, hopefully not ;-), but there is of course event processing between two *starts*, so if the iterator is on the effect that gets removed inbetween it suddenly points nowhere (and it's not explicitly set back after the paint cycle ended or anywhen else - just "validated" by the recursion. > nobody added it yet? :-P Git commit 3a2abb892ecb11886460ad8786e01e351aa6a249 by Thomas Lübking. Committed on 07/05/2012 at 22:29. Pushed by luebking into branch 'master'. handle m_currentBuildQuadsIterator validation independent form painting pass issue is that the effect chain may (will) change between two paint passes and buildQuads is called outside the paint pass (shadows / decos whatever changes) so that the iterator may dangle FIXED-IN: 4.9 REVIEW: 104881 M +7 -1 kwin/effects.cpp http://commits.kde.org/kde-workspace/3a2abb892ecb11886460ad8786e01e351aa6a249 *** Bug 294451 has been marked as a duplicate of this bug. *** kde-4.9.5 Gentoo (unstable) I still experience the crash upon deactivating DimInactive. It's not certain that those bugs are dupes. @Jekyll - have you experienced the crash after the commit? (In reply to comment #10) > It's not certain that those bugs are dupes. > @Jekyll - have you experienced the crash after the commit? No crash for me anymore . Many thanks for the info. |