| Summary: | wayland: kwin crashes after energy saving turns monitors off and i try to wake them on with a mouse | ||
|---|---|---|---|
| Product: | [Plasma] kwin | Reporter: | Miroslav Spehar <mspehar> |
| Component: | platform-drm | Assignee: | KWin default assignee <kwin-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | crash | CC: | fabian, kde, subdiff |
| Priority: | NOR | Flags: | mspehar:
Wayland+
|
| Version First Reported In: | 5.13.2 | ||
| Target Milestone: | --- | ||
| Platform: | openSUSE | ||
| OS: | Linux | ||
| Latest Commit: | https://commits.kde.org/kwin/9f2f6d96577dd4aba878e53259e20bde72d752d1 | Version Fixed/Implemented In: | |
| Sentry Crash Report: | |||
| Attachments: | gdb backtrace | ||
|
Description
Miroslav Spehar
2018-07-07 08:24:42 UTC
Not convinced the other two are related. Backtrace makes total sense, drmPageFlip/drmHandleEvent is effectively async and our user_data pointer we supply (the DrmOuptut) can get deleted. We can try to make sure we never delete the output when we have a pending flip. Alternatively I once did a clever trick in kwayland of putting a QPointer on the heap and using that as our user data. Kinda safer, kinda just avoiding the problem. Holding the Output till the pageFlip returned sounds like the more robust solution to me. One could also hand over a pointer to a struct referencing DrmBackend* backend and DrmOutput* output. Then check if output is still in backend->outputs(). is this connected? https://bugs.kde.org/show_bug.cgi?id=385743 >385743
it is not, sorry.
Git commit a362a67989f1cea4606f9a564d9a51144a51c719 by David Edmundson. Committed on 19/07/2018 at 08:41. Pushed by davidedmundson into branch 'Plasma/5.13'. Don't remove outputs during page flip Summary: To do so leaves a dangling pointer on our pageFlipHandler Test Plan: Wobbled a window whilst plugging a monitor in and out Reviewers: #kwin, graesslin Reviewed By: #kwin, graesslin Subscribers: anthonyfieroni, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D14210 M +1 -1 plugins/platforms/drm/drm_backend.cpp M +17 -0 plugins/platforms/drm/drm_output.cpp M +6 -1 plugins/platforms/drm/drm_output.h https://commits.kde.org/kwin/a362a67989f1cea4606f9a564d9a51144a51c719 Git commit 9f2f6d96577dd4aba878e53259e20bde72d752d1 by David Edmundson. Committed on 18/07/2018 at 15:05. Pushed by davidedmundson into branch 'master'. Don't remove outputs during page flip Summary: To do so leaves a dangling pointer on our pageFlipHandler Test Plan: Wobbled a window whilst plugging a monitor in and out Reviewers: #kwin Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D14210 M +1 -1 plugins/platforms/drm/drm_backend.cpp M +17 -0 plugins/platforms/drm/drm_output.cpp M +6 -1 plugins/platforms/drm/drm_output.h https://commits.kde.org/kwin/9f2f6d96577dd4aba878e53259e20bde72d752d1 |