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'.