Hi Ludovic,
The following message is a courtesy copy of an article
that has been posted to gmane.lisp.guile.bugs as well.
Is bug-guile@gnu.org now out of date? I may have to get a newsreader.
Are they mirrored?
Now that I've upgraded to 1.8.3 from 1.8.1, some old test cases are
failing. In particular:
According to `NEWS', there were no signal-related changes.
Nevertheless, it has consistently passed in 1.8.1 and consistently fails in
1.8.3 with no other changes.
(define (ensure body-lambda ensuring-lambda)
(dynamic-wind
(lambda () #t)
body-lambda
ensuring-lambda))
(define (with-sigaction signum handler flags lamb)
(let ((old-sigaction (sigaction signum)))
(if flags (sigaction signum handler flags) (sigaction signum handler))
(ensure
lamb
(lambda ()
(sigaction signum (car old-sigaction) (cdr old-sigaction))))))
Signal handlers are invoked asynchronously as system asyncs, and system
asyncs are run whenever `SCM_TICK' is encountered in the C code.
There doesn't seem to be any Scheme procedure to force the execution of
system asyncs, but maybe you can try invoking LAMB above in
`call-with-unblocked-asyncs' and/or adding a `(sleep 0)' right before it
to force the execution of pending system asyncs.
Let us know if it helps.
call-with-unblocked-asyncs complains:
misc-error: asyncs already unblocked
With (sleep 0) is no different than without.
Thank you,
Grem
--
------ __@ Gregory A. Marton http://csail.mit.edu/~gremio/
--- _`\<,_ .
-- (*)/ (*) I came, I saw, I thunked, I flunked.
~~~~~~~~~~~~~~~~-~~~~~~~~_~~~_~~~~~v~~~~^^^^~~~~~--~~~~~~~~~~~~~~~++~~~~~~~