Hello All!
I got profiling to work fairly reliable for short profiling windows of
seconds or minutes.
When I leave XEmacs unattended for many minutes to hours it eventually
crashes.
The typical signature is:
current_profile_function() line 168 + 4 bytes
sigprof_handler(int 0x0000001d) line 306 + 5 bytes
setitimer_helper_proc(unsigned int 0x0000f631, unsigned int 0x00000000, unsigned long
0x0000001d, unsigned long 0x00000000, unsigned long 0x00000000) line 788 + 19 bytes
WINMM! 76b454f3()
WINMM! 76b5ae36()
WINMM! 76b5af3a()
KERNEL32! 7c80b50b()
This is at "=>" in the following source fragment.
At this point the internal state of variables is already beyond belief.
I'll send in my patch to eval.c which gets me even to that point of
"stability" for review.
I'll attach my full log of recent backtraces in case anyone has time and interest to
take a look.
Best regards!
Adrian
----------------------------------------------------------------------------
static Lisp_Object
current_profile_function (void)
{
Lisp_Object fun;
struct backtrace *bt = backtrace_list;
/* 2 because we set in_profiling when we entered the current routine. */
if (in_profiling >= 2)
return QSprofile_overhead;
/* Find a function actually being called. Potentially (?) there could be
a number of non-calling funs -- calling foo autoloads, which tries to
call bar, but requires evalling its args first, which calls baz, ...
If profiling was not enabled when the function was called, just treat
the function as actually called, because the info about whether we've
finished the preamble will not have been recorded. */
=>for (; bt && !bt->function_being_called; bt = bt->next)
----------------------------------------------------------------------------
--
Adrian Aichner
mailto:adrian@xemacs.org
http://www.xemacs.org/
_______________________________________________
XEmacs-Beta mailing list
XEmacs-Beta(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-beta