sjt-xft

Stephen J. Turnbull stephen at xemacs.org
Thu Feb 24 03:25:27 EST 2005


Moving to XEmacs Beta.

>>>>> "Hrvoje" == Hrvoje Niksic <hniksic at xemacs.org> writes:

    Hrvoje> I had to apply this patch to compile:

Thanks; I must have missed an "applies with fuzz" somewhere when I did
a partial sync.  (I always compile --enable-debug.)

Note: I've committed your fix to the branch.

Index: src/xgccache.h
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/xgccache.h,v
retrieving revision 1.2.20.1
diff -u -r1.2.20.1 xgccache.h
--- src/xgccache.h	2004/11/25 12:44:19	1.2.20.1
+++ src/xgccache.h	2005/02/23 19:00:06
@@ -31,9 +31,10 @@
 void free_gc_cache (struct gc_cache *cache);
 GC gc_cache_lookup (struct gc_cache *, XGCValues *, unsigned long mask);
 
+#define XE_GCONTEXT(cell) (XGContextFromGC(cell->gc))
+
 #ifdef DEBUG_XEMACS
 
-#define XE_GCONTEXT(cell) (XGContextFromGC(cell->gc))
 void describe_gc_cache (struct gc_cache *cache, int flags);
 
 #define DGCCFLAG_DISABLE		0

    Hrvoje> However, XEmacs crashes at startup:

$ ./xemacs

Fatal error (11).

Your files have been auto-saved.
Use `M-x recover-session' to recover them.

Your version of XEmacs was distributed with a PROBLEMS file that may describe
your crash, and with luck a workaround.  Please check it first, but do report
the crash anyway.

Please report this bug by invoking M-x report-emacs-bug, or by selecting
`Send Bug Report' from the Help menu.  If that won't work, send ordinary
email to `crashes at xemacs.org'.  *MAKE SURE* to include this entire output
from this crash, especially including the Lisp backtrace, as well as the
XEmacs configuration from M-x describe-installation (or equivalently, the
file `Installation' in the top of the build tree).

*Please* try *hard* to obtain a C stack backtrace; without it, we are unlikely
to be able to analyze the problem.  Locate the core file produced as a result
of this crash (often called `core' or `core.<process-id>', and located in
the directory in which you started XEmacs or your home directory), and type

  gdb /home/hniksic/work/xemacs/src/xemacs core

then type `where' at the debugger prompt.  No GDB on your system?  You may
have DBX, or XDB, or SDB.  (Ask your system administrator if you need help.)
If no core file was produced, enable them (often with `ulimit -c unlimited')
in case of future recurrance of the crash.

Lisp backtrace follows:

  # (unwind-protect ...)
  # (unwind-protect ...)
  # (unwind-protect ...)
  # (unwind-protect ...)
  # (unwind-protect ...)
  # (unwind-protect ...)
  # (unwind-protect ...)
  fc-font-real-pattern("Courier-12" #<x-device on ":0.0" 0x5fd>)
  # bind (device font)
  x-make-font-bold-xft("Courier-12" #<x-device on ":0.0" 0x5fd>)
  # bind (device font)
  x-make-font-bold("Courier-12" #<x-device on ":0.0" 0x5fd>)
  # bind (mapper G15042 G15041 devtype tag-set x G15040 ffpdev devtype-spec prop inst-list locale)
  frob-face-inst-list(global (((default x) . "-b&h-lucidatypewriter-medium-r-normal-sans-0-130-*-*-*-*-iso8859-*") ((default tty) . "normal") ((default x) . "Courier-12") ((default x). "Sazanami Mincho-12")) font window-system)
  # bind (thunk inst-list locale sp)
  frob-locale(#<font-specifier global=(((default x) . "-b&h-lucidatypewriter-medium-r-normal-sans-0-130-*-*-*-*-iso8859-*") ((default tty) . "normal") ((default x) . "Courier-12") ((default x) . "Sazanami Mincho-12")) fallback=#<font-specifier global=((x) . "-b&h-lucidatypewriter-medium-r-normal-sans-0-130-*-*-*-*-iso8859-*") fallback=(((tty) . "normal") ((x) . "Courier-12") ((x) . "Sazanami Mincho-12")) 0x1c4> 0x8a4> global (((default x) . "-b&h-lucidatypewriter-medium-r-normal-sans-0-130-*-*-*-*-iso8859-*") ((default tty) . "normal") ((defaultx) . "Courier-12") ((default x) . "Sazanami Mincho-12")) (font . window-system))
  # bind (ms-this-spec ms-specs ms-result ms-exact-p ms-tag-set ms-maparg ms-locale ms-funcms-specifier)
  map-specifier(#<font-specifier global=(((default x) . "-b&h-lucidatypewriter-medium-r-normal-sans-0-130-*-*-*-*-iso8859-*") ((default tty) . "normal") ((default x) . "Courier-12") ((default x) . "Sazanami Mincho-12")) fallback=#<font-specifier global=((x) . "-b&h-lucidatypewriter-medium-r-normal-sans-0-130-*-*-*-*-iso8859-*") fallback=(((tty) . "normal") ((x) . "Courier-12") ((x) . "Sazanami Mincho-12")) 0x1c4> 0x8a4> frob-locale global (font . window-system) nil nil)
  # bind (locale)
  map-over-locales(global)
  # bind (do-something orig-instance check-differences domain do-later-stages ffpdev)
  # (unwind-protect ...)
  # bind (--letf-save--15037 --letf-bound--15038)
  # (unwind-protect ...)
  # bind (--letf-save--15033 --letf-bound--15034)
  # (unwind-protect ...)
  # bind (--letf-save--15029 --letf-bound--15030)
  # (unwind-protect ...)
  # bind (--letf-save--15025 --letf-bound--15026)
  # (unwind-protect ...)
  # bind (--letf-save--15021 --letf-bound--15022 standard-face-mapping frob-mapping tty-props win-prop frobbed-face unfrobbed-face exactt-p tag-set locale face)
  Face-frob-property(bold global nil nil default bold font (highlight) (tty (lambda (x) t) x x-make-font-bold gtk gtk-make-font-bold mswindows mswindows-make-font-bold msprinter mswindows-make-font-bold) (([default] . [bold]) ([bold] . t) ([italic] . [bold-italic]) ([bold-italic] . t)))
  # bind (exact-p tags locale face)
  make-face-bold(bold global)
  # bind (Face-frob-property-device-considered-current device)
  init-global-faces(#<x-device on ":0.0" 0x5fd>)
  # (unwind-protect ...)
  # (unwind-protect ...)
  # bind (inhibit-quit)
  # (unwind-protect ...)
  # (unwind-protect ...)
  make-device(x nil)
  # bind (display)
  make-x-device(nil)
  init-x-win()
  # bind (debugger debug-on-error command-line-args-left)
  command-line()
  # (condition-case ... . ((t (byte-code "      Â" [error-data data nil] 1))))
  # bind (error-data)
  normal-top-level()
  # (condition-case ... . error)
  # (catch top-level ...)

zsh: segmentation fault  ./xemacs

>From the bacetrace:

    Hrvoje>   fc-font-real-pattern("Courier-12" #<x-device on ":0.0" 0x5fd>)

Yeech.  This is just the "can't find any fonts" assert in disguise, I
have to think.  The problem is that fontconfig never admits defeat,
but if all it has to go on is size and name, well fontconfig will
happily return "Zapf Dingbats-12".  (This isn't an excuse for the
crash, need to prevent that and issue a diagnostic; I'm just
describing what I think is the path to the crash.)

Do you have any suggestion for a reliably available default font?
Looking at the platforms I have available I have to conclude it's
going to be platform-specific.  :-(

You can test the hypothesis that fontconfig returned a bogus font with

./xemacs -xrm 'XEmacs.defaults.attributeFont: Bitstream Vera Mono-12:dpi=100'

Substitute an available family and a correct dpi, or you can omit
dpi if your X server is configured to tell the truth (neither Xfree86
nor X.org does in my experience).



-- 
Institute of Policy and Planning Sciences     http://turnbull.sk.tsukuba.ac.jp
University of Tsukuba                    Tennodai 1-1-1 Tsukuba 305-8573 JAPAN
               Ask not how you can "do" free software business;
              ask what your business can "do for" free software.




More information about the XEmacs-Beta mailing list