From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Julien Danjou Newsgroups: gmane.emacs.bugs Subject: bug#9581: 24.0.50; dbus-unregister-object fails if service is nil Date: Fri, 23 Sep 2011 01:01:17 +0200 Message-ID: <87pqisi3lu.fsf@keller.adm.naquadah.org> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Trace: dough.gmane.org 1316732507 27151 80.91.229.12 (22 Sep 2011 23:01:47 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Thu, 22 Sep 2011 23:01:47 +0000 (UTC) To: 9581@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri Sep 23 01:01:43 2011 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1R6sH1-0005re-FY for geb-bug-gnu-emacs@m.gmane.org; Fri, 23 Sep 2011 01:01:43 +0200 Original-Received: from localhost ([::1]:52006 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R6sH1-0003Fu-34 for geb-bug-gnu-emacs@m.gmane.org; Thu, 22 Sep 2011 19:01:43 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]:38002) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R6sGy-0003Fo-7G for bug-gnu-emacs@gnu.org; Thu, 22 Sep 2011 19:01:41 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1R6sGx-0005az-AR for bug-gnu-emacs@gnu.org; Thu, 22 Sep 2011 19:01:40 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:36527) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R6sGx-0005at-66 for bug-gnu-emacs@gnu.org; Thu, 22 Sep 2011 19:01:39 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.69) (envelope-from ) id 1R6sHJ-0007t3-SY for bug-gnu-emacs@gnu.org; Thu, 22 Sep 2011 19:02:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Julien Danjou Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 22 Sep 2011 23:02:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 9581 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.131673251530302 (code B ref -1); Thu, 22 Sep 2011 23:02:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 22 Sep 2011 23:01:55 +0000 Original-Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1R6sHC-0007sg-W0 for submit@debbugs.gnu.org; Thu, 22 Sep 2011 19:01:55 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1R6sH6-0007sU-I9 for submit@debbugs.gnu.org; Thu, 22 Sep 2011 19:01:50 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1R6sGi-0005Wy-Au for submit@debbugs.gnu.org; Thu, 22 Sep 2011 19:01:25 -0400 Original-Received: from lists.gnu.org ([140.186.70.17]:44350) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R6sGi-0005Wu-9I for submit@debbugs.gnu.org; Thu, 22 Sep 2011 19:01:24 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]:37829) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R6sGh-0003FO-Ge for bug-gnu-emacs@gnu.org; Thu, 22 Sep 2011 19:01:24 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1R6sGg-0005Wg-G4 for bug-gnu-emacs@gnu.org; Thu, 22 Sep 2011 19:01:23 -0400 Original-Received: from prometheus.naquadah.org ([212.85.154.174]:47232 helo=mx1.naquadah.org) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R6sGg-0005WS-BV for bug-gnu-emacs@gnu.org; Thu, 22 Sep 2011 19:01:22 -0400 Original-Received: from keller.adm.naquadah.org (AMontsouris-651-1-106-83.w83-202.abo.wanadoo.fr [83.202.161.83]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by mx1.naquadah.org (Postfix) with ESMTPSA id 57C0C5C1C0 for ; Fri, 23 Sep 2011 01:01:18 +0200 (CEST) User-Agent: Gnus/5.110018 (No Gnus v0.18) Emacs/24.0.50 (gnu/linux) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list Resent-Date: Thu, 22 Sep 2011 19:02:01 -0400 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 1) X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:51682 Archived-At: If you use `dbus-register-signal' with a nil SERVICE value, like: (dbus-register-signal :session nil "/org/gtk/Private/RemoteVolumeMonitor" "org.gtk.Private.RemoteVolumeMonitor" "VolumeAd= ded" 'identity) This is valid and works fine. However, on unregister it fails: Debugger entered--Lisp error: (dbus-error "Call to ReleaseName has wrong ar= gs (b, expected s)") dbus-call-method(:session "org.freedesktop.DBus" "/org/freedesktop/DBus" = "org.freedesktop.DBus" "ReleaseName" nil) dbus-unregister-object(((:session "org.gtk.Private.RemoteVolumeMonitor" "= VolumeAdded") (nil "/org/gtk/Private/RemoteVolumeMonitor" identity))) Why does it fail? Because of the following code in `dbus-unregister-object': #+begin_src emacs-lisp (unless found (dbus-call-method bus dbus-service-dbus dbus-path-dbus dbus-interface-dbus "ReleaseName" service)))) +end_src And here service is=E2=80=A6 nil. Which is translated to a boolean (b) but should be a string (s). But honestly, I'm not sure what the good fix is. To me, this code is totally wrong in such a case. When using `dbus-register-signal', this happens: 1. the dbus_bus_add_match() function is called to add a match on the bus 2. the (match callback) pair is recorded into `dbus-registered-objets-table'=20 This makes things work. When a signal happens, something is looking into `dbus-registered-objets-table' and call the callback function. But to stop listening for a signal, the function to use is `dbus-unregister-object', and it is doing this: 1. remove the (match callback) pair from `dbus-registered-objets-table' 2. call ReleaseName on the service we were listening While I agree on point 1., the point 2. is totally irrelevant in such a case. There's no need to do such a thing, the name has never been requested with RequestName before. I think that: - step 2 should be removed or another function should be created which does not send a ReleaseName - dbus_bus_remove_match() should be used to remove the watch from the bus, which would be a lot cleaner. --=20 Julien Danjou