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

David T. Lewis lewis at mail.msen.com
Fri Dec 23 15:50:17 UTC 2011


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.

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