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

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

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

Eliot Miranda-2
 



On Sat, Feb 15, 2014 at 6:38 PM, David T. Lewis <[hidden email]> 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.

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
Reply | Threaded
Open this post in threaded view
|

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

Eliot Miranda-2
 



On Mon, Feb 17, 2014 at 10:59 AM, Eliot Miranda <[hidden email]> wrote:



On Sat, Feb 15, 2014 at 6:38 PM, David T. Lewis <[hidden email]> 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