On Sat, Sep 24 2011, Michael Albinus wrote: >> The patch is not enough. It fixes the precise case I reported, but this >> fails now: >> >> (setq db >> (dbus-register-signal :session "some.service" >> "/org/gtk/Private/RemoteVolumeMonitor" >> "org.gtk.Private.RemoteVolumeMonitor" "VolumeAdded" >> 'identity)) >> (dbus-unregister-object db) > > I've played exactly this example (replacing "some.service" by > "org.gtk.Private.GduVolumeMonitor" in order to have an existing > service). No problem. Indeed. It works fine with org.gtk.Private.GduVolumeMonitor as service, but with "some.service" it fails. Why? >> Debugger entered--Lisp error: (dbus-error "Match rule has a key with no subsequent '=' character") >> dbus-call-method(:session "org.freedesktop.DBus" "/org/freedesktop/DBus" "org.freedesktop.DBus" "RemoveMatch" "Z") > > Where does the "Z" comes from? There will never be such a rule, added by > AddMatch. It's not a Z. One of our MUA altered this. On the first try it's " ^H\330" On the second try it's "Z^B" On the third try it's "\300#\264" … (I register then unregister to make a try) > Did you compile also dbusbind.c before testing? Oh yes I'm sure of that. :) > Could you apply (dbus-list-hash-table) before calling > `dbus-unregister-object', and show the result? Yeah. I start emacs-snapshot, then register then call `dbus-list-hash-table', it messages: (((:session "org.freedesktop.Notifications" "ActionInvoked") (":1.129" "org.freedesktop.Notifications" "/org/freedesktop/Notifications" notifications-on-action-signal "type='signal',interface='org.freedesktop.Notifications',member='ActionInvoked',sender=':1.129',path='/org/freedesktop/Notifications'")) ((:session "org.freedesktop.Notifications" "NotificationClosed") (":1.129" "org.freedesktop.Notifications" "/org/freedesktop/Notifications" notifications-on-closed-signal "type='signal',interface='org.freedesktop.Notifications',member='NotificationClosed',sender=':1.129',path='/org/freedesktop/Notifications'")) ((:session "org.gtk.Private.RemoteVolumeMonitor" "VolumeAdded") ("" "some.service" "/org/gtk/Private/RemoteVolumeMonitor" identity "‚"))) In case one of our MUA will change the last string on the last line it shows: "^A\202^F^B^D^A" Then I call unregister it yells: Debugger entered--Lisp error: (dbus-error "Unable to append argument" "\202") dbus-call-method(:session "org.freedesktop.DBus" "/org/freedesktop/DBus" "org.freedesktop.DBus" "RemoveMatch" "\202") Where the last string is obviously the same as I talked about above. :) -- Julien Danjou