On 8/27/2010 3:41 AM, Michael Albinus wrote:
Ken Brown<kbr...@cornell.edu>  writes:

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.

OK, I started the session bus the right way this time, but I still
didn't see any signal from dbus-monitor in Emacs.  I assume I should
have seen something in the echo area?

Yes. You could test whether both Emacs and dbus-monitor use the same bus
by reordering the calls:

- apply dbus-launch as described
- echo $DBUS_SESSION_BUS_ADDRESS
- in *another* shell, set $DBUS_SESSION_BUS_ADDRESS to this value, and
   start dbus-monitor
- start Emacs in the first shell, and load dbus.el. You shall see in
   the other shell output from  dbus-monitor, telling that an application
   has started. It will also tell you the name of that application, like
   ":1.2".

This doesn't happen. Is it possible that dbus.el doesn't complete its initialization because the system bus isn't running? (Keep in mind that I can't do *anything* with dbus in Emacs unless I load dbus.el before starting the system bus.) I note that when I use the version of Emacs built with MYCPPFLAGS='-DDBUS_DEBUG', loading dbus.el results in the following error message in the echo area:

D-Bus error: "Failed to connect to socket /var/run/dbus/system_bus_socket: Interrupted system call"

- apply (dbus-get-unique-name :session) in Emacs. The result shall be
   the same name.
- start dbus-monitor in the same shell as Emacs. In the other
   dbus-monitor, you should be notified, that an application has been started.

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.

There's very little there.  It prints the two lines

   xd_add_watch: fd 8
   xd_add_watch: fd 9

and no more.  Does this tell you anything?

It's the initialization phase. Two watch functions are installed on file
descriptors 8 and 9 (connected to the system and session buses), polling
for incoming messages in Emacs' mainloop.

When you call dbus-get-unique-name, there shall be more output. But this
works, as you have confirmed, so this is not the interesting case.

I've hoped to see more :-( Did you play with the running/non-running
system bus?

Yes, the traces above were produced when starting Emacs with the system bus running. I'm stuck at that point and can't do anything to produce more traces.

Ken

--
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

Reply via email to