Re: [gdm-list] GDM D-Bus on Solaris




Thanks much to Artem Kachitchkine for so quickly providing me with an
updated HAL binary that includes the property needed for the new GDM
D-Bus branch.

After upgrading, now GDM seems to be able to start up X, but the greeter
never shows up.  In the syslog, I can see that GDM got the SIG1 signal
from the Xserver and emits READY.

Though, I needed to apply the attached patch to get GDM to start up the Xserver
on Solaris.  The existing code is hardcoded to usr /usr/bin/Xorg, which is not
on Solaris.  This patch updates it so it uses whatever X_SERVER was found by
configure.  I think this is better.

However, I then notice in the syslog, that I get these odd D-Bus errors,
which seem to indicate that GDM is unable to bind to the D-Bus socket in
/tmp/gdm-session.  I tried running gdm with "dbus-launch" and this didn't
seem to help.  Is this error because D-Bus is not configured properly on
Solaris?  We have a similar problem on Solaris where you need to run
dbus-launch when you remote login to a machine, if you want to run a
program that uses D-Bus.  On Solaris, we currently run dbus-launch only
when starting the GNOME session, which seems to make the desktop work
okay.  So D-Bus might not be configured properly.

Aug 30 17:57:09 brianca gdm-simple-slave[18581]: [ID 702911 daemon.warning]
    DEBUG: Creating D-Bus server for session
Aug 30 17:57:09 brianca gdm-simple-slave[18581]: [ID 702911 daemon.warning]
    WARNING: Cannot create D-BUS server for the session: Failed to bind socket
    "/tmp/gdm-session/dbus-WMCumHvBQF": No such file or directory
Aug 30 17:57:09 brianca gdm-simple-slave[18581]: [ID 702911 daemon.warning]
    DEBUG: Creating D-Bus server for greeter
Aug 30 17:57:09 brianca gdm-simple-slave[18581]: [ID 702911 daemon.warning]
    WARNING: Cannot create D-BUS server for the greeter: Failed to bind socket
    "/tmp/gdm-greeter/dbus-dJNF7Y6a1F": No such file or directory
Aug 30 17:57:09 brianca gdm-simple-slave[18581]: [ID 702911 daemon.warning]
    DEBUG: Creating greeter on :0 15,7
Aug 30 17:57:09 brianca gdm-simple-slave[18581]: [ID 702911 daemon.warning]
    DEBUG: Starting greeter...
Aug 30 17:57:09 brianca gdm-simple-slave[18581]: [ID 702911 daemon.warning]
    DEBUG: Running greeter_proxy process: dbus-launch --exit-with-session
    /usr/lib/gdm-simple-greeter
Aug 30 17:57:09 brianca gdm-simple-slave[18581]: [ID 702911 daemon.warning]
    DEBUG: Opening ConsoleKit session for user:50 x11-display:':0'
    x11-display-device:'15,7' remote-host-name:'' is-local:1
Aug 30 17:57:09 brianca gdm-simple-slave[18581]: [ID 702911 daemon.warning]
    WARNING: Unable to open session: The name org.freedesktop.ConsoleKit was not
    provided by any .service files

Further along, I see these messages which seem to indicate the greeter might
be crashing?  Perhaps due to the above D-Bus connection failure?  I am a bit
confused by the error about "org.freedesktop.ConsoleKit" not being provided
by any service files since I do have /etc/dbus-1/ConsoleKit.conf installed on
the system.  Though perhaps this could have been because I am not sure I
had console-kit-daemon running at the time.

Aug 30 17:57:09 brianca gdm-simple-slave[18581]: [ID 702911 daemon.warning] DEBU
G: Opening ConsoleKit session for user:50 x11-display:':0' x11-display-device:'1
5,7' remote-host-name:'' is-local:1
Aug 30 17:57:09 brianca gdm-simple-slave[18581]: [ID 702911 daemon.warning] WARN
ING: Unable to open session: The name org.freedesktop.ConsoleKit was not provide
d by any .service files
Aug 30 17:57:09 brianca gdm-simple-slave[18581]: [ID 702911 daemon.warning] DEBU
G: greeter environment: LOGNAME=gdm
Aug 30 17:57:09 brianca gdm-simple-slave[18581]: [ID 702911 daemon.warning] DEBU
G: greeter environment: XAUTHORITY=
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 702911 daemon.warning] DEBU
G: greeter environment: USERNAME=gdm
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 702911 daemon.warning] WARN
ING: Caught signal 11.  Generating backtrace...
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 124589 daemon.crit] *******
************ START ********************************
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 883141 daemon.crit] Frame 0
: /usr/lib/gdm-simple-slave'fallback_get_backtrace+0x38 [0x807a138]
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 883141 daemon.crit] Frame 1
: /usr/lib/gdm-simple-slave'gdm_signal_handler_backtrace+0x8e [0x807a35e]
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 883141 daemon.crit] Frame 2
: /usr/lib/gdm-simple-slave'signal_handler+0x68 [0x807a3d8]
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 883141 daemon.crit] Frame 3
: /lib/libc.so.1'__sighndlr+0xf [0xcf64d1ff]
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 883141 daemon.crit] Frame 4
: /lib/libc.so.1'call_user_handler+0x2b8 [0xcf6426eb]
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 883141 daemon.crit] Frame 5
: /lib/libc.so.1'strlen+0x30 [0xcf5d91e0]
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 883141 daemon.crit] Frame 6
: /lib/libc.so.1'vsnprintf+0x70 [0xcf61bd40]
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 883141 daemon.crit] Frame 7
: /usr/lib/libglib-2.0.so.0.1400.0'g_printf_string_upper_bound+0x27 [0xcf8b06a3]
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 883141 daemon.crit] Frame 8
: /usr/lib/libglib-2.0.so.0.1400.0'g_vasprintf+0x2f [0xcf8d49a3]
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 883141 daemon.crit] Frame 9
: /usr/lib/libglib-2.0.so.0.1400.0'g_strdup_vprintf+0x2a [0xcf8c3ce2]
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 883141 daemon.crit] Frame 1
0: /usr/lib/libglib-2.0.so.0.1400.0'g_strdup_printf+0x1f [0xcf8c3d0b]
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 883141 daemon.crit] Frame 1
1: /usr/lib/gdm-simple-slave'listify_hash+0x18 [0x80672a8]
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 883141 daemon.crit] Frame 1
2: /usr/lib/libglib-2.0.so.0.1400.0'g_hash_table_foreach+0x61 [0xcf89ab39]
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 883141 daemon.crit] Frame 1
3: /usr/lib/gdm-simple-slave'get_greeter_environment+0x385 [0x8067905]
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 883141 daemon.crit] Frame 1
4: /usr/lib/gdm-simple-slave'gdm_greeter_proxy_spawn+0x9d [0x8067b0d]
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 883141 daemon.crit] Frame 1
5: /usr/lib/gdm-simple-slave'gdm_greeter_proxy_start+0x23 [0x8067c33]
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 883141 daemon.crit] Frame 1
6: /usr/lib/gdm-simple-slave'run_greeter+0x2e0 [0x8072560]
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 883141 daemon.crit] Frame 1
7: /usr/lib/gdm-simple-slave'idle_connect_to_display+0x3f [0x80727df]
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 883141 daemon.crit] Frame 1
8: /usr/lib/libglib-2.0.so.0.1400.0'g_timeout_dispatch+0x24 [0xcf8aa680]
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 883141 daemon.crit] Frame 1
9: /usr/lib/libglib-2.0.so.0.1400.0'g_main_dispatch+0x1e2 [0xcf8a7c3a]
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 883141 daemon.crit] Frame 2
0: /usr/lib/libglib-2.0.so.0.1400.0'g_main_context_dispatch+0x85 [0xcf8a8d49]
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 883141 daemon.crit] Frame 2
1: /usr/lib/libglib-2.0.so.0.1400.0'g_main_context_iterate+0x3ce [0xcf8a9166]
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 883141 daemon.crit] Frame 2
2: /usr/lib/libglib-2.0.so.0.1400.0'g_main_loop_run+0x1b8 [0xcf8a9768]
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 883141 daemon.crit] Frame 2
3: /usr/lib/gdm-simple-slave'main+0x203 [0x80652d3]
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 883141 daemon.crit] Frame 2
4: /usr/lib/gdm-simple-slave'_start+0x7a [0x8064a6a]
Aug 30 17:57:10 brianca gdm-simple-slave[18581]: [ID 166210 daemon.crit] *******
************ END **********************************



Thanks for the tip. I was configuring GDM with --sysconfdir=/etc/X11 so the
dbus configuration files were not being installed to the right place.  Now
I use --sysconfdir=/etc and, after restarting D-Bus, GDM is now starting
okay and stays running.

However, it doesn't manage any displays.  I don't see any messages echoed
to the screen if I run with --no-daemon.  I do see a bunch of odd messages
in the syslog.  Messages that look like this repeat.  Full log of the
GDM D-Bus branch running on Solaris attached.

      Aug 29 01:00:28 brianca gdm-binary[4601]: [ID 702911 daemon.warning]
GLib-WARNING: GError set over the top of a previous GError
                      or uninitialized memory.
Aug 29 01:00:28 brianca This indicates a bug in someone's code. You must
                      ensure an error is NULL before it's set.
Aug 29 01:00:28 brianca The overwriting error message was: No property
                      pci.device_class on device with id
/org/freedesktop/Hal/devices/pci_0_0/pci104d_814e_3_2_2

Any ideas what this might mean?

Brian





** (gdm-binary:10475): WARNING **: Failed to acquire org.gnome.DisplayManager: Connection ":1.16" is not allowed to own the service "org.gnome.DisplayManager"
due to security policies in the configuration file
** (gdm-binary:10475): WARNING **: Could not acquire name; bailing out
So dbus services normally install a policy file to say what access
restrictions the bus should place on the service.

My /etc/dbus-1/system.d/gdm.conf file has:
 <!-- Only root can own the service -->
  <policy user="root">
    <allow own="org.gnome.DisplayManager"/>
...

in it.  Do you have a file like that?  If so, does your dbus
system.conf file mention
/etc/dbus-1/system.d (or <standard_system_servicedirs/> ?).

Maybe gdm-binary isn't running as root when it tries to acquire the
service name?

--Ray


Index: configure.ac
===================================================================
--- configure.ac	(revision 5206)
+++ configure.ac	(working copy)
@@ -1068,7 +1068,20 @@
 # symlink to each other, and configure should use the more stable
 # location (the real directory) if possible.
 #
-if test ! -h /usr/X11R6 -a -x /usr/X11R6/bin/X; then
+# On Solaris, the /usr/bin/Xserver script is used to decide whether to
+# use Xsun or Xorg, so this is used on Solaris.
+#
+# When testing for /usr/X11R6, first check with "! -h" for /usr/X11R6
+# and /usr/X11 since they often symlink to each other, and configure
+# should use the more stable location (the real directory) if possible.
+#
+if test -x /usr/X11/bin/Xserver; then
+   X_PATH="/usr/X11/bin"
+   X_SERVER_PATH="/usr/X11/bin"
+   X_SERVER="/usr/X11/bin/Xserver"
+   GDM_USER_PATH="$GDM_USER_PATH:/usr/X11/bin"
+   X_CONFIG_OPTIONS="-audit 0"
+elif test ! -h /usr/X11R6 -a -x /usr/X11R6/bin/X; then
    X_PATH="/usr/X11R6/bin"
    X_SERVER_PATH="/usr/X11R6/bin"
    X_SERVER="/usr/X11R6/bin/X"
Index: daemon/gdm-server.c
===================================================================
--- daemon/gdm-server.c	(revision 5206)
+++ daemon/gdm-server.c	(working copy)
@@ -895,7 +895,7 @@
         server->priv = GDM_SERVER_GET_PRIVATE (server);
 
         server->priv->pid = -1;
-        server->priv->command = g_strdup ("/usr/bin/Xorg -br -verbose");
+        server->priv->command = g_strdup (X_SERVER " -br -verbose");
         server->priv->log_dir = g_strdup (LOGDIR);
 
         setup_ready_signal (server);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]