Re: [gdm-list] GDM D-Bus on Solaris
- From: Brian Cameron <Brian Cameron Sun COM>
- To: Brian Cameron <Brian Cameron Sun COM>
- Cc: Artem Kachitchkine <Artem Kachitchkin Sun COM>, gdm-list gnome org, Jim Li <Jim Li Sun COM>
- Subject: Re: [gdm-list] GDM D-Bus on Solaris
- Date: Thu, 30 Aug 2007 18:43:34 -0500
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]