On 4551 September 1993, Stephen J. Turnbull wrote:
Could you try sourcing .gdbinit (from the XEmacs src directory) into
gdb, then start XEmacs, execute the recipe, then type lbt (==
lisp_back_trace)? That should tell us more about what LISP was doing
at the time. In particular, I'd like to know if it's in completion
and what it's trying to do at the time.
Okay, I loaded the .el-files from hand and now get the following,
probably more informative lisp backtrace. To me, the crash seems to be
related to font-lock, text-properties and maybe syntax-table issues.
However, I have no idea what's inside the unwind-protects.
Holger
(gdb) lbt
# (unwind-protect ...)
# (unwind-protect ...)
# (unwind-protect ...)
# (unwind-protect ...)
# (unwind-protect ...)
# (unwind-protect ...)
# (unwind-protect ...)
# (unwind-protect ...)
("(in map-extents-internal)" "[internal]")
put-nonduplicable-text-property(1 22 syntax-table nil)
(if lookup-syntax-properties (put-nonduplicable-text-property start end (quote
syntax-table) nil))
# bind (end start)
font-lock-remove-face(1 22)
# bind (buffer-file-truename buffer-file-name inhibit-read-only buffer-undo-list
modified)
(let ((modified (buffer-modified-p)) (buffer-undo-list t) (inhibit-read-only t)
buffer-file-name buffer-file-truename) (font-lock-remove-face beg end) (and (not modified)
(buffer-modified-p) (set-buffer-modified-p nil)))
# bind (maybe-loudly end beg)
font-lock-default-unfontify-region(1 22 nil)
funcall(font-lock-default-unfontify-region 1 22 nil)
# bind (loudly end beg)
font-lock-unfontify-region(1 22)
(progn (if font-lock-syntax-table (set-syntax-table font-lock-syntax-table))
(font-lock-unfontify-region beg end) (when font-lock-syntactic-keywords
(font-lock-fontify-syntactic-keywords-region beg end)) (unless font-lock-keywords-only
(font-lock-fontify-syntactically-region beg end loudly))
(font-lock-fontify-keywords-region beg end loudly))
# (unwind-protect ...)
(unwind-protect (progn (if font-lock-syntax-table (set-syntax-table
font-lock-syntax-table)) (font-lock-unfontify-region beg end) (when
font-lock-syntactic-keywords (font-lock-fontify-syntactic-keywords-region beg end))
(unless font-lock-keywords-only (font-lock-fontify-syntactically-region beg end loudly))
(font-lock-fontify-keywords-region beg end loudly)) (set-syntax-table old-syntax-table)
(and (not modified) (buffer-modified-p) (set-buffer-modified-p nil)))
# bind (buffer-file-truename buffer-file-name old-syntax-table inhibit-read-only
buffer-undo-list modified)
(let ((modified (buffer-modified-p)) (buffer-undo-list t) (inhibit-read-only t)
(old-syntax-table (syntax-table)) buffer-file-name buffer-file-truename) (unwind-protect
(progn (if font-lock-syntax-table (set-syntax-table font-lock-syntax-table))
(font-lock-unfontify-region beg end) (when font-lock-syntactic-keywords
(font-lock-fontify-syntactic-keywords-region beg end)) (unless font-lock-keywords-only
(font-lock-fontify-syntactically-region beg end loudly))
(font-lock-fontify-keywords-region beg end loudly)) (set-syntax-table old-syntax-table)
(and (not modified) (buffer-modified-p) (set-buffer-modified-p nil))))
# bind (loudly end beg)
font-lock-default-fontify-region(1 22 nil)
funcall(font-lock-default-fontify-region 1 22 nil)
# bind (loudly end beg)
font-lock-fontify-region(1 22)
# bind (val end beg)
(lambda (beg end val) (font-lock-fontify-region beg end))(1 22 t)
map-range-table((lambda (beg end val) (font-lock-fontify-region beg end))
#<range-table [1 22) t 0xcca4f>)
# (unwind-protect ...)
(save-restriction (widen) (map-extents (function (lambda (ex dummy-maparg) (let* ((beg
(extent-start-position ex)) (end (extent-end-position ex)) (beg (progn (goto-char beg)
(beginning-of-line) (point))) (end (progn (goto-char end) (forward-line 1) (point))))
(put-range-table beg end t font-lock-range-table)))) nil nil nil nil nil (quote
font-lock-pending) t) (put-text-property (point-min) (point-max) (quote font-lock-pending)
nil) (map-range-table (function (lambda (beg end val) (font-lock-fontify-region beg end)))
font-lock-range-table))
# (unwind-protect ...)
(save-excursion (save-restriction (widen) (map-extents (function (lambda (ex
dummy-maparg) (let* ((beg (extent-start-position ex)) (end (extent-end-position ex)) (beg
(progn (goto-char beg) (beginning-of-line) (point))) (end (progn (goto-char end)
(forward-line 1) (point)))) (put-range-table beg end t font-lock-range-table)))) nil nil
nil nil nil (quote font-lock-pending) t) (put-text-property (point-min) (point-max) (quote
font-lock-pending) nil) (map-range-table (function (lambda (beg end val)
(font-lock-fontify-region beg end))) font-lock-range-table)))
# (unwind-protect ...)
(save-current-buffer (set-buffer buffer) (save-excursion (save-restriction (widen)
(map-extents (function (lambda (ex dummy-maparg) (let* ((beg (extent-start-position ex))
(end (extent-end-position ex)) (beg (progn (goto-char beg) (beginning-of-line) (point)))
(end (progn (goto-char end) (forward-line 1) (point)))) (put-range-table beg end t
font-lock-range-table)))) nil nil nil nil nil (quote font-lock-pending) t)
(put-text-property (point-min) (point-max) (quote font-lock-pending) nil) (map-range-table
(function (lambda (beg end val) (font-lock-fontify-region beg end)))
font-lock-range-table))))
(with-current-buffer buffer (save-excursion (save-restriction (widen) (map-extents
(function (lambda (ex dummy-maparg) (let* ((beg (extent-start-position ex)) (end
(extent-end-position ex)) (beg (progn (goto-char beg) (beginning-of-line) (point))) (end
(progn (goto-char end) (forward-line 1) (point)))) (put-range-table beg end t
font-lock-range-table)))) nil nil nil nil nil (quote font-lock-pending) t)
(put-text-property (point-min) (point-max) (quote font-lock-pending) nil) (map-range-table
(function (lambda (beg end val) (font-lock-fontify-region beg end)))
font-lock-range-table))))
(progn (clear-range-table font-lock-range-table) (with-current-buffer buffer
(save-excursion (save-restriction (widen) (map-extents (function (lambda (ex dummy-maparg)
(let* ((beg (extent-start-position ex)) (end (extent-end-position ex)) (beg (progn
(goto-char beg) (beginning-of-line) (point))) (end (progn (goto-char end) (forward-line 1)
(point)))) (put-range-table beg end t font-lock-range-table)))) nil nil nil nil nil (quote
font-lock-pending) t) (put-text-property (point-min) (point-max) (quote font-lock-pending)
nil) (map-range-table (function (lambda (beg end val) (font-lock-fontify-region beg end)))
font-lock-range-table)))))
(if (buffer-live-p buffer) (progn (clear-range-table font-lock-range-table)
(with-current-buffer buffer (save-excursion (save-restriction (widen) (map-extents
(function (lambda (ex dummy-maparg) (let* ((beg (extent-start-position ex)) (end
(extent-end-position ex)) (beg (progn (goto-char beg) (beginning-of-line) (point))) (end
(progn (goto-char end) (forward-line 1) (point)))) (put-range-table beg end t
font-lock-range-table)))) nil nil nil nil nil (quote font-lock-pending) t)
(put-text-property (point-min) (point-max) (quote font-lock-pending) nil) (map-range-table
(function (lambda (beg end val) (font-lock-fontify-region beg end)))
font-lock-range-table))))))
(when (buffer-live-p buffer) (clear-range-table font-lock-range-table)
(with-current-buffer buffer (save-excursion (save-restriction (widen) (map-extents
(function (lambda (ex dummy-maparg) (let* ((beg (extent-start-position ex)) (end
(extent-end-position ex)) (beg (progn (goto-char beg) (beginning-of-line) (point))) (end
(progn (goto-char end) (forward-line 1) (point)))) (put-range-table beg end t
font-lock-range-table)))) nil nil nil nil nil (quote font-lock-pending) t)
(put-text-property (point-min) (point-max) (quote font-lock-pending) nil) (map-range-table
(function (lambda (beg end val) (font-lock-fontify-region beg end)))
font-lock-range-table)))))
# bind (dummy buffer)
(lambda (buffer dummy) (remhash buffer font-lock-pending-buffer-table) (when
(buffer-live-p buffer) (clear-range-table font-lock-range-table) (with-current-buffer
buffer (save-excursion (save-restriction (widen) (map-extents (function (lambda (ex
dummy-maparg) (let* ((beg (extent-start-position ex)) (end (extent-end-position ex)) (beg
(progn (goto-char beg) (beginning-of-line) (point))) (end (progn (goto-char end)
(forward-line 1) (point)))) (put-range-table beg end t font-lock-range-table)))) nil nil
nil nil nil (quote font-lock-pending) t) (put-text-property (point-min) (point-max) (quote
font-lock-pending) nil) (map-range-table (function (lambda (beg end val)
(font-lock-fontify-region beg end))) font-lock-range-table))))))(#<buffer
"foo.pl"> t)
# (unwind-protect ...)
maphash((lambda (buffer dummy) (remhash buffer font-lock-pending-buffer-table) (when
(buffer-live-p buffer) (clear-range-table font-lock-range-table) (with-current-buffer
buffer (save-excursion (save-restriction (widen) (map-extents (function (lambda (ex
dummy-maparg) (let* ((beg (extent-start-position ex)) (end (extent-end-position ex)) (beg
(progn (goto-char beg) (beginning-of-line) (point))) (end (progn (goto-char end)
(forward-line 1) (point)))) (put-range-table beg end t font-lock-range-table)))) nil nil
nil nil nil (quote font-lock-pending) t) (put-text-property (point-min) (point-max) (quote
font-lock-pending) nil) (map-range-table (function (lambda (beg end val)
(font-lock-fontify-region beg end))) font-lock-range-table)))))) #<hash-table size 0/29
weakness key 0xcca45>)
(progn (maphash (function (lambda (buffer dummy) (remhash buffer
font-lock-pending-buffer-table) (when (buffer-live-p buffer) (clear-range-table
font-lock-range-table) (with-current-buffer buffer (save-excursion (save-restriction
(widen) (map-extents (function (lambda (ex dummy-maparg) (let* ((beg
(extent-start-position ex)) (end (extent-end-position ex)) (beg (progn (goto-char beg)
(beginning-of-line) (point))) (end (progn (goto-char end) (forward-line 1) (point))))
(put-range-table beg end t font-lock-range-table)))) nil nil nil nil nil (quote
font-lock-pending) t) (put-text-property (point-min) (point-max) (quote font-lock-pending)
nil) (map-range-table (function (lambda (beg end val) (font-lock-fontify-region beg end)))
font-lock-range-table))))))) font-lock-pending-buffer-table))
# (unwind-protect ...)
(unwind-protect (progn (maphash (function (lambda (buffer dummy) (remhash buffer
font-lock-pending-buffer-table) (when (buffer-live-p buffer) (clear-range-table
font-lock-range-table) (with-current-buffer buffer (save-excursion (save-restriction
(widen) (map-extents (function (lambda (ex dummy-maparg) (let* ((beg
(extent-start-position ex)) (end (extent-end-position ex)) (beg (progn (goto-char beg)
(beginning-of-line) (point))) (end (progn (goto-char end) (forward-line 1) (point))))
(put-range-table beg end t font-lock-range-table)))) nil nil nil nil nil (quote
font-lock-pending) t) (put-text-property (point-min) (point-max) (quote font-lock-pending)
nil) (map-range-table (function (lambda (beg end val) (font-lock-fontify-region beg end)))
font-lock-range-table))))))) font-lock-pending-buffer-table)) (store-match-data
match-data))
# bind (match-data)
(let ((match-data (match-data))) (unwind-protect (progn (maphash (function (lambda
(buffer dummy) (remhash buffer font-lock-pending-buffer-table) (when (buffer-live-p
buffer) (clear-range-table font-lock-range-table) (with-current-buffer buffer
(save-excursion (save-restriction (widen) (map-extents (function (lambda (ex dummy-maparg)
(let* ((beg (extent-start-position ex)) (end (extent-end-position ex)) (beg (progn
(goto-char beg) (beginning-of-line) (point))) (end (progn (goto-char end) (forward-line 1)
(point)))) (put-range-table beg end t font-lock-range-table)))) nil nil nil nil nil (quote
font-lock-pending) t) (put-text-property (point-min) (point-max) (quote font-lock-pending)
nil) (map-range-table (function (lambda (beg end val) (font-lock-fontify-region beg end)))
font-lock-range-table))))))) font-lock-pending-buffer-table)) (store-match-data
match-data)))
(save-match-data (maphash (function (lambda (buffer dummy) (remhash buffer
font-lock-pending-buffer-table) (when (buffer-live-p buffer) (clear-range-table
font-lock-range-table) (with-current-buffer buffer (save-excursion (save-restriction
(widen) (map-extents (function (lambda (ex dummy-maparg) (let* ((beg
(extent-start-position ex)) (end (extent-end-position ex)) (beg (progn (goto-char beg)
(beginning-of-line) (point))) (end (progn (goto-char end) (forward-line 1) (point))))
(put-range-table beg end t font-lock-range-table)))) nil nil nil nil nil (quote
font-lock-pending) t) (put-text-property (point-min) (point-max) (quote font-lock-pending)
nil) (map-range-table (function (lambda (beg end val) (font-lock-fontify-region beg end)))
font-lock-range-table))))))) font-lock-pending-buffer-table))
font-lock-fontify-pending-extents()
(if (> (hash-table-count font-lock-pending-buffer-table) 0)
(font-lock-fontify-pending-extents))
(progn (quote font-lock-pre-idle-hook) (if (> (hash-table-count
font-lock-pending-buffer-table) 0) (font-lock-fontify-pending-extents)))
(lambda nil (progn (quote font-lock-pre-idle-hook) (if (> (hash-table-count
font-lock-pending-buffer-table) 0) (font-lock-fontify-pending-extents))))()
# (unwind-protect ...)
call-with-condition-handler((lambda (__call_trapping_errors_arg__) (let ((errstr
(error-message-string __call_trapping_errors_arg__))) (lwarn (quote general) (quote
warning) "Error in %s: %s\n\nBacktrace follows:\n\n%s" "unknown"
errstr (backtrace-in-condition-handler-eliminating-handler (quote
__call_trapping_errors_arg__))))) (lambda nil (progn (quote font-lock-pre-idle-hook) (if
(> (hash-table-count font-lock-pending-buffer-table) 0)
(font-lock-fontify-pending-extents)))))
# (condition-case ... . ((error nil)))
(condition-case nil (call-with-condition-handler (function (lambda
(__call_trapping_errors_arg__) (let ((errstr (error-message-string
__call_trapping_errors_arg__))) (lwarn (quote general) (quote warning) "Error in %s:
%s\n\nBacktrace follows:\n\n%s" "unknown" errstr
(backtrace-in-condition-handler-eliminating-handler (quote
__call_trapping_errors_arg__)))))) (function (lambda nil (progn (quote
font-lock-pre-idle-hook) (if (> (hash-table-count font-lock-pending-buffer-table) 0)
(font-lock-fontify-pending-extents)))))) (error nil))
(with-trapping-errors (quote font-lock-pre-idle-hook) (if (> (hash-table-count
font-lock-pending-buffer-table) 0) (font-lock-fontify-pending-extents)))
font-lock-pre-idle-hook()
# (unwind-protect ...)
# (catch #<INTERNAL OBJECT (XEmacs bug?) (opaque, size=0) 0x8cf3020> ...)
# (unwind-protect ...)
# (unwind-protect ...)
# bind (inhibit-quit)
# (unwind-protect ...)
# (unwind-protect ...)
# bind (inhibit-quit)
(next-event "[internal]")
# (condition-case ... . error)
# (catch top-level ...)
(gdb)
--
---
http://www.coling.uni-freiburg.de/~schauer/ ---
"Fernab jeder hormonellen Verblendung faellt eine frappierende
Aehnlichkeit in Koerperbau, Haltung, Mimik, Feingefuehl und
technischem Sachverstand zwischen Frau und Tyrannosaurus Rex
unmittelbar ins Auge." -- J.E. Guenther in de.alt.sysadmin.recovery