Summary: | KWin crashed after removing and adding a screen | ||
---|---|---|---|
Product: | [Plasma] kwin | Reporter: | Aleix Pol <aleixpol> |
Component: | general | Assignee: | KWin default assignee <kwin-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | crash | Flags: | mgraesslin:
ReviewRequest+
|
Priority: | NOR | ||
Version First Reported In: | 4.95.0 | ||
Target Milestone: | 5 | ||
Platform: | Compiled Sources | ||
OS: | Linux | ||
URL: | https://git.reviewboard.kde.org/r/118324/ | ||
Latest Commit: | http://commits.kde.org/kwin/ae1d18779c763b432f3ebbb5b2c66ea5482270ae | Version Fixed In: | |
Sentry Crash Report: |
Description
Aleix Pol
2014-04-11 10:49:16 UTC
implies client is on screen #1 but screens::count() is still "1" what somehow implies Screens::changed() fires w/o or before Screens::countChanged() Ahh.... #39 QTimer::timeout (this=0x24243f0) at .moc/moc_qtimer.cpp:189 #35 KWin::DesktopWidgetScreens::updateCount (this=0x24244d0) at /home/kde-devel/frameworks/kwin/screens.cpp:208 #34 KWin::Screens::setCount (this=0x24244d0, count=1) at /home/kde-devel/frameworks/kwin/screens.cpp:111 #33 KWin::Screens::countChanged (this=0x24244d0, _t1=2, _t2=1) at moc_screens.cpp:241 #26 KWin::Screens::changed (this=0x24244d0) at moc_screens.cpp:247 Try screens.cpp:73 - connect(this, &Screens::countChanged, this, &Screens::changed); + connect(this, &Screens::countChanged, this, &Screens::changed, Qt::QueudConnection); *** Bug 333471 has been marked as a duplicate of this bug. *** I am not getting a crash now, I still get some weird behavior when dis/connecting screens that makes me have to "kwin --replace", but at least I don't get the crash. +1 for the patch, from my humble point of view :) For the record: I plan to replace the DesktopWidget based Screens implementation by using XRandR directly. There are only a few problems I need to tackle first: getting this into a state that allows to use unit tests. Main problem here: Xvfb doesn't support the XRandR extension which means we need to start Xephyr in the unit test and open an xcb_connection to this nested X server. Which means the QX11Info::connection() in the running unit test will be wrong - connected to the Xvfb it had been started in and not the Xephyr we started. This means KWin::connection() wraps the wrong connection and as it is inline I don't see how I could mock it, but it would be picked by Screens. I have some ideas on how to tackle it, but it requires further changes overall in KWin. *** Bug 335356 has been marked as a duplicate of this bug. *** Git commit ae1d18779c763b432f3ebbb5b2c66ea5482270ae by Martin Gräßlin. Committed on 26/05/2014 at 09:06. Pushed by graesslin into branch 'master'. Fix crash on screen changes REVIEW: 118324 M +1 -1 screens.cpp http://commits.kde.org/kwin/ae1d18779c763b432f3ebbb5b2c66ea5482270ae |