Bug#730653: gdm3: GDM3 doesn't close child processes on exit

Angelescu Ovidiu mrhsaacdoh at gmail.com
Wed Nov 27 19:21:44 UTC 2013


Package: gdm3
Version: 3.8.4-6
Severity: important

Dear Maintainer,
After entering graphic mode in runlevel 5 using gdm3 login if you run init 3 from a console
xorg isn't killed and also a gdm3 library.
Those continue to work in memory.
If you try to run init 5 from runlevel 3 a scrambled screen it's showned.
I expect in runlevel 3 all gdm3 child processes to be killed.
If you run init 1 gdm3 child processes are killed.

-- System Information:
Debian Release: jessie/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 3.12-1.towo-siduction-amd64 (SMP w/1 CPU core; PREEMPT)
Locale: LANG=en_US.utf8, LC_CTYPE=en_US.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages gdm3 depends on:
ii  accountsservice                       0.6.34-2
ii  adduser                               3.113+nmu3
ii  dconf-cli                             0.18.0-1
ii  dconf-gsettings-backend               0.18.0-1
ii  debconf [debconf-2.0]                 1.5.52
ii  gir1.2-gdm3                           3.8.4-6
ii  gnome-session [x-session-manager]     3.8.4-3
ii  gnome-session-bin                     3.8.4-3
ii  gnome-settings-daemon                 3.8.5-2
ii  gnome-shell                           3.8.4-5
ii  gnome-terminal [x-terminal-emulator]  3.10.1-1
ii  gsettings-desktop-schemas             3.8.2-2
ii  libaccountsservice0                   0.6.34-2
ii  libatk1.0-0                           2.10.0-2
ii  libaudit1                             1:2.3.2-2
ii  libc6                                 2.17-96
ii  libcairo-gobject2                     1.12.16-2
ii  libcairo2                             1.12.16-2
ii  libcanberra-gtk3-0                    0.30-2
ii  libcanberra0                          0.30-2
ii  libgdk-pixbuf2.0-0                    2.28.2-1
ii  libgdm1                               3.8.4-6
ii  libglib2.0-0                          2.37.5+really2.36.4-0r0
ii  libglib2.0-bin                        2.37.5+really2.36.4-0r0
ii  libgtk-3-0                            3.8.6-1
ii  libpam-modules                        1.1.3-10
ii  libpam-runtime                        1.1.3-10
ii  libpam-systemd                        204-5
ii  libpam0g                              1.1.3-10
ii  libpango-1.0-0                        1.36.0-1
ii  libpangocairo-1.0-0                   1.36.0-1
ii  librsvg2-common                       2.40.0-1
ii  libselinux1                           2.2.1-1
ii  libwrap0                              7.6.q-24
ii  libx11-6                              2:1.6.2-1
ii  libxau6                               1:1.0.8-1
ii  libxdmcp6                             1:1.1.1-1
ii  libxrandr2                            2:1.4.1-1
ii  lsb-base                              4.1+Debian12
ii  metacity [x-window-manager]           1:2.34.13-1
ii  upower                                0.9.23-2+b1
ii  x11-common                            1:7.7+4
ii  x11-xserver-utils                     7.7+1

Versions of packages gdm3 recommends:
ii  at-spi2-core               2.10.1-1
pn  desktop-base               <none>
ii  gnome-icon-theme           3.10.0-1
ii  gnome-icon-theme-symbolic  3.10.1-1
ii  x11-xkb-utils              7.7~1
pn  xserver-xephyr             <none>
ii  xserver-xorg               1:7.7+4
ii  zenity                     3.8.0-1

Versions of packages gdm3 suggests:
pn  gnome-orca            <none>
pn  libpam-gnome-keyring  <none>

-- Configuration Files:
/etc/gdm3/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 | grep mod4 | 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
/usr/share/siduction-dynamic-dms/detect-resolution

/etc/gdm3/daemon.conf changed:
[daemon]
AutomaticLogin=siducer
AutomaticLoginEnable=true
                 
TimedLoginEnable=true
TimedLogin=siducer
TimedLoginDelay=1
[security]
[xdmcp]
[greeter]
[chooser]
[debug]

/etc/init.d/gdm3 changed:
set -e
PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/gdm3
test -x $DAEMON || exit 0
if [ -r /etc/default/locale ]; then
  . /etc/default/locale
  export LANG LANGUAGE
fi
.. /lib/lsb/init-functions
HEED_DEFAULT_DISPLAY_MANAGER=true
DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/default-display-manager
gen_config() {
  # GSettings configuration uses dconf update to generate a gdm profile
  if [ -d /var/lib/gdm3 ]; then
    needed=no
    if [ -f /var/lib/gdm3/dconf/db/gdm ]; then
      for f in \
          /usr/share/gdm/dconf /usr/share/gdm/dconf/*-settings \
          /usr/share/gdm/dconf/locks /usr/share/gdm/dconf/locks/*-locks \
          /etc/gdm3/greeter.gsettings; do
        if [ "$f" -nt /var/lib/gdm3/dconf/db/gdm ]; then
          needed=yes
          break
        fi
      done
    else
      needed=yes
    fi
    if [ "$needed" = yes ]; then
      rm -rf /var/lib/gdm3/dconf
      mkdir -p /var/lib/gdm3/dconf/profile /var/lib/gdm3/dconf/db/gdm.d/locks
      ln -s /usr/share/gdm/dconf-profile /var/lib/gdm3/dconf/profile/gdm
      ln -s /usr/share/gdm/dconf/*-settings /var/lib/gdm3/dconf/db/gdm.d/
      ln -s /usr/share/gdm/dconf/locks/*-locks /var/lib/gdm3/dconf/db/gdm.d/locks/
      # The configuration file in /etc uses org.gnome.blah gsettings syntax.
      # Convert it to org/gnome/blah dconf syntax.
      awk '/\[.*\]/ { gsub("\\.","/"); } ! /^#/ { print;}' \
        /etc/gdm3/greeter.gsettings > /var/lib/gdm3/dconf/db/gdm.d/90-debian-settings
      dconf update /var/lib/gdm3/dconf/db 2> /dev/null
    fi
  fi
}
case "$1" in
  start)
        CONFIGURED_DAEMON=$(basename "$(cat $DEFAULT_DISPLAY_MANAGER_FILE 2> /dev/null)")
        if grep -wqs text /proc/cmdline; then
            log_warning_msg "Not starting GNOME Display Manager; found 'text' in kernel commandline."
        elif [ -e "$DEFAULT_DISPLAY_MANAGER_FILE" ] && \
           [ "$HEED_DEFAULT_DISPLAY_MANAGER" = "true" ] && \
           [ "$CONFIGURED_DAEMON" != gdm3 ] ; then
                log_action_msg "Not starting GNOME Display Manager; it is not the default display manager"
        else
                log_daemon_msg "Starting GNOME Display Manager" "gdm3"
                gen_config
                rm -f /var/lib/gdm/.ICEauthority
                start-stop-daemon --start --quiet --pidfile /var/run/gdm3.pid \
			--background --exec $DAEMON || log_end_msg 1
                log_end_msg 0
        fi
  ;;
  stop)
        log_daemon_msg "Stopping GNOME Display Manager" "gdm3"
        set +e
        start-stop-daemon --stop --quiet --pidfile /var/run/gdm3.pid \
                --name gdm3 --retry 5
	chvt 1
        set -e
        log_end_msg $?
  ;;
  reload)
        log_daemon_msg "Scheduling reload of GNOME Display Manager configuration" "gdm3"
        set +e
        gen_config
        start-stop-daemon --stop --signal HUP --quiet --pidfile \
                /var/run/gdm3.pid --name gdm3
        start-stop-daemon --stop --signal HUP --quiet --name dconf-service \
                --user Debian-gdm --oknodo
        set -e
        log_end_msg $?
  ;;
  status)
        status_of_proc -p "$PIDFILE" "$DAEMON" gdm3 && exit 0 || exit $?
  ;;
  restart|force-reload)
        $0 stop
        $0 start
  ;;
  *)
        echo "Usage: /etc/init.d/gdm3 {start|stop|restart|reload|force-reload|status}"
        exit 1
  ;;
esac
exit 0


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



More information about the pkg-gnome-maintainers mailing list