Your message dated Mon, 11 Jul 2011 01:43:15 +0800
with message-id <[email protected]>
and subject line Re: Bug #261783: doesn't fall back when default fonts are 
unreadable
has caused the Debian Bug report #261783,
regarding doesn't fall back when default fonts are unreadable
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
261783: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=261783
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: gdm
Version: 2.6.0.3-1
Severity: grave
Justification: renders package unusable

Summary: GDMGreeter does not gracefully handle the condition whereby it is 
trying to open a font file, but 
the font file is not readable.

I have put a number of symlinks in /usr/share/fonts/truetype/commercial/, 
pointing to TrueType font files 
stored in a different filesystem, namely in '/dosc/winnt/Fonts'. This may or 
may not be a good idea; for 
the purposes of this bugreport it does not matter.

When the /dosc vfat filesystem containing the fonts is mounted with options 
that enable all users to read 
the font files contained therein (eg umask=0000), gdmgreeter can also read the 
fonts and everything works 
as expected.

When the filesystem is mounted with options that deny whichever user 
'gdmgreeter' runs as access to the 
font files, gdmgreeter does the following (from 'strace -f gdm --nodaemon >log 
2>&1):

[pid  4003] open("/usr/share/fonts/truetype/commercial/verdana.ttf", O_RDONLY) 
= -1 EACCES (Permission 
denied)
[pid  4003] getpid()                    = 4003
[pid  4003] open("/usr/lib/charset.alias", O_RDONLY|O_LARGEFILE) = -1 ENOENT 
(No such file or directory)
[pid  4003] write(2, "\n** (gdmgreeter:4003): WARNING *"..., 77) = 77
[pid  4003] open("/usr/share/fonts/truetype/commercial/verdana.ttf", O_RDONLY) 
= -1 EACCES (Permission 
denied)
[pid  4003] getpid()                    = 4003
[pid  4003] write(2, "\n** (gdmgreeter:4003): WARNING *"..., 76) = 76
[pid  4003] exit_group(1)               = ?

As you can see, gdmgreeter is treating failure to access one of a great many 
font files as a fatal error 
and is exiting immediately with an error code.
This in turn causes gdm to exit with an error code, which causes the X session 
to end, which leads to an 
infinite loop of restarting X sessions and an unusable system. Thus, a small 
problem regarding one of many 
font files becomes a larger problem (no X) which in turn becomes a very serious 
problem (entire system 
unusable).

I suggest that gdmgreeter should degrade gracefully when font file(s) are 
absent, unreadable, or otherwise 
unusable, instead of exiting. One way of gracefully handling such conditions 
would be to fall back to 
another font.

Also, why does gdmgreeter try to open(2) the same font file twice? If open(2) 
failed first time with 
errno==EACCES, then it will also fail second time - there are no intervening 
chmod calls. I could 
understand this behaviour if errno==EGAIN or something similar, but it doesn't, 
so this seems like a 
pointless waste of CPU cycles. But I don't find this important enough to 
justify a seperate bug report.

Also, why does 'gdmgreeter' print 'WARNING', when it is about to exit with 
status 1? Isn't this behaviour 
the very definition of a fatal error, as opposed to merely a warning?

Another problem is that the error messages printed by gdmgreeter (writes to fd 
2 in strace output above) go 
nowhere - at this point, fd 2 is opened to /dev/null. This makes it very hard 
to diagnose problems in 
gdmgreeter. The information in syslog from gdm is not sufficient to diagnose 
faults in sub-processes such 
as gdmgreeter. I think this deserves a seperate bug report.

Cheers,

--m@

-- System Information:
Debian Release: testing/unstable
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: i386 (i686)
Kernel: Linux 2.6.7
Locale: LANG=C, LC_CTYPE=C

Versions of packages gdm depends on:
hi  adduser                     3.49         Add and remove users and groups
ii  debconf                     1.4.29       Debian configuration management sy
ii  dpkg                        1.10.15      Package maintenance system for Deb
ii  gksu                        1.2.0-2      graphical frontend to su
ii  gnome-session               2.4.2-2      The GNOME 2 Session Manager
ii  gnome-terminal [x-terminal- 2.2.2-4      The GNOME 2 terminal emulator appl
ii  libart-2.0-2                2.3.16-5     Library of functions for 2D graphi
ii  libatk1.0-0                 1.6.1-2      The ATK accessibility toolkit
ii  libattr1                    2.4.15-1     Extended attribute shared library
ii  libbonobo2-0                2.6.2-4      Bonobo CORBA interfaces library
ii  libbonoboui2-0              2.6.1-1      The Bonobo UI library
ii  libc6                       2.3.2.ds1-11 GNU C Library: Shared libraries an
ii  libgconf2-4                 2.6.2-1      GNOME configuration database syste
ii  libglade2-0                 1:2.4.0-1    Library to load .glade files at ru
ii  libglib2.0-0                2.4.2-1      The GLib library of C routines
ii  libgnome2-0                 2.6.1-6      The GNOME 2 library - runtime file
ii  libgnomecanvas2-0           2.6.1.1-2    A powerful object-oriented display
ii  libgnomeui-0                2.6.1.1-3    The GNOME 2 libraries (User Interf
ii  libgnomevfs2-0              2.6.1.1-3    The GNOME virtual file-system libr
ii  libgtk2.0-0                 2.4.3-1      The GTK+ graphical user interface 
ii  libice6                     4.3.0-7      Inter-Client Exchange library
ii  liborbit2                   1:2.10.2-1.1 libraries for ORBit2 - a CORBA ORB
hi  libpam-modules              0.76-7       Pluggable Authentication Modules f
ii  libpam-runtime              0.76-15      Runtime support for the PAM librar
hi  libpam0g                    0.76-7       Pluggable Authentication Modules l
ii  libpango1.0-0               1.4.0-4      Layout and rendering of internatio
hi  libpopt0                    1.7-2        lib for parsing cmdline parameters
ii  librsvg2-2                  2.7.2-3      SAX-based renderer library for SVG
ii  libselinux1                 1.14-2       SELinux shared libraries
ii  libsm6                      4.3.0-7      X Window System Session Management
ii  libwrap0                    7.6-ipv6.1-3 Wietse Venema's TCP wrappers libra
ii  libx11-6                    4.3.0-7      X Window System protocol client li
ii  libxext6                    4.3.0-7      X Window System miscellaneous exte
ii  libxml2                     2.6.10-3     GNOME XML library
ii  metacity [x-window-manager] 1:2.4.55-2   A lightweight GTK2 based Window Ma
ii  xbase-clients               4.3.0-7      miscellaneous X clients
ii  xlibs                       4.3.0-7      X Window System client libraries m
ii  xterm [x-terminal-emulator] 4.2.1-3      X terminal emulator
hi  zlib1g                      1:1.2.1-4    compression library - runtime

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



--- End Message ---
--- Begin Message ---
Version: 2.6.0-1

Fontconfig does fall back when default fonts are unreadable at least
since 2.6.0 (not tested for versions even earlier), so closing this bug.

-- 
Regards,
Aron Xu


--- End Message ---

Reply via email to