Summary: | KWin crash when did kwin_gles --replace and kwin --replace soon after. | ||
---|---|---|---|
Product: | [Plasma] kwin | Reporter: | Marek Paśnikowski <mail> |
Component: | general | Assignee: | KWin default assignee <kwin-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | crash | Keywords: | drkonqi |
Priority: | NOR | Flags: | thomas.luebking:
ReviewRequest+
|
Version: | 4.10.97 | ||
Target Milestone: | --- | ||
Platform: | openSUSE | ||
OS: | Linux | ||
URL: | https://git.reviewboard.kde.org/r/112020/ | ||
Latest Commit: | http://commits.kde.org/kde-workspace/97f94f8805d47c092424017c7dc860ea1f5d0239 | Version Fixed In: | |
Sentry Crash Report: |
Description
Marek Paśnikowski
2013-08-11 16:31:22 UTC
Crash on exit. Untabbing unmaximizes a window which has no valid restore position and attempts to place it. At this time, the stacking_order contains any amount of dangeling pointers (released clients) and the qobject_cast crashes. Luckily a very remote case, but valid issue nevertheless. Thanks for the report! Does the trace indicate that I had tabbed windows? I performed a quick reproduction with (1) and without (2) tabbed windows. 1. Crash happened and after kwin --replace the tabbed windows got separated. 2. No crash. The black screen happened anyway, so it's a separate bug. After submitting previous comment I got the idea to do just kwin --replace, as in kwin -> kwin; no kwin_gles. The crash happens then as well. #12 0x00007fde4c0dbcac in KWin::Client::untab (this=0x2b815b0, toGeometry=..., clientRemoved=<optimized out>) at /usr/src/debug/kde-workspace-4.10.97/kwin/client.cpp:1894 This is however no exclusive condition. The problem (in this case, feel free to attach more bactraces) is that an unmaximization does not know where to place the unmaximized window directly ("from where it came"), thus falls back to a generic placement which needs to iterate over all windows. Since some of those windows are already deleted, you end up resolving a dangeling pointer. As mentioned in the RR (feel free to stress the patch as well ;-) this affects all calls to (at least) stackingOrder during shutdown. As you figured, the entire thing has nothing to do with the compositor or the GL backend. Just in case, I want to clarify that I do not posses the skills to fix the code, yet. So do not expect me to provide patches, please. I have more to learn before I can start contributing code here. :) You don't have to *provide* a patch, it's already written: https://git.reviewboard.kde.org/r/112020/ But you can test it if you want. I have tested the patch. Kwin doesn't crash anymore. The windows separate after kwin --replace. (In reply to comment #7) > I have tested the patch. Kwin doesn't crash anymore. Good ;-) > The windows separate after kwin --replace. IIrc there's only region matching in place, so if they got spread apart by the shutdown (and unmaximization) that's for the moment expectable (though not ideal) Git commit 97f94f8805d47c092424017c7dc860ea1f5d0239 by Thomas Lübking. Committed on 11/08/2013 at 17:02. Pushed by luebking into branch 'KDE/4.11'. make stacking_order exclusive during shutdown Client::releaseClient() deletes all Client objects referenced by stacking_order, thus those pointers dangle and everything trying to touch it died an ugly death. REVIEW: 112020 M +7 -2 kwin/workspace.cpp http://commits.kde.org/kde-workspace/97f94f8805d47c092424017c7dc860ea1f5d0239 |