Review Request 122909: Fix segfault with missing screens
Martin Gräßlin
mgraesslin at kde.org
Thu Mar 12 13:40:53 UTC 2015
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/122909/#review77369
-----------------------------------------------------------
For the record I reverted with http://commits.kde.org/plasma-workspace/c4c7e6d53f66fbdd6d58b40e5f3b443c6cf2e197:
The reason for revertion is that it leaks pixmaps.
QX11Info::display should not return a nullptr if there is no QScreen.
This needs fixing in Qt, not workarounds in our software. None of our
X11 specific code in plasma-workspace or frameworks can handle the case
that the Display* or xcb_connection_t* becomes null suddenly. Neither
can Qt internally. If it would happen Qt would abort.
The only application in our workspace which would be "somewhat" safe
is KWin because it caches the returned Display after first invokation
to QX11Info::display.
- Martin Gräßlin
On March 12, 2015, 2:24 p.m., Jan Kundrát wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/122909/
> -----------------------------------------------------------
>
> (Updated March 12, 2015, 2:24 p.m.)
>
>
> Review request for Plasma.
>
>
> Repository: plasma-workspace
>
>
> Description
> -------
>
> Fix segfault with missing screens
>
> This is to keep up with the Qt 5.5 changes with null QScreen. BT:
>
> #0 XInternAtom (dpy=0x0, name=0x7f1195725664 "_KDE_NET_WM_SHADOW", onlyIfExists=0)
> at /var/tmp/portage/x11-libs/libX11-1.6.2/work/libX11-1.6.2/src/IntAtom.c:174
> #1 0x00007f11956e438c in PanelShadows::Private::clearShadow (this=<optimized out>, window=0x7f119958ff90)
> at /var/tmp/portage/kde-plasma/plasma-workspace-5.2.1/work/plasma-workspace-5.2.1/shell/panelshadows.cpp:494
> #2 0x00007f11956e7139 in PanelShadows::removeWindow (this=0x7f119593b060 <(anonymous namespace)::Q_QGS_privateDialogShadowsSelf::innerFunction()::holder>, window=window at entry=0x7f119958ff90)
> at /var/tmp/portage/kde-plasma/plasma-workspace-5.2.1/work/plasma-workspace-5.2.1/shell/panelshadows.cpp:142
> #3 0x00007f11956dd8f5 in PanelView::~PanelView (this=0x7f119958ff90, __in_chrg=<optimized out>)
> at /var/tmp/portage/kde-plasma/plasma-workspace-5.2.1/work/plasma-workspace-5.2.1/shell/panelview.cpp:124
> #4 0x00007f11956dd9af in PanelView::~PanelView (this=0x7f119958ff90, __in_chrg=<optimized out>)
> at /var/tmp/portage/kde-plasma/plasma-workspace-5.2.1/work/plasma-workspace-5.2.1/shell/panelview.cpp:125
> #5 0x00007f11956effa8 in ShellCorona::removeView (this=0x7f1196c19b40, idx=0) at /var/tmp/portage/kde-plasma/plasma-workspace-5.2.1/work/plasma-workspace-5.2.1/shell/shellcorona.cpp:710
> #6 0x00007f11956f0038 in ShellCorona::remove (this=this at entry=0x7f1196c19b40, desktopView=<optimized out>)
> at /var/tmp/portage/kde-plasma/plasma-workspace-5.2.1/work/plasma-workspace-5.2.1/shell/shellcorona.cpp:662
> #7 0x00007f11956f009f in ShellCorona::screenRemoved (this=0x7f1196c19b40, screen=<optimized out>)
> at /var/tmp/portage/kde-plasma/plasma-workspace-5.2.1/work/plasma-workspace-5.2.1/shell/shellcorona.cpp:743
>
>
> Diffs
> -----
>
> shell/panelshadows.cpp c97564a2417a66e17a1a02237155f19addf2b9c7
>
> Diff: https://git.reviewboard.kde.org/r/122909/diff/
>
>
> Testing
> -------
>
>
> Thanks,
>
> Jan Kundrát
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/plasma-devel/attachments/20150312/907061e9/attachment-0001.html>
More information about the Plasma-devel
mailing list