Review Request 122909: Fix segfault with missing screens

Richard Moore rich at kde.org
Thu Mar 12 14:00:01 UTC 2015



> On March 12, 2015, 1:40 p.m., Martin Gräßlin wrote:
> > 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.

Now someone has told me about the problem, I can fix this trivially in Qt.


- Richard


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/122909/#review77369
-----------------------------------------------------------


On March 12, 2015, 1: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, 1: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/94ab45b2/attachment-0001.html>


More information about the Plasma-devel mailing list