Hi,

Boris Zbarsky <[EMAIL PROTECTED]> writes:

> profile-signal-handler is not getting called.  I do see a SIGPROF
> delivered to the gnucash-bin process (using 'handle SIGPROF stop' in
> gdb after attaching to the gnucash-bin process), but only once during
> the entire report generation.  I also see scm_setitimer called in gdb
> at a point in the scheme code that matches the call to
> (statprof-start), and I see it called again at the point that matches
> (statprof-stop).  The single SIGPROF delivered comes soon after that
> first setitimer call.

GDB supposedly shows all SIGPROFs that are raised, so if it shows only
one, then something's wrong.  Can you check the arguments passed to
`setitimer(2)' to make sure it makes sense?  Perhaps you could also try
increasing the sampling frequency, although that's arguably not
required.

Another (remote) possibility could be that the Scheme-level handler is
not called, even though the C handler in libguile is called, since
Scheme-level signal handlers are actually asyncs (info "(guile)
Asyncs").  You can try to force the execution of asyncs by adding a call
like "(select '() '() '() 0)" (technically, it invokes `SCM_TICK', which
runs asyncs).

One last thing would be to check whether `HAVE_SIGACTION' is defined in
Guile's <config.h> on your platform, to see which version of
`scm_sigaction_for_thread ()' is used.

Thanks,
Ludo'.



Reply via email to