I just commented on that issue, but after a bit of time spent doing a git bisect, I found this commit to be the cause of my issues:
Code:
commit 417e387750920b9e092705863a863e71a77ea431
Author: Halton Huo <halton.huo@gmail.com>
Date: Wed Oct 8 19:56:25 2014 +0300
Fix crash on logout/login via SunRay
Turns out this bug is introduced by commit
b4f893eb294883909759fc9fd825eade1a9f308c, which is later than
when themulti-seat branch was created.
This happens when user logout, c-k-d tries to activate the reserved
Login window session, and send out the two signals in
change_active_session().
The old_session is the session that user just log out, which should
be removed after logout. There is race condition here, if the
old_session get unrefed to 0 before the g_signal_emit call,
then a core dump happens. Reported in:
https://bugs.freedesktop.org/show_bug.cgi?id=28598
diff --git a/src/ck-seat.c b/src/ck-seat.c
index 6e6800f..7f79fea 100644
--- a/src/ck-seat.c
+++ b/src/ck-seat.c
@@ -514,7 +514,9 @@ change_active_session (CkSeat *seat,
* must be sent when the database dump is finished it is
* important that the '-full' signalled is emitted first. */
- g_signal_emit (seat, signals [ACTIVE_SESSION_CHANGED_FULL], 0, old_session, session);
+ if (CK_IS_SESSION (old_session)) {
+ g_signal_emit (seat, signals [ACTIVE_SESSION_CHANGED_FULL], 0, old_session, session);
+ }
g_signal_emit (seat, signals [ACTIVE_SESSION_CHANGED], 0, ssid);
if (old_session != NULL) {
Upstream report filed:
https://github.com/ConsoleKit2/ConsoleKit2/issues/16