delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2010/08/26/16:16:33

X-Recipient: archive-cygwin AT delorie DOT com
X-SWARE-Spam-Status: No, hits=-1.2 required=5.0 tests=AWL,BAYES_05,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,T_TO_NO_BRKTS_FREEMAIL
X-Spam-Check-By: sourceware.org
From: Michael Albinus <michael DOT albinus AT gmx DOT de>
To: cygwin AT cygwin DOT com
Subject: Re: Emacs and DBUS
References: <847hjvdyr9 DOT fsf AT aol DOT com> <4C667099 DOT 2020103 AT cornell DOT edu> <87mxsj69st DOT fsf AT gmx DOT de> <4C6C2D11 DOT 8020003 AT cornell DOT edu> <87d3tf685q DOT fsf AT gmx DOT de> <4C6C4BC8 DOT 9010400 AT cornell DOT edu> <87lj7vokyt DOT fsf AT gmx DOT de> <4C74648F DOT 2030203 AT cornell DOT edu> <87d3t7nzez DOT fsf AT gmx DOT de> <4C75226F DOT 9030005 AT cornell DOT edu> <4C752AAB DOT 9000304 AT cornell DOT edu> <4C752F4F DOT 60203 AT cornell DOT edu> <8762yyovon DOT fsf AT gmx DOT de> <4C76C254 DOT 4040802 AT cornell DOT edu>
Date: Thu, 26 Aug 2010 22:16:10 +0200
In-Reply-To: <4C76C254.4040802@cornell.edu> (Ken Brown's message of "Thu, 26 Aug 2010 15:36:52 -0400")
Message-ID: <87occpyvsl.fsf@gmx.de>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux)
MIME-Version: 1.0
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie DOT com AT cygwin DOT com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

Ken Brown <kbrown AT cornell DOT edu> writes:

>> I'm confused: do you mean, the problem is happening when the system bus
>> is running, or when it is *not* running? I suspect the latter case.
>
> I really meant it the way I said it: The problem occurs if the system
> bus *is* running.  I've done some further testing, and here are the
> results, all with a build of emacs from the trunk, starting in the
> emacs src directory.

Oops.

> 1. With the system bus not running, I start Emacs via 'dbus-launch
> ./emacs.exe -Q&' and load dbus.el.  In the *scratch* buffer I evaluate
> some of the expressions that you suggested in your earlier email:
>
> (dbus-get-unique-name :session)
> ":1.0"
> (defun my-dbus-signal-handler (&rest args)
>     (message "Signal from bus %s received: %s"
>              (dbus-event-bus-name last-input-event) args))
> my-dbus-signal-handler
> (dbus-register-signal
>    :session dbus-service-dbus dbus-path-dbus dbus-interface-dbus
>    "NameOwnerChanged" 'my-dbus-signal-handler)
> ((:session "org.freedesktop.DBus" "NameOwnerChanged")
> ("org.freedesktop.DBus" "/org/freedesktop/DBus"
> my-dbus-signal-handler))
>
> Now I try 'dbus-monitor --session' in the xterm window from which I
> started emacs.  This produces output in the xterm window, but I don't
> see anything in Emacs.

No surprise. You have started an own session bus for Emacs, which is not
known to dbus-monitor. You shall do

# eval `dbus-launch --auto-syntax`

dbus-launch returns some environment variables to be set, which is done
by the eval command. The most interesting one is $DBUS_SESSION_BUS_ADDRESS

# emacs &

Emacs will find the session bus via $DBUS_SESSION_BUS_ADDRESS. Load
dbus.el, and eval the expressions as suggested.

# dbus-monitor --session

This is also a D-Bus client, which connects to the *same* session bus as
Emacs did due to $DBUS_SESSION_BUS_ADDRESS. Now you should see the
signal sent by dbus-monitor in Emacs.

> Back to *scratch*:
>
> (dbus-get-unique-name :system)
>
> This throws me into the lisp debugger with the error (dbus-error
> "Failed to connect to socket /var/run/dbus/system_bus_socket:
> Connection refused").  I guess this is to be expected, since the
> system bus is not running.  I now start the system bus via 'net start
> messagebus' in a shell, and I try again:
>
> (dbus-get-unique-name :system)
> ":1.0"
>
> Is this to be expected, that I get the same name for :system that I
> got for :session?

It is not "the same name", it simply looks like :-) Any D-bus daemon
counts the registered clients. In both cases, Emacs has been the first
one, so you've got the same identity name.

The good message is that dbusbind.c is able to speak to both buses under
Cygwin!

> 2. With the system bus running, I start Emacs as above and load
> dbus.el. The cursor stops blinking, and Emacs becomes unresponsive.  I
> can type C-g and hear a bell, and I can type C-x C-c to exit, but I
> can't get a response to any other key presses.

That I need to debug. Hmm, no system available next days.

Maybe you can compile dbusbind.c with the compiler flag DBUS_DEBUG,
something like this in the Emacs source tree:

# MYCPPFLAGS='-DDBUS_DEBUG' make

This enables test traces sent to Emacs' stdout (the shell where you have
started it). I've introduced this flag while testing dbusbind.c, when it
has blocked Emacs, and I didn't want to start gdb ...

Maybe I can see something suspicious in the traces.

> I'm willing to try anything else you suggest.  Otherwise, I hope
> you're able to debug this when you return from your travels.  The
> unstripped emacs-X11.exe binary (Emacs 23.2) is at
>
>   http://www.math.cornell.edu/~kbrown/emacs-X11.exe.bz2
>
> and the binary for my build from the trunk is at
>
>   http://www.math.cornell.edu/~kbrown/emacs.exe.bz2
>
> Ken

Thanks, and best regards, Michael.

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019