[squeak-dev] Re: The broken user interrupt, or the saga of 100000 factorial.

Levente Uzonyi leves at elte.hu
Fri Dec 23 15:51:58 UTC 2011


On Fri, 23 Dec 2011, David T. Lewis wrote:

> The image side changes were part of Squeak 4.2, and VM changes happened
> before that. I think that all the VMs currently in circulation will have
> this support, but I'm not certain of it.

Eliot's CogVMs don't have this patch.


Levente

>
> For the interpreter VM, the changes were introduced here:
>
>  Name: VMMaker-dtl.175
>  Time: 25 May 2010, 8:01:19 am
>  Ancestors: VMMaker-dtl.174
>
>  VMMaker 4.2.2
>  Reference Mantis 7473: VM changes for better finalization support
>  Add Igor's VM changes to support better finalization (weak-finalizers-VM.1.cs merged with Alien support updates).
>
> The Cog VMs would have had the support added in a similar time
> frame, although I don't recall exactly when.
>
> HTH,
> Dave
>
>
> On Fri, Dec 23, 2011 at 10:22:25AM -0500, Bob Arning wrote:
>> David,
>>
>> While I was a little suspicious about the close placement of the init
>> and test, my observation was from a 4.2 image with no changes in this
>> area. Just curious what image/vm implements this *new* finalization.
>>
>> Cheers,
>> Bob
>>
>>
>>
>> On 12/23/11 10:13 AM, David T. Lewis wrote:
>>> On Fri, Dec 23, 2011 at 07:39:41AM -0500, Bob Arning wrote:
>>>> I've seen suspicious behavior (tough time interrupting and lots of
>>>> finalization in MessageTally reports) in my 4.2 image, so I thought I'd
>>>> look at applying this fix. One thing I'm a little puzzled about:
>>>> HasNewFinalization is false in my image (I'm using a Cog that's a few
>>>> months old). Under what conditions is it true?
>>> I think you have spotted a timing problem here. I put the initTestPair
>>> and checkTestPair calls together in a startUp: method, which is
>>> wrong because it does not give the VM an opportunity to do its
>>> updates, so the results of the test are not valid.
>>>
>>> This is not exactly elegant, but if you force a garbage collection
>>> between initTestPair and checkTestPair, the test will work properly.
>>>
>>> WeakArray class>>startUp: resuming
>>> 	resuming ifFalse: [ ^self ].
>>> 	"Check if new finalization is supported by the VM"
>>> 	WeakFinalizationList initTestPair.
>>> 	Smalltalk garbageCollect.
>>> 	WeakFinalizationList checkTestPair.
>>> 	self restartFinalizationProcess.
>>>
>>> A better fix is needed - sorry about that. I'm not sure if I'll
>>> have a chance to look at this today, but the important thing is
>>> to arrange for the check to be done when the image is started,
>>> but not to continue repeating the test after it has been
>>> successfully performed.
>>>
>>> Dave
>>>
>>>
>>>
>
>>
>
>
>



More information about the Squeak-dev mailing list