SpaceTally>>spaceForInstancesOf: crashes the VM (was: [squeak-dev] Squeak 4.5 Release Candidate 4 (13675))

Eliot Miranda eliot.miranda at gmail.com
Mon Feb 17 19:10:30 UTC 2014


On Mon, Feb 17, 2014 at 10:59 AM, Eliot Miranda <eliot.miranda at gmail.com>wrote:

>
>
>
> On Sat, Feb 15, 2014 at 6:38 PM, David T. Lewis <lewis at mail.msen.com>wrote:
>
>> On Sat, Feb 15, 2014 at 08:08:19PM -0500, David T. Lewis wrote:
>> > Yikes! Good catch, thank you.
>> >
>> > This very likely *is* a VM problem. I can reproduce it with a standard
>> > interpreter VM, and the crash does not happen when I run the same thing
>> > on Cog.
>>
>>
>> The problem happens in SpaceTally>>spaceForInstancesOf:
>>
>> This eventually does "CompiledMethod basicNew" which crashes the VM.
>>
>
> That's funny :-).  You can print CompiledMethod basicNew, but woe betide
> you if you try and inspect it. I think the VM primitives should fail for
> CompiledMethod.
>

and my reason is that one can always get at the primitives somehow, e.g.

CompiledMethod perform: #basicNew: withArguments: #(0) inSuperclass:
CompiledMethod class superclass!

so the VM can only preserve its integrity by refusing to instantiate bogus
objects.  I've already changed the VM to fail at:[put:] for CompiledMethod
when accessing bytes in the literal frame (hence the change to
CompiledMethod hash), & IIRC to instVarAt:[put:] when accessing outside the
literal frame.  Changing the basicNew[:] primitives would be consistent
with that.

CompiledMethod class>basicNew seems to cause problems with both Cog and
>> interpreter VM, so I may have been wrong in saying that the issue was
>> specific to the interpreter VM.
>>
>> The format of CompiledMethod is special (see its class comment), and it
>> appears that #basicNew is problematic.
>>
>> Dave
>>
>>
>> >
>> > To reproduce:
>> >
>> > Help -> About this System, then select "Space Analysis" in the System
>> > Reporter. Result is:
>> >
>> > Segmentation fault
>> >
>> > 17369460 Behavior>new
>> > 17369368 Fraction class>numerator:denominator:
>> > 17369272 SmallInteger>/
>> > 17369180 Number>roundUpTo:
>> > 17369088 SpaceTally>spaceForInstancesOf:
>> >
>> > Dave
>> >
>> >
>> > On Sat, Feb 15, 2014 at 11:58:29PM +0100, Michael wrote:
>> > > Hi,
>> > >
>> > > I am new to squeak and smalltalk, but I noticed the 4.5 release notes
>> > > mention a "System space analysis" feature/function.
>> > > However when I try it, I consistently crash the virtual machine with a
>> > > segmentation fault.
>> > >
>> > > I have tried both on a Raspberry Pi with the latest version of the
>> > > virtual machine and on 64 bit Slackware 14.1 with version 4.10.2.2614
>> > > from slackbuilds.org. So I assume it is not a VM problem.
>> > >
>> > > The complete output from the command line is:
>> > > bash-4.2$ squeak Squeak4.5-13675.image
>> > > CHECKING cogvm
>> > > which: no cogvm in (/usr/bin:/bin)
>> > > CHECKING squeakvm
>> > >
>> > > Segmentation fault
>> > >
>> > > 17254592 Behavior>new
>> > > Segmentation fault
>> > >
>> > >
>> > > Michael
>>
>>
>
>
> --
> best,
> Eliot
>



-- 
best,
Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20140217/8c766578/attachment.htm


More information about the Squeak-dev mailing list