Hello,

Boris Zbarsky <[EMAIL PROTECTED]> writes:

> Sure.  The wrong thing is that profile-signal-handler is not called,
> so never resets the timer, so no more SIGPROFs.  Unless I'm misreading
> the code.

Oh, right.

> I can't check the values in the structs it's passed, unfortunately (no
> symbols here for guile or the libc).

Maybe with `strace(1)' or similar?

>> 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).
>
> Where would I add that?

In some Scheme code that is run regularly.

BTW, is Gnucash multithreaded?

> For that matter, what's the C handler in
> libguile?  I should be able to breakpoint on that and see whether it's
> called, hopefully...

It's `take_signal ()' (scmsigs.c), at least in 1.8.x.

Hope this helps,
Ludo'.



Reply via email to