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