Hi,

Boris Zbarsky <[EMAIL PROTECTED]> writes:

> Ludovic Courtès wrote:

>> Maybe with `strace(1)' or similar?
>
> Unfortunately, that just shows the pointer to the struct, not the
> value in the struct itself....

Under GNU/Linux it does the right thing.  :-)

> I tried adding that call to code that certainly runs repeatedly
> between statprof-start and statprof-stop (the code that handles
> updating the gnucash progress bar, in fact), but that doesn't seem to
> help.

Are you sure that piece of code is ever called?  Is it called from an
"idle" handler or some such?

Another idea is that you could try modifying `statprof' so that it uses

  (setitimer ITIMER_REAL ...)

and

  (sigaction SIGALRM profile-signal-handler)

just to see if it makes a difference...

> I'm not sure.  It does update the UI during execution of guile code
> (progress indicator, and so forth), but that could also be
> accomplished if the guile interpreter makes some sort of periodic
> callbacks into the embedding.  They link to pthread, but don't seem to
> really use it for anything...

It may be that they use a single pthread (the "main" thread), and that
they handle events and timeouts via a GTK+ even loop.  Can you check
with GDB whether `pthread_create(3)' is ever called?

> Yeah, that's called for SIGPROF in this case.  But the scheme handler
> is still not called, even with the (select '() '() '() 0) calls as
> above.

That's weird, but I don't have any other idea.  Now, I'm thinking about
how 1.8 works, so it might be that there are subtle differences with
1.6.

Thanks,
Ludo'.



Reply via email to