chicken-users
[Top][All Lists]
Advanced

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

Re: [Chicken-users] newbie: questions about set-finalizer!


From: felix winkelmann
Subject: Re: [Chicken-users] newbie: questions about set-finalizer!
Date: Wed, 17 Dec 2008 10:29:17 +0100

On Tue, Dec 16, 2008 at 7:36 PM, felix winkelmann <address@hidden> wrote:
> On Mon, Dec 15, 2008 at 11:57 PM, Alejandro Forero Cuervo
> <address@hidden> wrote:
>>
>> I have a question about finalizers.
>>
>> If you run the following in csi:
>>
>>  (define x (list 1 2 3))
>>  (begin (set-finalizer! x (lambda (o) (format #t "Delete: ~A~%" o))) #t)
>>  (define y (list 4 5 6))
>>  (begin (set-finalizer! y (let ((p x)) (lambda (o) (format #t "Delete: ~A: 
>> ~A~%" o p)))) #t)
>>  (gc #t)
>>  (set! x #f)
>>  (gc #t)
>>
>> Why do you get "Delete: (1 2 3)", the output of the finalizer for x,
>> even though the finalizer for y depends on the value of x?
>>
>> Am I misunderstanding the way finalizer procedures get executed?
>>
>
> A bug. The finalizer itself is not considered in the calculation whether
> something is still referenced or not (I think). I have to investigate.
>

Hi!

Please try attached patch. I have added it to trunk and the chicken-3
branch, and did some tests, but testing finalization is always somewhat
difficult.


cheers,
felix

Attachment: runtime.c.diff
Description: Text Data


reply via email to

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