Ben Wing <ben(a)xemacs.org> writes:
this is all somewhat scary; your backtraces are in different places,
indicating some sort of strange corruption. i can only assume that
something inside of the profiling code is causing the corruption; the
profiling code fires off asynchronously, so this could cause these
inconsistencies. but nothing in that code has changed recently,
afaik. did this only start recently or were you not doing profiling
before? did you change your compiler or os or something else about
Hi Ben, I haven't been using
M-x toggle-profiling
before, out of ignorance.
I was using the other
C-h a ^profile-
commands until now, until you brought up toggle-profiling.
Isn't anyone else seeing crashes in this code on other platforms?
I haven't read people say much about this toggle-profiling issue.
your build (e.g. different libraries) recently? if you have a
chance,
you might try compiling older 21.5 betas and seeing if you have the
same problem. if not, you might be able to narrow down the place that
Not near-term.
I have been playing with following config.inc options.
This crash is for:
MC_ALLOC=0
USE_KKCC=0
USE_UNION_TYPE=1
caused the breakage. if so, it could be a compiler bug or something
else in your environment -- hard to say.
Here's the most recent crash
Fatal error: assertion failed, file c:\Hacking\cvs.xemacs.org\XEmacs\xemacs-21.5
-clean\src\charset.h, line 431, ABORT()
Fatal error.
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).
If you are fortunate enough to have some sort of debugging aid installed
on your system, for example Visual C++, and you can get a C stack backtrace,
*please* include it, as it will make our life far easier.
Lisp backtrace follows:
# (unwind-protect ...)
# (unwind-protect ...)
# (unwind-protect ...)
# (unwind-protect ...)
# (unwind-protect ...)
# (unwind-protect ...)
# (unwind-protect ...)
# (unwind-protect ...)
# (unwind-protect ...)
# (unwind-protect ...)
format("%s" #<compiled-function #<EMACS BUG: illegal lrecord type 84
object 00
82FC48 Save your buffers immediately and please report this bug>
Adrian
ben
Adrian Aichner wrote:
>At some point I got "Bad using clause" in the loop macro called from
>profile-results.
>
>Progressively evaluating macros allowed me to edebug more and more of
>the problems in profile-results, but I got stuck at some point yesterday.
>
>Adrian
>
>----------------------------------------------------------------------------
>
>Crash on third toggle:
>
>Fatal error.
>
>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).
>
>If you are fortunate enough to have some sort of debugging aid installed
>on your system, for example Visual C++, and you can get a C stack backtrace,
>*please* include it, as it will make our life far easier.
>
>
>Lisp backtrace follows:
>
> # (unwind-protect ...)
> # (unwind-protect ...)
> # (unwind-protect ...)
> # (unwind-protect ...)
> # (unwind-protect ...)
> # (unwind-protect ...)
> # (unwind-protect ...)
> # (unwind-protect ...)
> format("%s"
>
>
> string = XSTRING_DATA (ls);
>
>doprnt.c
>
>emacs_doprnt_1(Lisp_Object {...}, const unsigned char * 0x0289dbd0, long 2,
Lisp_Object {...}, int 1, const Lisp_Object * 0x0082e20c, char * 0x0082e0d8) line 572 + 3
bytes
>emacs_doprnt(Lisp_Object {...}, const unsigned char * 0x00000000, long 0, Lisp_Object
{...}, int 1, const Lisp_Object * 0x0082e20c) line 866 + 33 bytes
>emacs_vsprintf_string_lisp(const char * 0x00000000, Lisp_Object {...}, int 1, const
Lisp_Object * 0x0082e20c) line 899 + 59 bytes
>Fformat(int 2, Lisp_Object * 0x0082e208) line 2219 + 27 bytes
>Ffuncall(int 3, Lisp_Object * 0x0082e204) line 3870 + 14 bytes
>execute_optimized_program(const unsigned char * 0x02e6eeb0, int 4, Lisp_Object *
0x02ec4d18) line 823 + 16 bytes
>funcall_compiled_function(Lisp_Object {...}, int 1, Lisp_Object * 0x0082e6dc) line
3460 + 35 bytes
>Ffuncall(int 2, Lisp_Object * 0x0082e6d8) line 3886 + 17 bytes
>mapcar1(long 127, Lisp_Object * 0x0082e6fc, Lisp_Object {...}, Lisp_Object {...}) line
3195 + 11 bytes
>Fmapcar(Lisp_Object {...}, Lisp_Object {...}) line 3303 + 21 bytes
>Ffuncall(int 3, Lisp_Object * 0x0082ea04) line 3847 + 120 bytes
>execute_optimized_program(const unsigned char * 0x02e91b28, int 15, Lisp_Object *
0x02ec4e20) line 823 + 16 bytes
>funcall_compiled_function(Lisp_Object {...}, int 3, Lisp_Object * 0x0082ee7c) line
3460 + 35 bytes
>Ffuncall(int 4, Lisp_Object * 0x0082ee78) line 3886 + 17 bytes
>execute_optimized_program(const unsigned char * 0x02e91b28, int 15, Lisp_Object *
0x02ec4e20) line 823 + 16 bytes
>funcall_compiled_function(Lisp_Object {...}, int 0, Lisp_Object * 0x0082f2f4) line
3460 + 35 bytes
>Ffuncall(int 1, Lisp_Object * 0x0082f2f0) line 3886 + 17 bytes
>execute_optimized_program(const unsigned char * 0x02e3e038, int 2, Lisp_Object *
0x02e91a10) line 823 + 16 bytes
>funcall_compiled_function(Lisp_Object {...}, int 0, Lisp_Object * 0x0082f760) line
3460 + 35 bytes
>Ffuncall(int 1, Lisp_Object * 0x0082f75c) line 3886 + 17 bytes
>apply1(Lisp_Object {...}, Lisp_Object {...}) line 4466 + 11 bytes
>Fcall_interactively(Lisp_Object {...}, Lisp_Object {...}, Lisp_Object {...}) line 459
+ 13 bytes
>Fcommand_execute(Lisp_Object {...}, Lisp_Object {...}, Lisp_Object {...}) line 3114 +
17 bytes
>execute_command_event(command_builder * 0x02398130, Lisp_Object {...}) line 4286 + 25
bytes
>Fdispatch_event(Lisp_Object {...}) line 4598 + 92 bytes
>Fcommand_loop_1() line 600 + 9 bytes
>command_loop_1(Lisp_Object {...}) line 505 + 5 bytes
>condition_case_1(Lisp_Object {...}, Lisp_Object (Lisp_Object)* 0x01074b1c
command_loop_1(Lisp_Object), Lisp_Object {...}, Lisp_Object (Lisp_Object, Lisp_Object)*
0x010747ac cmd_error(Lisp_Object, Lisp_Object), Lisp_Object {...}) line 1924 + 7 bytes
>command_loop_3() line 262 + 35 bytes
>command_loop_2(Lisp_Object {...}) line 277
>internal_catch(Lisp_Object {...}, Lisp_Object (Lisp_Object)* 0x0107493c
command_loop_2(Lisp_Object), Lisp_Object {...}, int * volatile 0x00000000, Lisp_Object *
volatile 0x00000000, Lisp_Object * volatile 0x00000000) line 1530 + 7 bytes
>initial_command_loop(Lisp_Object {...}) line 313 + 29 bytes
>xemacs_21_5_b23_i586_pc_win32(int 1, unsigned short * * 0x0082ff18, unsigned short * *
0x00000000, int 0) line 2627
>main(int 1, char * * 0x00f64220, char * * 0x00f62e40) line 3068
>mainCRTStartup() line 338 + 17 bytes
>KERNEL32! 7c816d4f()
>
>----------------------------------------------------------------------------
>
>New XEmacs, crash on second toggle:
>
>Fatal error: assertion failed, file
c:\Hacking\cvs.xemacs.org\XEmacs\xemacs-21.5-clean\src\symbols.c, line 1116, ABORT()
>
>Fatal error.
>
>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).
>
>If you are fortunate enough to have some sort of debugging aid installed
>on your system, for example Visual C++, and you can get a C stack backtrace,
>*please* include it, as it will make our life far easier.
>
>
>Lisp backtrace follows:
>
> # (unwind-protect ...)
> # (unwind-protect ...)
> # (unwind-protect ...)
> # (unwind-protect ...)
> # (unwind-protect ...)
> # (unwind-protect ...)
> # (unwind-protect ...)
> # bind (y x)
> #<compiled-function (x y) "...(15)" [x timing assoc 0]
3>(#<INTERNAL OBJECT (XEmacs bug?) (symbol-value-buffer-local type 39582780)
0x82fbe4> -11973120)
> # (unwind-protect ...)
> maphash(#<compiled-function (x y) "...(15)" [x timing assoc 0] 3>
#<hash-table test eq size 146/1777 data (if 0 event-type 0 itimer-time-difference 0
font-lock-pre-idle-hook 0 ...) 0x3a2d>)
> # bind (table G94903 maxfunlen spaces-for-fun spaces-for-data total-gc-usage
gc-usage call-count total-timing timing standard-output sort-by stream info)
> profile-results((timing #<hash-table test equal size 5/197 data (char-to-string 1
"(in redisplay)" 5 "next_event_internal()" 1 byte-code 1 ...)
0x3a29> total-timing #<hash-table test eq size 146/1777 data (if 0 event-type 0
itimer-time-difference 0 font-lock-pre-idle-hook 0 ...) 0x3a2d> call-count
#<hash-table test eq size 143/1777 data (if 1 event-type 6 itimer-time-difference 90
font-lock-pre-idle-hook 62 ...) 0x3a2c> gc-usage #<hash-table test eq size 45/1777
data (itimer-time-difference 5760 font-lock-pre-idle-hook 0 current-time 3024
paren-highlight 304 ...) 0x3a2b> total-gc-usage #<hash-table test eq size 145/1777
data (if -12 event-type 0 itimer-time-difference 5760 font-lock-pre-idle-hook 0 ...)
0x3a2a>) #<buffer "*Profiling Results*"> nil)
> # bind (standard-output temp-buffer-show-function help-not-visible buffer-name
was-one-window winconfig sort-by stream info)
> profile-results()
> (progn (stop-profiling) (message "...Finished profiling")
(profile-results))
> (if (profiling-active-p) (progn (stop-profiling) (message "...Finished
profiling") (profile-results)) (message "Profiling...")
(clear-profiling-info) (start-profiling))
> (lambda nil "Start profiling, or stop it and print results.\nThis lets you
figure out where time is being spent when executing Lisp code." (interactive) (if
(profiling-active-p) (progn (stop-profiling) (message "...Finished profiling")
(profile-results)) (message "Profiling...") (clear-profiling-info)
(start-profiling)))()
> call-interactively(toggle-profiling)
> (dispatch-event "[internal]")
> # (condition-case ... . error)
> # (catch top-level ...)
>
>assert_failed(const char * 0x0125b924, int 1116, const char * 0x0125b91c) line 3916
>do_symval_forwarding(Lisp_Object {...}, buffer * 0x00f6dc70, console * 0x02398088)
line 1116 + 20 bytes
>find_symbol_value_1(Lisp_Object {...}, buffer * 0x00f6dc70, console * 0x02398088, int
1, Lisp_Object {...}, int 1) line 1584 + 17 bytes
>find_symbol_value(Lisp_Object {...}) line 1660 + 30 bytes
>Fsymbol_value(Lisp_Object {...}) line 1708 + 9 bytes
>execute_optimized_program(const unsigned char * 0x02dcdf68, int 3, Lisp_Object *
0x02d5edd8) line 734 + 9 bytes
>funcall_compiled_function(Lisp_Object {...}, int 2, Lisp_Object * 0x0082e66c) line
3460 + 35 bytes
>Ffuncall(int 3, Lisp_Object * 0x0082e668) line 3886 + 17 bytes
>Fmaphash(Lisp_Object {...}, Lisp_Object {...}) line 1382 + 11 bytes
>Ffuncall(int 3, Lisp_Object * 0x0082e758) line 3847 + 120 bytes
>execute_optimized_program(const unsigned char * 0x02d8bf50, int 15, Lisp_Object *
0x02d5ef38) line 823 + 16 bytes
>funcall_compiled_function(Lisp_Object {...}, int 3, Lisp_Object * 0x0082ebdc) line
3460 + 35 bytes
>Ffuncall(int 4, Lisp_Object * 0x0082ebd8) line 3886 + 17 bytes
>execute_optimized_program(const unsigned char * 0x02d8bf50, int 15, Lisp_Object *
0x02d5ef38) line 823 + 16 bytes
>funcall_compiled_function(Lisp_Object {...}, int 0, Lisp_Object * 0x0082ef7c) line
3460 + 35 bytes
>Feval(Lisp_Object {...}) line 3668 + 20 bytes
>Fprogn(Lisp_Object {...}) line 954 + 9 bytes
>Feval(Lisp_Object {...}) line 3579 + 13 bytes
>Fif(Lisp_Object {...}) line 870 + 9 bytes
>Feval(Lisp_Object {...}) line 3579 + 13 bytes
>Fprogn(Lisp_Object {...}) line 954 + 9 bytes
>funcall_lambda(Lisp_Object {...}, int 0, Lisp_Object * 0x0082f760) line 4203 + 9
bytes
>Ffuncall(int 1, Lisp_Object * 0x0082f75c) line 3896 + 17 bytes
>apply1(Lisp_Object {...}, Lisp_Object {...}) line 4466 + 11 bytes
>Fcall_interactively(Lisp_Object {...}, Lisp_Object {...}, Lisp_Object {...}) line 459
+ 13 bytes
>Fcommand_execute(Lisp_Object {...}, Lisp_Object {...}, Lisp_Object {...}) line 3114 +
17 bytes
>execute_command_event(command_builder * 0x02398130, Lisp_Object {...}) line 4286 + 25
bytes
>Fdispatch_event(Lisp_Object {...}) line 4598 + 92 bytes
>Fcommand_loop_1() line 600 + 9 bytes
>command_loop_1(Lisp_Object {...}) line 505 + 5 bytes
>condition_case_1(Lisp_Object {...}, Lisp_Object (Lisp_Object)* 0x01074b1c
command_loop_1(Lisp_Object), Lisp_Object {...}, Lisp_Object (Lisp_Object, Lisp_Object)*
0x010747ac cmd_error(Lisp_Object, Lisp_Object), Lisp_Object {...}) line 1924 + 7 bytes
>command_loop_3() line 262 + 35 bytes
>command_loop_2(Lisp_Object {...}) line 277
>internal_catch(Lisp_Object {...}, Lisp_Object (Lisp_Object)* 0x0107493c
command_loop_2(Lisp_Object), Lisp_Object {...}, int * volatile 0x00000000, Lisp_Object *
volatile 0x00000000, Lisp_Object * volatile 0x00000000) line 1530 + 7 bytes
>initial_command_loop(Lisp_Object {...}) line 313 + 29 bytes
>xemacs_21_5_b23_i586_pc_win32(int 1, unsigned short * * 0x0082ff18, unsigned short * *
0x00000000, int 0) line 2627
>main(int 1, char * * 0x00f64220, char * * 0x00f62e40) line 3068
>mainCRTStartup() line 338 + 17 bytes
>KERNEL32! 7c816d4f()
>
>----------------------------------------------------------------------------
>
>Another XEmacs with profile.el instrumented
>
>
>Fatal error: assertion failed, file
c:\Hacking\cvs.xemacs.org\XEmacs\xemacs-21.5-clean\src\symbols.c, line 1116, ABORT()
>
>Fatal error.
>
>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).
>
>If you are fortunate enough to have some sort of debugging aid installed
>on your system, for example Visual C++, and you can get a C stack backtrace,
>*please* include it, as it will make our life far easier.
>
>
>Lisp backtrace follows:
>
> # (unwind-protect ...)
> # (unwind-protect ...)
> # (unwind-protect ...)
> # (unwind-protect ...)
> # (unwind-protect ...)
> # (unwind-protect ...)
> # (unwind-protect ...)
> (assoc x timing)
> (not (assoc x timing))
> (if (not (assoc x timing)) (push (cons x 0) timing))
> # bind (y x)
> (lambda (x y) (if (not (assoc x timing)) (push (cons x 0) timing)))(#<INTERNAL
OBJECT (XEmacs bug?) (symbol-value-buffer-local type 50234780) 0x82fbe4> -11971713)
> # (unwind-protect ...)
> maphash((lambda (x y) (if (not (assoc x timing)) (push (cons x 0) timing)))
#<hash-table test eq size 397/1777 data (if 0 buffer-substring 0 local-variable-p
>0 event-type 0 ...) 0x4b62>)
> # (catch --cl-block---cl-finish---- ...)
> (catch (quote --cl-block---cl-finish----) (maphash (function (lambda (x y) (if (not
(assoc x timing)) (push (cons x 0) timing)))) table))
> (cl-block-wrapper (catch (quote --cl-block---cl-finish----) (maphash (function
(lambda (x y) (if (not (assoc x timing)) (push (cons x 0) timing)))) table)))
> (block --cl-finish-- (maphash (function (lambda (x y) (if (not (assoc x timing))
(push (cons x 0) timing)))) table))
> # (catch --cl-block-nil-- ...)
> (catch (quote --cl-block-nil--) (block --cl-finish-- (maphash (function (lambda (x
y) (if (not (assoc x timing)) (push (cons x 0) timing)))) table)) nil)
> (cl-block-wrapper (catch (quote --cl-block-nil--) (block --cl-finish-- (maphash
(function (lambda (x y) (if (not (assoc x timing)) (push (cons x 0) timing)))) table))
nil))
> (block nil (block --cl-finish-- (maphash (function (lambda (x y) (if (not (assoc x
timing)) (push (cons x 0) timing)))) table)) nil)
> (loop for x being the hash-key in table using (hash-value y) do (if (not (assoc x
timing)) (push (cons x 0) timing)))
> (while (consp G26413) (setq table (car G26413)) (loop for x being the hash-key in
table using (hash-value y) do (if (not (assoc x timing)) (push (cons x 0) timing))) (setq
G26413 (cdr G26413)))
> # bind (table G26413)
> (let* ((G26413 (list total-timing call-count gc-usage total-gc-usage)) (table
>nil)) (while (consp G26413) (setq table (car G26413)) (loop for x being the hash-key
in table using (hash-value y) do (if (not (assoc x timing)) (push (cons x 0) timing)))
(setq G26413 (cdr G26413))) nil)
> # (catch --cl-block-nil-- ...)
> (catch (quote --cl-block-nil--) (let* ((G26413 (list total-timing call-count
gc-usage total-gc-usage)) (table nil)) (while (consp G26413) (setq table (car G26413))
(loop for x being the hash-key in table using (hash-value y) do (if (not (assoc x timing))
(push (cons x 0) timing))) (setq G26413 (cdr G26413))) nil))
> (cl-block-wrapper (catch (quote --cl-block-nil--) (let* ((G26413 (list total-timing
call-count gc-usage total-gc-usage)) (table nil)) (while (consp G26413) (setq table (car
G26413)) (loop for x being the hash-key in table using (hash-value y) do (if (not (assoc x
timing)) (push (cons x 0) timing))) (setq G26413 (cdr
>G26413))) nil)))
> (block nil (let* ((G26413 (list total-timing call-count gc-usage total-gc-usage))
(table nil)) (while (consp G26413) (setq table (car G26413)) (loop for x being the
hash-key in table using (hash-value y) do (if (not (assoc x timing)) (push (cons x 0)
timing))) (setq G26413 (cdr G26413))) nil))
> (loop for table in (list total-timing call-count gc-usage total-gc-usage) do (loop
for x being the hash-key in table using (hash-value y) do (if (not (assoc x timing)) (push
(cons x 0) timing))))
> # bind (maxfunlen spaces-for-fun spaces-for-data total-gc-usage gc-usage call-count
total-timing timing standard-output)
> (let* ((standard-output stream) (timing (if (consp (car info)) (copy-alist info)
(loop for x being the hash-key in (getf info (quote timing)) using (hash-value y) collect
(cons x y)))) (total-timing (if (boundp (quote call-count-profile-table))
(make-hash-table) (getf info (quote total-timing)))) (call-count (if (boundp (quote
call-count-profile-table)) call-count-profile-table (getf info (quote call-count))))
(gc-usage (if (boundp (quote call-count-profile-table)) (make-hash-table) (getf info
(quote gc-usage)))) (total-gc-usage (if (boundp (quote call-count-profile-table))
(make-hash-table) (getf info (quote total-gc-usage)))) (spaces-for-data 41)
(spaces-for-fun (- 79 spaces-for-data)) maxfunlen) (loop for
>table in (list total-timing call-count gc-usage total-gc-usage) do (loop for x being
the hash-key in table using (hash-value y) do (if (not (assoc x timing)) (push (cons x 0)
timing)))) (setq maxfunlen (apply (function max) (length "Function Name")
(mapcar (lambda (el) (let ((l (length (format "%s" (car el))))) (if (<= l
spaces-for-fun) l 0))) timing))) (princ (format "%-*sTicks/Total %%Usage Calls
GC-Usage/ Total\n" maxfunlen "Function Name")) (princ (make-string
maxfunlen
>?=)) (princ "=====/===== ====== ===== ========/=======\n") (let ((timing-sum
(float (apply (function +) (mapcar (function cdr) timing)))) (calls-sum 0) (gc-sum
>0)) (dolist (entry (nreverse (sort timing (cond ((eq sort-by (quote call-count))
(function (lambda (a b) (< (or (gethash (car a) call-count) 0) (or (gethash (car b)
call-count) 0))))) ((eq sort-by (quote gc-usage)) (function (lambda (a b) (< (or
(gethash (car a) gc-usage) 0) (or (gethash (car b) gc-usage) 0))))) (t (function
cdr-less-than-cdr)))))) (princ (format "%-*s%5d/%5d %6.3f %s %s\n" maxfunlen
(let ((str (format "%s" (car entry)))) (if (<= (length str) maxfunlen) str
(concat str "\n" (make-string maxfunlen ?\ )))) (cdr entry) (or (gethash (car
entry) total-timing) 0) (if (zerop timing-sum) 0 (* 100 (/ (cdr entry) timing-sum))) (let
((count (gethash (car entry) call-count))) (if count (format "%5d" count) "
")) (let ((gcval (or (gethash (car entry) gc-usage) 0)) (total-gcval (or
>(gethash (car entry) total-gc-usage) 0))) (if (or (/= gcval 0) (/= total-gcval 0))
(format "%8d/%7d" gcval total-gcval) " ")))) (incf
calls-sum (or (gethash (car entry) call-count 0))) (incf gc-sum (or (gethash (car entry)
gc-usage 0)))) (princ (make-string (+ maxfunlen spaces-for-data) ?-)) (princ (format
"\n%-*s%7d %7.3f %5d %8d\n" (- maxfunlen 2) "Total" timing-sum
100.0 calls-sum gc-sum)) (princ (format "\n\nTicks/Total = Ticks this
function/this function and descendants\nCalls = Number of calls to this
function\nGC-Usage/Total = Lisp allocation this function/this function and
descendants\nOne
>tick = %g ms\n" (/ default-profiling-interval 1000.0))) (and (boundp
(quote internal-error-checking)) (delq (quote quick-build) internal-error-checking)
>(princ "\nWARNING: Error checking is turned on in this XEmacs. This might make\n
the measurements very unreliable.\n"))))
> (if (not stream) (profile-displaying-temp-buffer "*Profiling Results*"
(profile-results info standard-output sort-by)) (let* ((standard-output stream) (timing
(if (consp (car info)) (copy-alist info) (loop for x being the hash-key in (getf info
(quote timing)) using (hash-value y) collect (cons x y)))) (total-timing
>(if (boundp (quote call-count-profile-table)) (make-hash-table) (getf info (quote
total-timing)))) (call-count (if (boundp (quote call-count-profile-table))
call-count-profile-table (getf info (quote call-count)))) (gc-usage (if (boundp (quote
call-count-profile-table)) (make-hash-table) (getf info (quote gc-usage))))
>(total-gc-usage (if (boundp (quote call-count-profile-table)) (make-hash-table)
>(getf info (quote total-gc-usage)))) (spaces-for-data 41) (spaces-for-fun (- 79
>spaces-for-data)) maxfunlen) (loop for table in (list total-timing call-count gc-usage
total-gc-usage) do (loop for x being the hash-key in table using (hash-value y) do (if
(not (assoc x timing)) (push (cons x 0) timing)))) (setq maxfunlen (apply (function max)
(length "Function Name") (mapcar (lambda (el) (let ((l (length (format
"%s" (car el))))) (if (<= l spaces-for-fun) l 0))) timing))) (princ (format
"%-*sTicks/Total %%Usage Calls GC-Usage/ Total\n" maxfunlen "Function
Name")) (princ (make-string maxfunlen ?=)) (princ "=====/===== ====== =====
========/=======\n") (let ((timing-sum (float (apply (function +) (mapcar (function
cdr) timing)))) (calls-sum 0) (gc-sum 0)) (dolist (entry (nreverse (sort timing (cond ((eq
sort-by (quote call-count)) (function (lambda (a b) (< (or (gethash
>(car a) call-count) 0) (or (gethash (car b) call-count) 0))))) ((eq sort-by (quote
gc-usage)) (function (lambda (a b) (< (or (gethash (car a) gc-usage) 0) (or (gethash
(car b) gc-usage) 0))))) (t (function cdr-less-than-cdr)))))) (princ (format
"%-*s%5d/%5d %6.3f %s %s\n" maxfunlen (let ((str (format "%s" (car
entry)))) (if (<= (length str) maxfunlen) str (concat str "\n" (make-string
maxfunlen ?\ )))) (cdr entry) (or (gethash (car entry) total-timing) 0) (if (zerop
timing-sum) 0 (* 100 (/ (cdr entry) timing-sum))) (let ((count (gethash (car entry)
call-count))) (if count (format "%5d" count) " ")) (let ((gcval
(or (gethash (car entry) gc-usage) 0)) (total-gcval (or (gethash (car entry)
total-gc-usage) 0))) (if (or (/= gcval 0) (/= total-gcval 0)) (format "%8d/%7d"
gcval total-gcval) " ")))) (incf calls-sum (or (gethash (car
entry) call-count 0))) (incf gc-sum (or (gethash (car entry) gc-usage 0)))) (princ
(make-string (+ maxfunlen spaces-for-data) ?-)) !
(p!
> rinc (format "\n%-*s%7d %7.3f %5d %8d\n" (-
maxfunlen 2) "Total" timing-sum 100.0 calls-sum gc-sum)) (princ (format
"\n\nTicks/Total = Ticks this function/this function and descendants\nCalls
>= Number of calls to this function\nGC-Usage/Total = Lisp allocation this
function/this function and descendants\nOne tick = %g ms\n" (/
default-profiling-interval 1000.0))) (and (boundp (quote internal-error-checking)) (delq
(quote quick-build) internal-error-checking) (princ "\nWARNING: Error checking is
turned on in this XEmacs. This might make\n the measurements very
unreliable.\n")))))
> # bind (sort-by stream info)
> profile-results((timing #<hash-table test equal size 29/197 data (dispatch-event
3 split-window 4 next-event 2 #<compiled-function (key value) "...(35)"
[value newval new key get-range-char-table multi map-char-table #<compiled-function
(key1 value1) "...(19)" [value key1 key new char-syntax-from-code
get-range-char-table ?@ put-char-table nil] 5> char-syntax-from-code ?@ put-char-table
nil] 5>
>2 ...) 0x4b5e> total-timing #<hash-table test eq size 397/1777 data (if 0
buffer-substring 0 local-variable-p 0 event-type 0 ...) 0x4b62> call-count
#<hash-table test eq size 397/1777 data (if 1 buffer-substring 4 local-variable-p 6
event-type 29 ...) 0x4b61> gc-usage #<hash-table test eq size 128/1777 data
(buffer-substring 120 pos-visible-in-window-p 1208 itimer-time-difference 6528
font-lock-pre-idle-hook 0 ...) 0x4b60> total-gc-usage #<hash-table test eq size
396/1777 data (if 1312 buffer-substring 120 local-variable-p 0 event-type 0 ...)
0x4b5f>) #<buffer "*Profiling Results*"> nil)
> (progn (profile-results info standard-output sort-by))
> (prog1 (progn (profile-results info standard-output sort-by)) (save-excursion
>(set-buffer standard-output) (funcall mode-for-help)))
> # bind (standard-output)
> (with-output-to-temp-buffer buffer-name (prog1 (progn (profile-results info
standard-output sort-by)) (save-excursion (set-buffer standard-output) (funcall
mode-for-help))))
> # bind (temp-buffer-show-function)
> (let ((temp-buffer-show-function (if help-sticky-window (function (lambda (buffer)
(set-window-buffer help-sticky-window buffer))) temp-buffer-show-function)))
(with-output-to-temp-buffer buffer-name (prog1 (progn (profile-results info
standard-output sort-by)) (save-excursion (set-buffer standard-output) (funcall
mode-for-help)))))
> (prog1 (let ((temp-buffer-show-function (if help-sticky-window (function (lambda
(buffer) (set-window-buffer help-sticky-window buffer))) temp-buffer-show-function)))
(with-output-to-temp-buffer buffer-name (prog1 (progn (profile-results
>info standard-output sort-by)) (save-excursion (set-buffer standard-output) (funcall
mode-for-help))))) (let ((helpwin (get-buffer-window buffer-name))) (when helpwin (when
help-not-visible (with-current-buffer (window-buffer helpwin) (setq help-window-config
winconfig))) (when help-selects-help-window (select-window helpwin)) (cond ((eq helpwin
(selected-window)) (display-message (quote command)
>(substitute-command-keys "Type \\[help-mode-quit] to remove window, \\[scroll-up]
to scroll the text."))) (was-one-window (display-message (quote command)
(substitute-command-keys "Type \\[delete-other-windows] to remove window,
\\[scroll-other-window] to scroll the text."))) (t (display-message (quote command)
(substitute-command-keys "Type \\[switch-to-buffer-other-window] to restore the other
window, \\[scroll-other-window] to scroll the text.")))))))
> # bind (help-not-visible buffer-name was-one-window winconfig)
> (let* ((winconfig (current-window-configuration)) (was-one-window (one-window-p))
(buffer-name "*Profiling Results*") (help-not-visible (not (and
(windows-of-buffer buffer-name) (memq (selected-frame) (mapcar (quote window-frame)
(windows-of-buffer buffer-name))))))) (help-register-and-maybe-prune-excess buffer-name)
(if (and help-sticky-window (or (not (windowp help-sticky-window)) (not (window-live-p
help-sticky-window)))) (setq help-sticky-window nil)) (prog1 (let
((temp-buffer-show-function (if help-sticky-window (function (lambda (buffer)
(set-window-buffer help-sticky-window buffer))) temp-buffer-show-function)))
(with-output-to-temp-buffer buffer-name (prog1 (progn (profile-results info
standard-output sort-by)) (save-excursion (set-buffer standard-output) (funcall
mode-for-help))))) (let ((helpwin (get-buffer-window buffer-name))) (when helpwin (when
help-not-visible (with-current-buffer (window-buffer helpwin) (setq help-window-config
>winconfig))) (when help-selects-help-window (select-window helpwin)) (cond ((eq
>helpwin (selected-window)) (display-message (quote command) (substitute-command-keys
"Type \\[help-mode-quit] to remove window, \\[scroll-up] to scroll the text.")))
(was-one-window (display-message (quote command) (substitute-command-keys
>"Type \\[delete-other-windows] to remove window, \\[scroll-other-window] to
scroll the text."))) (t (display-message (quote command) (substitute-command-keys
"Type \\[switch-to-buffer-other-window] to restore the other window,
\\[scroll-other-window] to scroll the text."))))))))
> (profile-displaying-temp-buffer "*Profiling Results*" (profile-results
info standard-output sort-by))
> (if (not stream) (profile-displaying-temp-buffer "*Profiling Results*"
(profile-results info standard-output sort-by)) (let* ((standard-output stream) (timing
(if (consp (car info)) (copy-alist info) (loop for x being the hash-key in (getf info
(quote timing)) using (hash-value y) collect (cons x y)))) (total-timing
>(if (boundp (quote call-count-profile-table)) (make-hash-table) (getf info (quote
total-timing)))) (call-count (if (boundp (quote call-count-profile-table))
call-count-profile-table (getf info (quote call-count)))) (gc-usage (if (boundp (quote
call-count-profile-table)) (make-hash-table) (getf info (quote gc-usage))))
>(total-gc-usage (if (boundp (quote call-count-profile-table)) (make-hash-table)
>(getf info (quote total-gc-usage)))) (spaces-for-data 41) (spaces-for-fun (- 79
>spaces-for-data)) maxfunlen) (loop for table in (list total-timing call-count gc-usage
total-gc-usage) do (loop for x being the hash-key in table using (hash-value y) do (if
(not (assoc x timing)) (push (cons x 0) timing)))) (setq maxfunlen (apply (function max)
(length "Function Name") (mapcar (lambda (el) (let ((l (length (format
"%s" (car el))))) (if (<= l spaces-for-fun) l 0))) timing))) (princ (format
"%-*sTicks/Total %%Usage Calls GC-Usage/ Total\n" maxfunlen "Function
Name")) (princ (make-string maxfunlen ?=)) (princ "=====/===== ====== =====
========/=======\n") (let ((timing-sum (float (apply (function +) (mapcar (function
cdr) timing)))) (calls-sum 0) (gc-sum 0)) (dolist (entry (nreverse (sort timing (cond ((eq
sort-by (quote call-count)) (function (lambda (a b) (< (or (gethash
>(car a) call-count) 0) (or (gethash (car b) call-count) 0))))) ((eq sort-by (quote
gc-usage)) (function (lambda (a b) (< (or (gethash (car a) gc-usage) 0) (or (gethash
(car b) gc-usage) 0))))) (t (function cdr-less-than-cdr)))))) (princ (format
"%-*s%5d/%5d %6.3f %s %s\n" maxfunlen (let ((str (format "%s" (car
entry)))) (if (<= (length str) maxfunlen) str (concat str "\n" (make-string
maxfunlen ?\ )))) (cdr entry) (or (gethash (car entry) total-timing) 0) (if (zerop
timing-sum) 0 (* 100 (/ (cdr entry) timing-sum))) (let ((count (gethash (car entry)
call-count))) (if count (format "%5d" count) " ")) (let ((gcval
(or (gethash (car entry) gc-usage) 0)) (total-gcval (or (gethash (car entry)
total-gc-usage) 0))) (if (or (/= gcval 0) (/= total-gcval 0)) (format "%8d/%7d"
gcval total-gcval) " ")))) (incf calls-sum (or (gethash (car
entry) call-count 0))) (incf gc-sum (or (gethash (car entry) gc-usage 0)))) (princ
(make-string (+ maxfunlen spaces-for-data) ?-)) !
(p!
> rinc (format "\n%-*s%7d %7.3f %5d %8d\n" (-
maxfunlen 2) "Total" timing-sum 100.0 calls-sum gc-sum)) (princ (format
"\n\nTicks/Total = Ticks this function/this function and descendants\nCalls
>= Number of calls to this function\nGC-Usage/Total = Lisp allocation this
function/this function and descendants\nOne tick = %g ms\n" (/
default-profiling-interval 1000.0))) (and (boundp (quote internal-error-checking)) (delq
(quote quick-build) internal-error-checking) (princ "\nWARNING: Error checking is
turned on in this XEmacs. This might make\n the measurements very
unreliable.\n")))))
> # bind (sort-by stream info)
> (lambda (&optional info stream sort-by) "Print profiling info INFO to
STREAM in a pretty format.\nIf INFO is omitted, the current profiling info is retrieved
>using\n `get-profiling-info'.\nIf STREAM is omitted, the results will be displayed
in a temp buffer\n using `with-output-to-temp-buffer'; otherwise, they will simply
be\n printed into STREAM. Use `standard-output' explicitly if you\n want
>standard output.\nIf SORT-BY is `call-count' (interactively, the prefix arg),
display items\n sorted by call count rather than timing. If `gc-usage'
(interactively,\n use C-u C-u), sort by GC usage." (interactive (list nil nil (cond
((equal current-prefix-arg (quote (16))) (quote gc-usage)) (current-prefix-arg (quote
>call-count))))) (or info (setq info (get-profiling-info))) (if (not stream)
(profile-displaying-temp-buffer "*Profiling Results*" (profile-results info
standard-output sort-by)) (let* ((standard-output stream) (timing (if (consp (car info))
(copy-alist info) (loop for x being the hash-key in (getf info (quote timing))
>using (hash-value y) collect (cons x y)))) (total-timing (if (boundp (quote
call-count-profile-table)) (make-hash-table) (getf info (quote total-timing))))
(call-count (if (boundp (quote call-count-profile-table)) call-count-profile-table (getf
info (quote call-count)))) (gc-usage (if (boundp (quote call-count-profile-table))
(make-hash-table) (getf info (quote gc-usage)))) (total-gc-usage (if (boundp (quote
call-count-profile-table)) (make-hash-table) (getf info (quote total-gc-usage))))
(spaces-for-data 41) (spaces-for-fun (- 79 spaces-for-data)) maxfunlen) (loop for table in
(list total-timing call-count gc-usage total-gc-usage)
>do (loop for x being the hash-key in table using (hash-value y) do (if (not (assoc x
timing)) (push (cons x 0) timing)))) (setq maxfunlen (apply (function max)
>(length "Function Name") (mapcar (lambda (el) (let ((l (length (format
"%s" (car el))))) (if (<= l spaces-for-fun) l 0))) timing))) (princ (format
"%-*sTicks/Total %%Usage Calls GC-Usage/ Total\n" maxfunlen "Function
Name")) (princ (make-string maxfunlen ?=)) (princ "=====/===== ====== =====
========/=======\n") (let
>((timing-sum (float (apply (function +) (mapcar (function cdr) timing)))) (calls-sum
0) (gc-sum 0)) (dolist (entry (nreverse (sort timing (cond ((eq sort-by (quote
call-count)) (function (lambda (a b) (< (or (gethash (car a) call-count) 0)
>(or (gethash (car b) call-count) 0))))) ((eq sort-by (quote gc-usage)) (function
(lambda (a b) (< (or (gethash (car a) gc-usage) 0) (or (gethash (car b) gc-usage)
0))))) (t (function cdr-less-than-cdr)))))) (princ (format "%-*s%5d/%5d %6.3f %s
%s\n" maxfunlen (let ((str (format "%s" (car entry)))) (if (<= (length
str)
>maxfunlen) str (concat str "\n" (make-string maxfunlen ?\ )))) (cdr entry)
(or (gethash (car entry) total-timing) 0) (if (zerop timing-sum) 0 (* 100 (/ (cdr entry)
timing-sum))) (let ((count (gethash (car entry) call-count))) (if count (format
"%5d" count) " ")) (let ((gcval (or (gethash (car entry) gc-usage)
0)) (total-gcval (or (gethash (car entry) total-gc-usage) 0))) (if (or (/= gcval 0) (/=
total-gcval 0)) (format "%8d/%7d" gcval total-gcval) "
")))) (incf calls-sum (or (gethash (car entry) call-count 0))) (incf gc-sum (or
(gethash (car entry) gc-usage 0)))) (princ (make-string (+ maxfunlen spaces-for-data) ?-))
(princ (format "\n%-*s%7d %7.3f %5d %8d\n" (- maxfunlen 2)
"Total" timing-sum 100.0 calls-sum gc-sum)) (princ (format "\n\nTicks/Total
= Ticks this function/this function and descendants\nCalls = Number of calls
to this function\nGC-Usage/Total = Lisp allocation this function/this function and
descendants\nOne tick !
=!
> %g ms\n" (/ default-profiling-interval 1000.0))) (and
(boundp (quote internal-error-checking)) (delq (quote quick-build)
internal-error-checking) (princ "\nWARNING: Error checking is turned on in this
XEmacs.
>This might make\n the measurements very unreliable.\n"))))))(nil nil
nil)
> call-interactively(profile-results)
> command-execute(profile-results t)
> # bind (_execute_command_keys_ _execute_command_name_ prefix-arg)
> execute-extended-command(nil)
> # bind (command-debug-status)
> call-interactively(execute-extended-command)
> (dispatch-event "[internal]")
> # (condition-case ... . error)
> # (catch top-level ...)
>
>assert_failed(const char * 0x0125b924, int 1116, const char * 0x0125b91c) line 3916
>do_symval_forwarding(Lisp_Object {...}, buffer * 0x0302e960, console * 0x02398088)
line 1116 + 20 bytes
>find_symbol_value_1(Lisp_Object {...}, buffer * 0x0302e960, console * 0x02398088, int
1, Lisp_Object {...}, int 1) line 1584 + 17 bytes
>find_symbol_value(Lisp_Object {...}) line 1660 + 30 bytes
>Fsymbol_value(Lisp_Object {...}) line 1708 + 9 bytes
>Feval(Lisp_Object {...}) line 3520 + 9 bytes
>Feval(Lisp_Object {...}) line 3594 + 12 bytes
>Feval(Lisp_Object {...}) line 3594 + 12 bytes
>Fif(Lisp_Object {...}) line 869 + 9 bytes
>Feval(Lisp_Object {...}) line 3579 + 13 bytes
>Fprogn(Lisp_Object {...}) line 954 + 9 bytes
>funcall_lambda(Lisp_Object {...}, int 2, Lisp_Object * 0x0082b364) line 4203 + 9
bytes
>Ffuncall(int 3, Lisp_Object * 0x0082b360) line 3896 + 17 bytes
>Fmaphash(Lisp_Object {...}, Lisp_Object {...}) line 1382 + 11 bytes
>Feval(Lisp_Object {...}) line 3607 + 165 bytes
>Fprogn(Lisp_Object {...}) line 954 + 9 bytes
>internal_catch(Lisp_Object {...}, Lisp_Object (Lisp_Object)* 0x010944f9
Fprogn(Lisp_Object), Lisp_Object {...}, int * volatile 0x00000000, Lisp_Object * volatile
0x00000000, Lisp_Object * volatile 0x00000000) line 1530 + 7 bytes
>Fcatch(Lisp_Object {...}) line 1484 + 24 bytes
>Feval(Lisp_Object {...}) line 3579 + 13 bytes
>Feval(Lisp_Object {...}) line 3594 + 12 bytes
>Feval(Lisp_Object {...}) line 3692 + 37 bytes
>Fprogn(Lisp_Object {...}) line 954 + 9 bytes
>internal_catch(Lisp_Object {...}, Lisp_Object (Lisp_Object)* 0x010944f9
Fprogn(Lisp_Object), Lisp_Object {...}, int * volatile 0x00000000, Lisp_Object * volatile
0x00000000, Lisp_Object * volatile 0x00000000) line 1530 + 7 bytes
>Fcatch(Lisp_Object {...}) line 1484 + 24 bytes
>Feval(Lisp_Object {...}) line 3579 + 13 bytes
>Feval(Lisp_Object {...}) line 3594 + 12 bytes
>Feval(Lisp_Object {...}) line 3692 + 37 bytes
>Feval(Lisp_Object {...}) line 3692 + 37 bytes
>Fprogn(Lisp_Object {...}) line 954 + 9 bytes
>Fwhile(Lisp_Object {...}) line 1140 + 9 bytes
>Feval(Lisp_Object {...}) line 3579 + 13 bytes
>Fprogn(Lisp_Object {...}) line 954 + 9 bytes
>FletX(Lisp_Object {...}) line 1054 + 9 bytes
>Feval(Lisp_Object {...}) line 3579 + 13 bytes
>Fprogn(Lisp_Object {...}) line 954 + 9 bytes
>internal_catch(Lisp_Object {...}, Lisp_Object (Lisp_Object)* 0x010944f9
Fprogn(Lisp_Object), Lisp_Object {...}, int * volatile 0x00000000, Lisp_Object * volatile
0x00000000, Lisp_Object * volatile 0x00000000) line 1530 + 7 bytes
>Fcatch(Lisp_Object {...}) line 1484 + 24 bytes
>Feval(Lisp_Object {...}) line 3579 + 13 bytes
>Feval(Lisp_Object {...}) line 3594 + 12 bytes
>Feval(Lisp_Object {...}) line 3692 + 37 bytes
>Feval(Lisp_Object {...}) line 3692 + 37 bytes
>Fprogn(Lisp_Object {...}) line 954 + 9 bytes
>FletX(Lisp_Object {...}) line 1054 + 9 bytes
>Feval(Lisp_Object {...}) line 3579 + 13 bytes
>Fprogn(Lisp_Object {...}) line 954 + 9 bytes
>Fif(Lisp_Object {...}) line 872 + 9 bytes
>Feval(Lisp_Object {...}) line 3579 + 13 bytes
>Fprogn(Lisp_Object {...}) line 954 + 9 bytes
>funcall_lambda(Lisp_Object {...}, int 3, Lisp_Object * 0x0082d840) line 4203 + 9
bytes
>Feval(Lisp_Object {...}) line 3719 + 20 bytes
>Fprogn(Lisp_Object {...}) line 954 + 9 bytes
>Feval(Lisp_Object {...}) line 3579 + 13 bytes
>Fprog1(Lisp_Object {...}) line 976 + 12 bytes
>Feval(Lisp_Object {...}) line 3579 + 13 bytes
>Fprogn(Lisp_Object {...}) line 954 + 9 bytes
>Fwith_output_to_temp_buffer(Lisp_Object {...}) line 831 + 12 bytes
>Feval(Lisp_Object {...}) line 3579 + 13 bytes
>Fprogn(Lisp_Object {...}) line 954 + 9 bytes
>Flet(Lisp_Object {...}) line 1123 + 9 bytes
>Feval(Lisp_Object {...}) line 3579 + 13 bytes
>Fprog1(Lisp_Object {...}) line 976 + 12 bytes
>Feval(Lisp_Object {...}) line 3579 + 13 bytes
>Fprogn(Lisp_Object {...}) line 954 + 9 bytes
>FletX(Lisp_Object {...}) line 1054 + 9 bytes
>Feval(Lisp_Object {...}) line 3579 + 13 bytes
>Feval(Lisp_Object {...}) line 3692 + 37 bytes
>Fif(Lisp_Object {...}) line 870 + 9 bytes
>Feval(Lisp_Object {...}) line 3579 + 13 bytes
>Fprogn(Lisp_Object {...}) line 954 + 9 bytes
>funcall_lambda(Lisp_Object {...}, int 3, Lisp_Object * 0x0082ee10) line 4203 + 9
bytes
>Ffuncall(int 4, Lisp_Object * 0x0082ee0c) line 3896 + 17 bytes
>Fapply(int 2, Lisp_Object * 0x0082eea4) line 4151 + 13 bytes
>apply1(Lisp_Object {...}, Lisp_Object {...}) line 4471 + 11 bytes
>Fcall_interactively(Lisp_Object {...}, Lisp_Object {...}, Lisp_Object {...}) line 459
+ 13 bytes
>Fcommand_execute(Lisp_Object {...}, Lisp_Object {...}, Lisp_Object {...}) line 3114 +
17 bytes
>Ffuncall(int 3, Lisp_Object * 0x0082f2fc) line 3847 + 160 bytes
>execute_optimized_program(const unsigned char * 0x02d79bd0, int 7, Lisp_Object *
0x014ea118) line 823 + 16 bytes
>funcall_compiled_function(Lisp_Object {...}, int 1, Lisp_Object * 0x0082f758) line
3460 + 35 bytes
>Ffuncall(int 2, Lisp_Object * 0x0082f754) line 3886 + 17 bytes
>Fcall_interactively(Lisp_Object {...}, Lisp_Object {...}, Lisp_Object {...}) line 994
+ 22 bytes
>Fcommand_execute(Lisp_Object {...}, Lisp_Object {...}, Lisp_Object {...}) line 3114 +
17 bytes
>execute_command_event(command_builder * 0x02398130, Lisp_Object {...}) line 4286 + 25
bytes
>Fdispatch_event(Lisp_Object {...}) line 4598 + 92 bytes
>Fcommand_loop_1() line 600 + 9 bytes
>command_loop_1(Lisp_Object {...}) line 505 + 5 bytes
>condition_case_1(Lisp_Object {...}, Lisp_Object (Lisp_Object)* 0x01074b1c
command_loop_1(Lisp_Object), Lisp_Object {...}, Lisp_Object (Lisp_Object, Lisp_Object)*
0x010747ac cmd_error(Lisp_Object, Lisp_Object), Lisp_Object {...}) line 1924 + 7 bytes
>command_loop_3() line 262 + 35 bytes
>command_loop_2(Lisp_Object {...}) line 277
>internal_catch(Lisp_Object {...}, Lisp_Object (Lisp_Object)* 0x0107493c
command_loop_2(Lisp_Object), Lisp_Object {...}, int * volatile 0x00000000, Lisp_Object *
volatile 0x00000000, Lisp_Object * volatile 0x00000000) line 1530 + 7 bytes
>initial_command_loop(Lisp_Object {...}) line 313 + 29 bytes
>xemacs_21_5_b23_i586_pc_win32(int 1, unsigned short * * 0x0082ff18, unsigned short * *
0x00000000, int 0) line 2627
>main(int 1, char * * 0x00f64220, char * * 0x00f62e40) line 3068
>mainCRTStartup() line 338 + 17 bytes
>KERNEL32! 7c816d4f()
>
>
>
--
Adrian Aichner
mailto:adrian@xemacs.org
http://www.xemacs.org/