[Vm-dev] New Cog VMs available

Eliot Miranda eliot.miranda at gmail.com
Mon Oct 13 18:48:47 UTC 2014


Hi Karl,

    I've been looking at a bug that Stéphane Rollandin uncovered in the V3
GC.  I've just fixed it and suspect it might be the same bug that is biting
you.  I wonder if you can do me a favour.  Can you try and construct a
version of your bug that crashes without user intervention?  i.e. in e.g. a
workspace evaluate

    Smalltalk snapshot: true andQuit: true.
    1 to: 50 do:[: i | Browser open]

and then verify that the image crashes on startup?  And then save that
image (or mail me a copy)?  The reason is that the bug is very sensitive to
allocation order and so won't crash reliably if started from a menu pick,
where the exact timing, movement of the mouse etc can all change object
allocation.  With the saved snapshot, however, everything is unchanged
except code determined by the date the image is started in, the directory
it is started in, etc.  But it is much moire predictable.  Once there's a
reliably crashing image it is easy to check whether a new VM fixes the bug
or not.



On Sun, Oct 12, 2014 at 7:32 AM, karl ramberg <karlramberg at gmail.com> wrote:

>
> The cogspurwin-14.39.3095
> <http://www.mirandabanda.org/files/Cog/VM/VM.r3095/cogspurwin-14.39.3095.zip> vm
> crashes when I run
>
> 1 to: 50 do:[: i | Browser open]
>
> Crash dump attached.
>
> Karl
>
> On Sat, Oct 4, 2014 at 2:17 AM, Eliot Miranda <eliot.miranda at gmail.com>
> wrote:
>
>>
>> ...at http://www.mirandabanda.org/files/Cog/VM/VM.r3095/.
>>
>> CogVM binaries as per VMMaker.oscog-eem.890/r3095
>>
>> Fix line-buffered input in sqFilePluginBasicPrims.c when buffer size > 1.
>> fread cannot be relied upon to answer lines.
>>
>> Fix bug in Cogit>>lookup:for:methodAndErrorSelectorInto: which if cogging
>> a
>> method found through an MNU would set the cog method's selector to the
>> original
>> selector that was not understood instead of #doesNotUnderstand:.
>>
>> Fix the description of the blockonwarn flag (not blockonwarning).
>>
>> Spur:
>> Fix one-way become for classes with and without copyHash, primarily by
>> fixing
>> allInstances.  One-way become for classes causes duplicates in the class
>> table
>> (either that or an allInstances scan would be needed as part of the
>> become to
>> change instances referring to the deleted class index, which would be
>> slow).
>> So allInstances must be able to cope with duplicates.  Hence split it
>> into a
>> fast path common case when the class in question is not duplicated, and a
>> slower
>> path when it is.  Make both the marking phase of GC and allInstances
>> check for
>> and eliminate refereces to duplicate entries at wrong/obsolete class
>> indices.
>>
>> Fix markAndShouldScan: to not scan the pun classes of non-objects on the
>> heap
>> such as implicit receiver caches and Sista counters.
>>
>> Eliminate the classTableBitmap premature optimization.  All the
>> information we
>> need is in the cassTable and the class's hashes therein.
>>
>> Change pinObject: to answer 0 on failure and the (possibly moved) object
>> on
>> success.  Much easier than having to check and follow forwarding pointer.
>> The changes to platforms/Cross/plugins/FilePlugin/sqFilePluginBasicPrims.c
>> in r3092 in a Spur MT VM depend on this.
>> --
>> best,
>> Eliot
>>
>
-- 
thanks in advance,
Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20141013/f9d56979/attachment.htm


More information about the Vm-dev mailing list