Bug#610828: When the X server fails to start, keys are grabbed from both gdm and the console

Vincent Lefevre vincent at vinc17.net
Sun Jan 23 00:41:37 UTC 2011


Package: gdm
Version: 2.20.11-4
Severity: important

When for some reason the X server fails to start[*], gdm displays
an error box about the problem and (while I didn't do anything) the
console login prompt appear.

I couldn't login because letter keys were apparently grabbed by gdm,
while the Enter key was grabbed by the console. I tried to change
the virtual console from vt6, but this had no effect (perhaps because
of keys grabbed by gdm).

Fortunately, I had sshd running and I could connect via SSH.

Also, some time later I could get rid of gdm by trying again to type
some keys (perhaps key grabbing is random, so that the Enter key
makes the dialog box disappear when grabbed by gdm).

[*] I'm testing the 2.6.32-5-amd64 kernel, and X isn't configured
yet for it because I was using the nvidia driver with 2.6.31.

-- System Information:
Debian Release: 6.0
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.32-5-amd64 (SMP w/2 CPU cores)
Locale: LANG=POSIX, LC_CTYPE=en_US.ISO8859-1 (charmap=ISO-8859-1)
Shell: /bin/sh linked to /bin/dash

Versions of packages gdm depends on:
ii  adduser                    3.112+nmu2    add and remove users and groups
ii  debconf [debconf-2.0]      1.5.38        Debian configuration management sy
ii  fvwm [x-window-manager]    1:2.5.30.ds-1 F(?) Virtual Window Manager
ii  gksu                       2.0.2-5       graphical frontend to su
ii  gnome-session [x-session-m 2.30.2-3      The GNOME Session Manager - GNOME 
ii  gnome-terminal [x-terminal 2.30.2-1      The GNOME terminal emulator applic
ii  libart-2.0-2               2.3.21-1      Library of functions for 2D graphi
ii  libatk1.0-0                1.30.0-1      The ATK accessibility toolkit
ii  libattr1                   1:2.4.44-2    Extended attribute shared library
ii  libaudit0                  1.7.13-1+b2   Dynamic library for security audit
ii  libc6                      2.11.2-9      Embedded GNU C Library: Shared lib
ii  libcairo2                  1.8.10-6      The Cairo 2D vector graphics libra
ii  libdbus-1-3                1.2.24-4      simple interprocess messaging syst
ii  libdbus-glib-1-2           0.88-2.1      simple interprocess messaging syst
ii  libdmx1                    1:1.1.1-1     X11 Distributed Multihead extensio
ii  libfontconfig1             2.8.0-2.1     generic font configuration library
ii  libfreetype6               2.4.2-2.1     FreeType 2 font engine, shared lib
ii  libglade2-0                1:2.6.4-1     library to load .glade files at ru
ii  libglib2.0-0               2.24.2-1      The GLib library of C routines
ii  libgnomecanvas2-0          2.30.1-1      A powerful object-oriented display
ii  libgtk2.0-0                2.20.1-2      The GTK+ graphical user interface 
ii  libpam-modules             1.1.1-6.1     Pluggable Authentication Modules f
ii  libpam-runtime             1.1.1-6.1     Runtime support for the PAM librar
ii  libpam0g                   1.1.1-6.1     Pluggable Authentication Modules l
ii  libpango1.0-0              1.28.3-1      Layout and rendering of internatio
ii  librsvg2-2                 2.26.3-1      SAX-based renderer library for SVG
ii  librsvg2-common            2.26.3-1      SAX-based renderer library for SVG
ii  libselinux1                2.0.96-1      SELinux runtime shared libraries
ii  libwrap0                   7.6.q-19      Wietse Venema's TCP wrappers libra
ii  libx11-6                   2:1.3.3-4     X11 client-side library
ii  libxau6                    1:1.0.6-1     X11 authorisation library
ii  libxdmcp6                  1:1.1.0-1     X11 Display Manager Control Protoc
ii  libxext6                   2:1.1.2-1     X11 miscellaneous extension librar
ii  libxi6                     2:1.3-6       X11 Input extension library
ii  libxinerama1               2:1.1.1-1     X11 Xinerama extension library
ii  libxml2                    2.7.8.dfsg-2  GNOME XML library
ii  lsb-base                   3.2-27        Linux Standard Base 3.2 init scrip
ii  metacity [x-window-manager 1:2.30.1-3    lightweight GTK+ window manager
ii  mlterm [x-terminal-emulato 3.0.1-3       MultiLingual TERMinal
ii  rxvt [x-terminal-emulator] 1:2.6.4-14    VT102 terminal emulator for the X 
ii  twm [x-window-manager]     1:1.0.4-2     Tab window manager
ii  xterm [x-terminal-emulator 266-1         X terminal emulator

Versions of packages gdm recommends:
ii  dialog                    1.1-20100428-1 Displays user-friendly dialog boxe
ii  gdm-themes                0.6.2          Themes for the GNOME Display Manag
ii  whiptail                  0.52.11-2      Displays user-friendly dialog boxe
pn  xserver-xephyr | xnest    <none>         (no description available)
ii  xserver-xorg              1:7.5+8        the X.Org X server
ii  zenity                    2.30.0-1       Display graphical dialog boxes fro

Versions of packages gdm suggests:
ii  libpam-gnome-keyring          2.30.3-5   PAM module to unlock the GNOME key
ii  locales                       2.11.2-9   Embedded GNU C Library: National L
ii  pm-utils                      1.3.0-3    utilities and scripts for power ma

-- Configuration Files:
/etc/gdm/Init/Default changed:
PATH=/usr/bin:$PATH
OLD_IFS=$IFS
gdmwhich () {
  COMMAND="$1"
  OUTPUT=
  IFS=:
  for dir in $PATH
  do
    if test -x "$dir/$COMMAND" ; then
      if test "x$OUTPUT" = "x" ; then
        OUTPUT="$dir/$COMMAND"
      fi
    fi
  done
  IFS=$OLD_IFS 
  echo "$OUTPUT"
}
sysresources=/etc/X11/Xresources
if [ -f "$sysresources" ]; then
    xrdb -merge "$sysresources"
fi
sysmodmap=/etc/X11/Xmodmap
XMODMAP=`gdmwhich xmodmap`
if [ "x$XMODMAP" != "x" ] ; then
  if [ "x$GDM_PARENT_DISPLAY" = "x" ]; then
    if [ -f $sysmodmap ]; then
      $XMODMAP $sysmodmap
    fi
  else
    ( DISPLAY=$GDM_PARENT_DISPLAY XAUTHORITY=$GDM_PARENT_XAUTHORITY $XMODMAP -pke ) | $XMODMAP -
  fi
  #
  # Switch Sun's Alt and Meta mod mappings
  #
  UNAME=`gdmwhich uname`
  PROCESSOR=`$UNAME -p`
  if [ "x$PROCESSOR" = "xsparc" ]; then
    if $XMODMAP | /usr/bin/grep mod4 | /usr/bin/grep Alt > /dev/null 2>/dev/null
    then
      $XMODMAP -e "clear Mod1" \
               -e "clear Mod4" \
               -e "add Mod1 = Alt_L" \
               -e "add Mod1 = Alt_R" \
               -e "add Mod4 = Meta_L" \
               -e "add Mod4 = Meta_R"
    fi
  fi
fi
SETXKBMAP=`gdmwhich setxkbmap`
if [ "x$SETXKBMAP" != "x" ] ; then
  # FIXME: is this all right?  Is this completely on crack?
  # What this does is move the xkb configuration from the GDM_PARENT_DISPLAY
  # FIXME: This should be done in code.  Or there must be an easier way ...
  if [ -n "$GDM_PARENT_DISPLAY" ]; then
    XKBSETUP=`( DISPLAY=$GDM_PARENT_DISPLAY XAUTHORITY=$GDM_PARENT_XAUTHORITY $SETXKBMAP -v )`
    if [ -n "$XKBSETUP" ]; then
      XKBKEYMAP=`echo "$XKBSETUP" | grep '^keymap' | awk '{ print $2 }'`
      XKBTYPES=`echo "$XKBSETUP" | grep '^types' | awk '{ print $2 }'`
      XKBCOMPAT=`echo "$XKBSETUP" | grep '^compat' | awk '{ print $2 }'`
      XKBSYMBOLS=`echo "$XKBSETUP" | grep '^symbols' | awk '{ print $2 }'`
      XKBGEOMETRY=`echo "$XKBSETUP" | grep '^geometry' | awk '{ print $2 }'`
      if [ -n "$XKBKEYMAP" ]; then
        $SETXKBMAP -keymap "$XKBKEYMAP"
      elif [ -n "$XKBTYPES" -a -n "$XKBCOMPAT" -a -n "$XKBSYMBOLS" -a -n "$XKBGEOMETRY" ]; then
        $SETXKBMAP -types "$XKBTYPES" -compat "$XKBCOMPAT" -symbols "$XKBSYMBOLS" -geometry "$XKBGEOMETRY"
      elif [ -n "$XKBTYPES" -a -n "$XKBCOMPAT" -a -n "$XKBSYMBOLS" ]; then
        $SETXKBMAP -types "$XKBTYPES" -compat "$XKBCOMPAT" -symbols "$XKBSYMBOLS"
      elif [ -n "$XKBSYMBOLS" ]; then
        $SETXKBMAP -symbols "$XKBSYMBOLS"
      fi
    fi
  fi
fi
xset -b
exit 0

/etc/gdm/PostSession/Default changed:
PATH="/usr/bin:$PATH:/bin:/usr/bin"
OLD_IFS=$IFS
gdmwhich () {
  COMMAND="$1"
  OUTPUT=
  IFS=:
  for dir in $PATH
  do
    if test -x "$dir/$COMMAND" ; then
      if test "x$OUTPUT" = "x" ; then
        OUTPUT="$dir/$COMMAND"
      fi
    fi
  done
  IFS=$OLD_IFS 
  echo "$OUTPUT"
}
if [ -x /etc/X11/Xreset ] ; then
  /etc/X11/Xreset
fi
xset -b
exit 0

/etc/gdm/PreSession/Default changed:
PATH="/usr/bin:$PATH:/bin:/usr/bin"
OLD_IFS=$IFS
gdmwhich () {
  COMMAND="$1"
  OUTPUT=
  IFS=:
  for dir in $PATH
  do
    if test -x "$dir/$COMMAND" ; then
      if test "x$OUTPUT" = "x" ; then
        OUTPUT="$dir/$COMMAND"
      fi
    fi
  done
  IFS=$OLD_IFS 
  echo "$OUTPUT"
}
XSETROOT=`gdmwhich xsetroot`
if [ "x$XSETROOT" != "x" ] ; then
	CHECKBACKCOLOR="OK"
	if [ "x$GDM_GREETER_TYPE" = "xTHEMED" ]; then
		BACKCOLOR=`gdmflexiserver --command="GET_CONFIG greeter/GraphicalThemedColor $DISPLAY"`
		CHECKBACKCOLOR=`echo $BACKCOLOR | sed 's/^\([^ ]*\) .*$/\1/'`
		if [ "x$CHECKBACKCOLOR" = "xOK" ]; then
			BACKCOLOR=`echo $BACKCOLOR | sed 's/^.* \(.*\)$/\1/'`
		else
			BACKCOLOR=""
		fi
	fi
	# If we tried to load the themed backgroundcolor, but failed, then try loading plain color
	if [ "x$CHECKBACKCOLOR" != "xOK" ] || [ "x$GDM_GREETER_TYPE" = "xPLAIN" ]; then
		# Background type can be 0=None, 1=Image & Color, 2=Color, or 3=Image 
		BACKTYPE=`gdmflexiserver --command="GET_CONFIG greeter/BackgroundType $DISPLAY"`
		# Skip if background type does not include a color
		if [ "x$BACKTYPE" = "xOK 1" ] || [ "x$BACKTYPE" = "xOK 2" ]; then
			BACKCOLOR=`gdmflexiserver --command="GET_CONFIG greeter/BackgroundColor $DISPLAY"`
			CHECKBACKCOLOR=`echo $BACKCOLOR | sed 's/^\([^ ]*\) .*$/\1/'`
			if [ "x$CHECKBACKCOLOR" = "xOK" ]; then
				BACKCOLOR=`echo $BACKCOLOR | sed 's/^.* \(.*\)$/\1/'`
			else
				BACKCOLOR=""
			fi
		fi
	fi
	# Default value
 	if [ "x$BACKCOLOR" = "x" ]; then
 		BACKCOLOR="#76848F"
 	fi
	"$XSETROOT" -cursor_name left_ptr -solid "$BACKCOLOR"
fi
xset -b
exit 0

/etc/gdm/gdm.conf changed:
[daemon]
[security]
[xdmcp]
[gui]
[greeter]
SoundOnLogin=false
[chooser]
[debug]
[servers]


-- debconf information:
  gdm/daemon_name: /usr/sbin/gdm
* shared/default-x-display-manager: gdm





More information about the pkg-gnome-maintainers mailing list