Bug 379421 - kwin crashes after "unable to claim manager selection, another wm running"
Summary: kwin crashes after "unable to claim manager selection, another wm running"
Status: RESOLVED DUPLICATE of bug 377756
Alias: None
Product: kwin
Classification: Plasma
Component: platform-x11-standalone (show other bugs)
Version: 5.9.5
Platform: Fedora RPMs Linux
: NOR normal
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-05-01 21:45 UTC by Loïc Yhuel
Modified: 2017-05-02 08:11 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Loïc Yhuel 2017-05-01 21:45:49 UTC
kwin-5.9.5-2.fc25.x86_64
kf5-kwindowsystem-5.33.0-1.fc25.x86_64
kf5-plasma-5.33.0-2.fc25.x86_64
qt5-qtbase-5.7.1-14.fc25.x86_64

On each startup kwin seems to be launched twice (no idea why) :
 - /usr/bin/kwin (no argument)
 - /usr/bin/kwin -session 1011210910f9e000149312857200000013200121_1493665183_9480

The second one prints :
kwin: unable to claim manager selection, another wm running? (try using --replace)
Application::crashHandler() called with signal 11; recent crashes: 1
KCrash: Application 'kwin_x11' crashing...

It seems both threads crashed when trying to use code from an unloaded library, triggered the KCrash::defaultCrashHandler, then thread 1 (second to crash ?) crashed again in QGuiApplication::platformNativeInterface.

#0  0x00007f33c78c2b22 in QGuiApplication::platformNativeInterface() () at kernel/qguiapplication.cpp:1588
#1  0x00007f33cfc12f2e in QX11Info::display() () at /lib64/libQt5X11Extras.so.5
#2  0x00007f33c87c6392 in KCrash::defaultCrashHandler(int) (sig=11) at /usr/src/debug/kcrash-5.33.0/src/kcrash.cpp:455
#3  0x00007f33c6715990 in <signal handler called> () at /lib64/libc.so.6
#4  0x00007f33b7cbdd69 in  ()
#5  0x00007f33b6de2d10 in  ()
#6  0x000055e9d10e0ab0 in  ()
#7  0x00007f33b6de2d50 in  ()
#8  0x000055e9d10e0d61 in  ()
#9  0x0000000000000001 in  ()
#10 0x00007f33c73f49ca in QThreadPrivate::start(void*) (arg=0x55e9d10e0ab0) at thread/qthread_unix.cpp:368
=> 0x00007f33b7cbdd69 seems to be an unloaded address.

#0  0x00007f33c67ac81d in nanosleep () at ../sysdeps/unix/syscall-template.S:84
#1  0x00007f33c67ac76a in __sleep (seconds=0, seconds@entry=1) at ../sysdeps/posix/sleep.c:55
#2  0x00007f33cf9dac3b in KWin::ApplicationX11::crashHandler(int) (signal=<optimized out>) at /usr/src/debug/kwin-5.9.5/main_x11.cpp:325
#3  0x00007f33c87c5ee0 in KCrash::defaultCrashHandler(int) (sig=11) at /usr/src/debug/kcrash-5.33.0/src/kcrash.cpp:394
#4  0x00007f33c6715990 in <signal handler called> () at /lib64/libc.so.6
#5  0x00007f33c75943a2 in QCoreApplicationPrivate::sendThroughApplicationEventFilters(QObject*, QEvent*) (this=this@entry=0x55e9d10cd050, receiver=receiver@entry=0x7fff104480a0, event=event@entry=0x7fff104474c0)
    at kernel/qcoreapplication.cpp:1081
#6  0x00007f33c7dd4f08 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=0x55e9d10cd050, receiver=0x7fff104480a0, e=0x7fff104474c0) at kernel/qapplication.cpp:3774
#7  0x00007f33c7ddc671 in QApplication::notify(QObject*, QEvent*) (this=0x7fff104480a0, receiver=0x7fff104480a0, e=0x7fff104474c0) at kernel/qapplication.cpp:3556
#8  0x00007f33c75946fa in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x7fff104480a0, event=event@entry=0x7fff104474c0) at kernel/qcoreapplication.cpp:988
#9  0x00007f33c75c2b8d in QCoreApplication::sendEvent(QObject*, QEvent*) (event=0x7fff104474c0, receiver=<optimized out>) at kernel/qcoreapplication.h:231
#10 0x00007f33c75c2b8d in QObjectPrivate::setParent_helper(QObject*) (this=this@entry=0x55e9d1139c70, o=o@entry=0x0) at kernel/qobject.cpp:1996
#11 0x00007f33c75c3303 in QObject::~QObject() (this=<optimized out>, __in_chrg=<optimized out>) at kernel/qobject.cpp:1048
#12 0x00007f33b4a60b19 in KWin::X11StandalonePlatform::~X11StandalonePlatform() (this=0x55e9d1137890, __in_chrg=<optimized out>) at /usr/src/debug/kwin-5.9.5/plugins/platforms/x11/standalone/x11_platform.h:33
#13 0x00007f33c758c663 in QLibraryPrivate::unload(QLibraryPrivate::UnloadFlag) (this=this@entry=0x55e9d11392c0, flag=flag@entry=QLibraryPrivate::NoUnloadSys) at plugin/qlibrary.cpp:562
#14 0x00007f33c758ccb6 in QLibraryStore::cleanup() () at plugin/qlibrary.cpp:403
#15 0x00007f33c758ccb6 in qlibraryCleanup () at plugin/qlibrary.cpp:427
#16 0x00007f33c758ccb6 in (anonymous namespace)::qlibraryCleanup_dtor_class_::~qlibraryCleanup_dtor_class_() (this=<optimized out>, __in_chrg=<optimized out>) at plugin/qlibrary.cpp:429
#17 0x00007f33c671a78a in __cxa_finalize (d=0x7f33c77c6ec0) at cxa_finalize.c:56
#18 0x00007f33c73ccdb3 in __do_global_dtors_aux () at /lib64/libQt5Core.so.5
#19 0x00007fff10447d60 in  ()
#20 0x00007f33cfbf318a in _dl_fini () at dl-fini.c:235
=> when /usr/lib64/qt5/plugins/org.kde.kwin.platforms/KWinX11Platform.so is unloaded, there is an application event filter which has its vtable in an unloaded library.

I'm able to reproduce the same kind of crashes by launching "kwin" (without --replace) when the session is launched.
In this case I get a mix of both callstacks : KWinX11Platform.so unload which calls KCrash::defaultCrashHandler, which crashes directly in QX11Info::display/QGuiApplication::platformNativeInterface.
Btw, in this case the crash handler runs "kwin --crashes=1" which replaces the current kwin, even if the original command line wasn't supposed to do this !
Comment 1 Martin Flöser 2017-05-02 07:37:58 UTC
*** This bug has been marked as a duplicate of bug 377756 ***
Comment 2 Loïc Yhuel 2017-05-02 08:11:21 UTC
plasma-workspace-5.9.5.1-1.fc25.x86_64
So I already have the "recognize the WM even if given with a full path" commit.

Even if the session restore was fixed, the crash would still remain, at least when launching "kwin" manually without "--replace" : it shouldn't do anything, but it crashes, restarts with "--crashes=1", and replaces the current kwin.