[armedbear-devel] [FIXED?] Bug: Attempt to GO to a tag whose extent has ended quits ABCL

Mark Evenson evenson at panix.com
Mon Sep 21 11:58:53 UTC 2009


On 9/20/09 1:16 PM, Tobias C. Rittweiler wrote:
> Mark Evenson<evenson at panix.com>  writes:
>
>> On 9/18/09 1:36 PM, Mark Evenson wrote:
>>
>>> Filed as [bug ticket #63][63].  Thanks for the report.
>>>
>>> [63]: http://trac.common-lisp.net/armedbear/ticket/63

> This is not enough. You also have to add a catch to LispThread.
>
>    (threads:make-thread #'(lambda ()
>                             (let ((f nil))
>                               (tagbody (setf f (lambda () (go foo))) foo)
>                               (funcall f)))
>                         :name "foof")
>

Unfortunately this doesn't seem to be easy to do in clean manner.

As far as I got to investigate, there is no single place in which to 
make the catch, as we seemingly have multiple code paths for executing 
forms that fail to share common handler code.  For your new test case of 
making the error appear in a MAKE-THREAD, the handler is actually 
created within the LispThread(Function, LispThread) constructor, which 
shares no common code with the place I patched the INTERACTIVE-EVAL 
handler in Lisp.java.  And neither of these share code with the top 
level eval that can be created by invoking Interpreter.eval(String).

Out of time for today, but others please chime in to correct/enhance my 
understanding.


-- 
"A screaming comes across the sky.  It has happened before, but there
is nothing to compare to it now."




More information about the armedbear-devel mailing list