Review Request 126313: Use an xcb for interaction with KStartupInfo

Martin Gräßlin mgraesslin at kde.org
Tue Jan 26 07:00:24 UTC 2016



> On Jan. 25, 2016, 10:36 p.m., Luca Beltrame wrote:
> > FYI, this breaks Plasma 5 startup completely for me. kinit crashes with
> > 
> > ```gdb
> > #0  0x00007ff831e58c20 in QObject::thread() const () at /usr/lib64/libQt5Core.so.5
> > #1  0x00007ff8329d1a20 in KWindowSystem::d_func() () at /usr/lib64/libKF5WindowSystem.so.5
> > #2  0x00007ff8329d2cc9 in KWindowSystem::mapViewport() () at /usr/lib64/libKF5WindowSystem.so.5
> > #3  0x00007ff8329dce02 in NETRootInfo::currentDesktop(bool) const () at /usr/lib64/libKF5WindowSystem.so.5
> > #4  0x0000000000408d09 in launch(int, char const*, char const*, char const*, int, char const*, bool, char const*, bool, char const*) (this=0x8e4458)
> >     at /usr/include/qt5/QtCore/qbytearray.h:485
> > #5  0x0000000000408d09 in launch(int, char const*, char const*, char const*, int, char const*, bool, char const*, bool, char const*) (this=0x8e4458)
> >     at /usr/include/qt5/QtCore/qbytearray.h:479
> > #6  0x0000000000408d09 in launch(int, char const*, char const*, char const*, int, char const*, bool, char const*, bool, char const*) (argc=32767, _name=0x7ffffdb02e20 "\020c\215", args=0x8e446b "/home/lb", cwd=<optimized out>, envc=<optimized out>, envs=<optimized out>, reset_env=false, tty=0x8e55b0 "", avoid_loops=160, startup_id_str=0x1161 <error: Cannot access memory at address 0x1161>)
> >     at /home/lb/Coding/KDEsrc/kinit/src/kdeinit/kinit.cpp:643
> > #7  0x00000000008e559d in  ()
> > #8  0x0000000000000000 in  ()
> > ```
> > 
> > I had to revert it or kdeinit would crash and prevent me from having a functional session. ;)
> 
> Andreas Hartmetz wrote:
>     Same here.
> 
> Martin Gräßlin wrote:
>     sorry about that, I'm on it.
> 
> Martin Gräßlin wrote:
>     The problem is that kinit is not a QCoreApplication and it crashes when accessing the ::instance(). A possible workaround for kinit is (not yet tested):
>     
>         diff --git a/src/kdeinit/kinit.cpp b/src/kdeinit/kinit.cpp
>         index 9919547..8b5c926 100644
>         --- a/src/kdeinit/kinit.cpp
>         +++ b/src/kdeinit/kinit.cpp
>         @@ -375,7 +375,7 @@ static void init_startup_info(KStartupInfoId &id, const QByteArray &bin,
>              X11_startup_notify_fd = xcb_get_file_descriptor(s_startup_notify_connection);
>              NETRootInfo rootInfo(s_startup_notify_connection, NET::CurrentDesktop);
>              KStartupInfoData data;
>         -    data.setDesktop(rootInfo.currentDesktop());
>         +    data.setDesktop(rootInfo.currentDesktop(true));
>              data.setBin(QFile::decodeName(bin));
>              KStartupInfo::sendChangeXcb(s_startup_notify_connection, s_startup_notify_screen, id, data);
>              xcb_flush(s_startup_notify_connection);
>     
>     
>     I'll also try to harden KWindowSystem against that.

pushed that with http://commits.kde.org/kinit/e39bd4eb3d39a19543841eda6188118f58382ab6 - thanks to Elias and Luca for giving me good backtraces and testing.


- Martin


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


On Jan. 25, 2016, 3:34 p.m., Martin Gräßlin wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/126313/
> -----------------------------------------------------------
> 
> (Updated Jan. 25, 2016, 3:34 p.m.)
> 
> 
> Review request for KDE Frameworks and David Faure.
> 
> 
> Repository: kinit
> 
> 
> Description
> -------
> 
> By changing to xcb we can use NETRootInfo to get the current desktop
> and don't need to duplicate the logic. Also it means that more code
> is ported from XLib to xcb and might allow us to drop the XLib
> dependency in future.
> 
> 
> Diffs
> -----
> 
>   CMakeLists.txt eeecab775cfb5dfe12cf9c4991c658cc261ed727 
>   src/config-kdeinit.h.cmake cfcfc61a1bb560ff9a902b89bd3b8fb27273ebf2 
>   src/kdeinit/CMakeLists.txt f94db717f2403b602648286eac243837d8714069 
>   src/kdeinit/kinit.cpp a18008a11bf00a35aa0cab450180926217cd58f5 
> 
> Diff: https://git.reviewboard.kde.org/r/126313/diff/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Martin Gräßlin
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-frameworks-devel/attachments/20160126/e89afcbc/attachment-0001.html>


More information about the Kde-frameworks-devel mailing list