Marcus,
I've been building your patch on an number of machines. I've had no immediate
problems on Fedora Core 3 or MacOS 10.4.2 but on Sparc Solaris 10 temacs is
crashing with corrupt memory.
I deleted all the core lisp .elc files before attempting this build.
The Installation details and gdb output are below. The corruption hasn't made
the stack trace very helpful I'm afraid. If you need any more info please let
me know.
Malcolm
===========================================================================
uname -a: SunOS stonebridge 5.10 Generic sun4u sparc SUNW,Ultra-Enterprise
../../sandboxen/garbage/configure '--prefix=/home/malcolmp/prefix'
'--enable-mule' '--enable-newgc'
XEmacs 21.5-b23 "daikon" (+CVS-20051106) configured for
`sparc-sun-solaris2.10'.
Compilation Environment and Installation Defaults:
Source code location: /home/malcolmp/builds/xemacs/sandboxen/garbage
Installation prefix: /home/malcolmp/prefix
Runtime library search path:
/usr/ccs/lib:/usr/openwin/lib:/usr/X/lib:/usr/lib/X11:/usr/sfw/lib/gcc/sparc-sun-solaris2.10/3.4.3/../../..:/usr/sfw/lib
Operating system description file: `s/sol2.h'
Machine description file: `m/sparc.h'
Compiler version: gcc (GCC) 3.4.3 (csl-sol210-3_4-branch+sol_rpath)
- GCC specs file: /usr/sfw/lib/gcc/sparc-sun-solaris2.10/3.4.3/specs
- Compiler command: gcc -Wall -Wno-switch -Wundef -Wsign-compare
-Wno-char-subscripts -Wpacked -Wpointer-arith -Wunused-parameter -g
libc version: SUNWcsl 11.10.0,REV=2005.01.21.15.53
Relocating allocator for buffers: yes
GNU version of malloc: yes
Window System:
Compiling in support for the X window system:
- X Windows headers location: /usr/X11/include
- X Windows libraries location: /usr/openwin/lib
- Handling WM_COMMAND properly.
Compiling in support for Motif.
*WARNING* Many versions of Motif are buggy, requiring workarounds.
You are likely to experience slow redisplay.
You may need to install vendor patches to Motif.
See PROBLEMS for more information.
Using Lucid menubars.
Using Lucid scrollbars.
Using Motif dialog boxes.
Using Motif native widgets.
TTY:
Images:
Compiling in support for GIF images (builtin).
Compiling in support for XPM images.
Compiling in support for PNG images.
Compiling in support for JPEG images.
Compiling in support for TIFF images.
Sound:
Databases:
Compiling in support for DBM.
Compiling in support for LDAP.
Internationalization:
Compiling in support for Mule (multi-lingual Emacs).
Compiling in support for XIM (X11R5+ I18N input method).
- Using Motif to provide XIM support.
Mail:
Compiling in support for "file" mail spool file locking method.
Other Features:
Inhibiting IPv6 canonicalization at startup.
Compiling in support for dynamic shared object modules.
Using the new GC algorithms.
WARNING: ---------------------------------------------------------
WARNING: The new algorithms are experimental. They are enabled by
WARNING: default for this release. Use `--disable-kkcc' to
WARNING: turn it off.
WARNING: ---------------------------------------------------------
Using the new allocator.
WARNING: ---------------------------------------------------------
WARNING: The new allocator is experimental. It is enabled by
WARNING: default for this release. Use `--disable-mc-alloc' to
WARNING: turn it off.
WARNING: ---------------------------------------------------------
Using the new incremental garbage collector.
Using sigaction() to install fault handler.
Compiling in support for extra debugging code.
Compiling in support for runtime error checking.
WARNING: ---------------------------------------------------------
WARNING: XEmacs will run noticeably more slowly as a result.
WARNING: Error checking is on by default for XEmacs beta releases.
WARNING: ---------------------------------------------------------
---------------------------------------------------------------------------
$ gdb temacs
[...]
(gdb) run -nd -no-packages -batch -l
/home/malcolmp/builds/xemacs/sandboxen/garbage/src/../lisp/update-elc.el
Starting program: /export/home/malcolmp/builds/xemacs/objdirs/garbage/src/temacs -nd
-no-packages -batch -l
/home/malcolmp/builds/xemacs/sandboxen/garbage/src/../lisp/update-elc.el
warning: Lowest section in /usr/lib/libintl.so.1 is .dynamic at 00000074
warning: Lowest section in /usr/lib/libdl.so.1 is .dynamic at 00000094
Loading /home/malcolmp/builds/xemacs/sandboxen/garbage/src/../lisp/update-elc.el...
Loading find-paths.el...
Loading packages.el...
Loading setup-paths.el...
Loading /home/malcolmp/builds/xemacs/sandboxen/garbage/lisp/dumped-lisp.el...
Wrote /export/home/malcolmp/builds/xemacs/objdirs/garbage/src/NEEDTODUMP
Loading loadup-el.el...
Loading loadup.el...
Using load-path (/home/malcolmp/builds/xemacs/sandboxen/garbage/lisp/)
Using module-load-path (/export/home/malcolmp/builds/xemacs/objdirs/garbage/modules)
Loading dumped-lisp.el...
Loading backquote.el...
Loading bytecomp-runtime.el...
[...]
Loading paragraphs.el...
Loading resize-minibuffer.el...
Loading loadhist.el...
Loading loaddefs.el...
Loading site-load.el...
Bootstrapping from temacs...
Loading bytecomp...
Loading /export/home/malcolmp/builds/xemacs/objdirs/garbage/lisp/auto-autoloads...
Fatal Error: Received SIGSEGV (11) for address 0x212
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 `xemacs-beta(a)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 /export/home/malcolmp/builds/xemacs/objdirs/garbage/src/temacs 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 ...)
# bind (cl-temp)
(let ((cl-temp (cl-check-key cl-tree)) (cl-p cl-alist)) (while (and cl-p (not
(cl-check-test-nokey (car (car cl-p)) cl-temp))) (setq cl-p (cdr cl-p))) (if cl-p (cdr
(car cl-p)) (if (consp cl-tree) (let ((cl-a (cl-sublis-rec (car cl-tree))) (cl-d
(cl-sublis-rec (cdr cl-tree)))) (if (and (eq cl-a (car cl-tree)) (eq cl-d (cdr cl-tree)))
cl-tree (cons cl-a cl-d))) cl-tree)))
# bind (cl-tree)
cl-sublis-rec(nil)
(let ((cl-a (cl-sublis-rec (car cl-tree))) (cl-d (cl-sublis-rec (cdr cl-tree)))) (if
(and (eq cl-a (car cl-tree)) (eq cl-d (cdr cl-tree))) cl-tree (cons cl-a cl-d)))
(if (consp cl-tree) (let ((cl-a (cl-sublis-rec (car cl-tree))) (cl-d (cl-sublis-rec (cdr
cl-tree)))) (if (and (eq cl-a (car cl-tree)) (eq cl-d (cdr cl-tree))) cl-tree (cons cl-a
cl-d))) cl-tree)
(if cl-p (cdr (car cl-p)) (if (consp cl-tree) (let ((cl-a (cl-sublis-rec (car cl-tree)))
(cl-d (cl-sublis-rec (cdr cl-tree)))) (if (and (eq cl-a (car cl-tree)) (eq cl-d (cdr
cl-tree))) cl-tree (cons cl-a cl-d))) cl-tree))
# bind (cl-p cl-temp)
(let ((cl-temp (cl-check-key cl-tree)) (cl-p cl-alist)) (while (and cl-p (not
(cl-check-test-nokey (car (car cl-p)) cl-temp))) (setq cl-p (cdr cl-p))) (if cl-p (cdr
(car cl-p)) (if (consp cl-tree) (let ((cl-a (cl-sublis-rec (car cl-tree))) (cl-d
(cl-sublis-rec (cdr cl-tree)))) (if (and (eq cl-a (car cl-tree)) (eq cl-d (cdr cl-tree)))
cl-tree (cons cl-a cl-d))) cl-tree)))
# bind (cl-tree)
cl-sublis-rec((G18821))
(let ((cl-a (cl-sublis-rec (car cl-tree))) (cl-d (cl-sublis-rec (cdr cl-tree)))) (if
(and (eq cl-a (car cl-tree)) (eq cl-d (cdr cl-tree))) cl-tree (cons cl-a cl-d)))
(if (consp cl-tree) (let ((cl-a (cl-sublis-rec (car cl-tree))) (cl-d (cl-sublis-rec (cdr
cl-tree)))) (if (and (eq cl-a (car cl-tree)) (eq cl-d (cdr cl-tree))) cl-tree (cons cl-a
cl-d))) cl-tree)
(if cl-p (cdr (car cl-p)) (if (consp cl-tree) (let ((cl-a (cl-sublis-rec (car cl-tree)))
(cl-d (cl-sublis-rec (cdr cl-tree)))) (if (and (eq cl-a (car cl-tree)) (eq cl-d (cdr
cl-tree))) cl-tree (cons cl-a cl-d))) cl-tree))
# bind (cl-p cl-temp)
(let ((cl-temp (cl-check-key cl-tree)) (cl-p cl-alist)) (while (and cl-p (not
(cl-check-test-nokey (car (car cl-p)) cl-temp))) (setq cl-p (cdr cl-p))) (if cl-p (cdr
(car cl-p)) (if (consp cl-tree) (let ((cl-a (cl-sublis-rec (car cl-tree))) (cl-d
(cl-sublis-rec (cdr cl-tree)))) (if (and (eq cl-a (car cl-tree)) (eq cl-d (cdr cl-tree)))
cl-tree (cons cl-a cl-d))) cl-tree)))
# bind (cl-tree)
cl-sublis-rec((symbol-value G18821))
# bind (cl-if-not cl-if cl-key cl-test-not cl-test)
(let* ((cl-test (car (cdr (memq (quote :test) cl-keys)))) (cl-test-not (and (car (cdr
(memq (quote :test-not) cl-keys))) (setq cl-test (car (cdr (memq (quote :test-not)
cl-keys)))) t)) (cl-key (car (cdr (memq (quote :key) cl-keys)))) (cl-if (car (cdr (memq
(quote :if) cl-keys)))) (cl-if-not (and (car (cdr (memq (quote :if-not) cl-keys))) (setq
cl-if (car (cdr (memq (quote :if-not) cl-keys)))) t))) (let ((cl-keys-temp cl-keys))
(while cl-keys-temp (or (memq (car cl-keys-temp) (quote (:test :test-not :key :if
:if-not))) (car (cdr (memq (quote :allow-other-keys) cl-keys))) (error "Bad keyword
argument %s" (car cl-keys-temp))) (setq cl-keys-temp (cdr (cdr cl-keys-temp)))))
(cl-sublis-rec cl-tree))
(cl-parsing-keywords (:test :test-not :key :if :if-not) nil (cl-sublis-rec cl-tree))
# bind (cl-keys cl-tree cl-alist)
sublis(((G18821 . sym)) (symbol-value G18821))
(list (nreverse lets) (cons (car (nth 2 method)) (sublis subs (nth 3 method))) (sublis
subs (nth 4 method)))
# bind (simple optimize subs lets values temps method)
(let* ((method (get-setf-method place cl-macro-environment)) (temps (car method))
(values (nth 1 method)) (lets nil) (subs nil) (optimize (and (not (eq opt-expr (quote
no-opt))) (or (and (not (eq opt-expr (quote unsafe))) (cl-safe-expr-p opt-expr))
(cl-setf-simple-store-p (car (nth 2 method)) (nth 3 method))))) (simple (and optimize
(consp place) (cl-simple-exprs-p (cdr place))))) (while values (if (or simple
(cl-const-expr-p (car values))) (push (cons (pop temps) (pop values)) subs) (push (list
(pop temps) (pop values)) lets))) (list (nreverse lets) (cons (car (nth 2 method)) (sublis
subs (nth 3 method))) (sublis subs (nth 4 method))))
# bind (opt-expr place)
cl-setf-do-modify((symbol-value sym) (list))
(let* ((method (cl-setf-do-modify place (cons (quote list) args))) (temp (and (not
(cl-const-expr-p arg1)) (gensym "--arg1--"))) (rargs (list* (or temp arg1) (nth
2 method) args))) (list (quote let*) (append (and temp (list (list temp arg1))) (car
method)) (cl-setf-do-store (nth 1 method) (if (symbolp func) (cons func rargs) (list*
(quote funcall) (list (quote function) func) rargs)))))
(if (and (cl-safe-expr-p arg1) (cl-simple-expr-p place) (symbolp func)) (list (quote
setf) place (list* func arg1 place args)) (let* ((method (cl-setf-do-modify place (cons
(quote list) args))) (temp (and (not (cl-const-expr-p arg1)) (gensym
"--arg1--"))) (rargs (list* (or temp arg1) (nth 2 method) args))) (list (quote
let*) (append (and temp (list (list temp arg1))) (car method)) (cl-setf-do-store (nth 1
method) (if (symbolp func) (cons func rargs) (list* (quote funcall) (list (quote function)
func) rargs))))))
# bind (args place arg1 func)
(lambda (func arg1 place &rest args) "(callf2 FUNC ARG1 PLACE ARGS...): set
PLACE to (FUNC ARG1 PLACE ARGS...).\nLike `callf', but PLACE is the second argument of
FUNC, not the first." (if (and (cl-safe-expr-p arg1) (cl-simple-expr-p place)
(symbolp func)) (list (quote setf) place (list* func arg1 place args)) (let* ((method
(cl-setf-do-modify place (cons (quote list) args))) (temp (and (not (cl-const-expr-p
arg1)) (gensym "--arg1--"))) (rargs (list* (or temp arg1) (nth 2 method) args)))
(list (quote let*) (append (and temp (list (list temp arg1))) (car method))
(cl-setf-do-store (nth 1 method) (if (symbolp func) (cons func rargs) (list* (quote
funcall) (list (quote function) func) rargs)))))))(cons elt (symbol-value sym))
(callf2 cons elt (symbol-value sym))
(push elt (symbol-value sym))
(cond ((null after) (push elt (symbol-value sym))) ((and (not (eq after t)) (setq place
(memq (assq after (symbol-value sym)) (symbol-value sym)))) (push elt (cdr place))) (t
(set sym (append (symbol-value sym) (list elt)))))
# bind (place)
(let (place) (cond ((null after) (push elt (symbol-value sym))) ((and (not (eq after t))
(setq place (memq (assq after (symbol-value sym)) (symbol-value sym)))) (push elt (cdr
place))) (t (set sym (append (symbol-value sym) (list elt))))))
# bind (sym elt)
(lambda (elt sym) (let (place) (cond ((null after) (push elt (symbol-value sym))) ((and
(not (eq after t)) (setq place (memq (assq after (symbol-value sym)) (symbol-value sym))))
(push elt (cdr place))) (t (set sym (append (symbol-value sym) (list elt))))))
(symbol-value sym))((font-lock-mode (#<extent [detached)
Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.
warning: Wrong size gregset in core file.
warning: Wrong size fpregset in core file.
(gdb) where
#0 0xfeb297b8 in memset ()
from /platform/SUNW,Ultra-Enterprise/lib/libc_psr.so.1
#1 0x00249144 in mc_alloc_1 (size=Cannot access memory at address 0xffbf593c
)
at /home/malcolmp/builds/xemacs/sandboxen/garbage/src/mc-alloc.c:1412
#2 0x00249144 in mc_alloc_1 (size=Cannot access memory at address 0xffbf593c
)
at /home/malcolmp/builds/xemacs/sandboxen/garbage/src/mc-alloc.c:1412
Previous frame identical to this frame (corrupt stack?)
(gdb)
--
Malcolm Purvis <malcolmp(a)xemacs.org>