dbus upgrade issue

Ray Strode halfline at gmail.com
Fri Dec 15 11:17:30 PST 2006


Hi guys,

So Fedora Core 6 users have been hitting a really nasty bug where
their sessions die while they're in the middle of getting updates.

See: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=218207

It turns out that the session dbus-daemon is calling exit() after
reloading its config following a hangup signal that's generated during
the upgrade (because of an selinux policy update).  The session daemon
is calling exit(1) because a new, incompatible session.conf is getting
installed to /etc/dbus-1.  The new session.conf adds a
<standard_session_servicedirs /> tag that the old, running session
daemon doesn't understand.

The daemon should probably just stick with the old, already loaded
config in the case the new config doesn't work.  I've attached a patch
that does that.

Now one problem is that all existing and future Fedora Core 6 users
are now doomed, because we already shipped the version of dbus that
calls exit().

To get around this we need to keep the running dbus-daemon happy, and
still give the updated config file to the new version of the
dbus-daemon when the user logs out and logs in.  The easiest way I can
come up with to do that is to move the config file to a new location,
and keep a backward compatible config file in the old place.

This brings up an interesting observation though.  session.conf and
system.conf aren't really config files at all.  They even say
something like "don't ever edit this file, use session-local.conf
instead" or something.  In fact, the options in there seem more
distribution specific than system specific.  So given that 1) the user
shouldn't change the settings 2) the user wouldn't even normally want
to change the settings, why are we installing the files in /etc ?

For FC-6 I'm moving the files to /usr/share/dbus-1 and stripping the
write permissions off of them.  This seems more correct and will help
fix our bad upgrade issue.  I've attached the patch that I'm using to
do that.

One thing I'm not moving for FC-6 is the /etc/dbus-1/system.d
directory because a lot of packages depend on it being there.  It
might make sense to move it, though, and create a compatibility
symlink.

What do you guys think?

--Ray
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dbus-1.0.1-dont-exit-on-config-error.patch
Type: application/octet-stream
Size: 3334 bytes
Desc: not available
Url : http://lists.freedesktop.org/archives/dbus/attachments/20061215/9f2d61c2/dbus-1.0.1-dont-exit-on-config-error.obj
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dbus-1.0.1-move-policy-files.patch
Type: application/octet-stream
Size: 2878 bytes
Desc: not available
Url : http://lists.freedesktop.org/archives/dbus/attachments/20061215/9f2d61c2/dbus-1.0.1-move-policy-files.obj


More information about the dbus mailing list