bug-guile
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: signal handling different in 1.8.3 than 1.8.1?


From: Gregory Marton
Subject: Re: signal handling different in 1.8.3 than 1.8.1?
Date: Tue, 3 Jun 2008 12:05:18 -0400 (EDT)

Hi Ludovic,

The following message is a courtesy copy of an article
that has been posted to gmane.lisp.guile.bugs as well.

Is address@hidden 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~~~~^^^^~~~~~--~~~~~~~~~~~~~~~++~~~~~~~





reply via email to

[Prev in Thread] Current Thread [Next in Thread]