On 7 May 2012 00:22, Helmut Eller heller@common-lisp.net wrote:
regression: I tried to use the :timeout argument of sb-thread:condition-wait that was added in version 1.0.54 or so. Obviously it doesn't work as I had expected; I'll restore the previous
Without digging deeper, it seems to me that there is an outer deadline from another WITH-DEADLINE. In the old version you're using :OVERRIDE, which means that even if you specify a longer wait, you get what you ask for.
In the new version the outer WITH-DEADLINE specifies a shorter wait than the :TIMEOUT you request, and that happens -- and a deadline-timeout is signalled, etc.
Using bleeding edge SBCL and
'(sb-sys:with-deadline (:seconds nil :override t) (sb-thread:condition-wait waitqueue mutex :timeout timeout)))
in the first leg, the tests pass after removing
nil ; FIXME: :timeout doesn't work. Why?
...but since ability to specify :SECONDS NIL is very new, it's probably best not to depend on that just now. Finding the outer source of deadline is probably a better bet.
Cheers,
-- Nikodemus