AllocationTest>>#testOutOfMemorySignal fails on 32bit system

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

AllocationTest>>#testOutOfMemorySignal fails on 32bit system

timrowledge
On a Raspberry Pi OS 32bit this test fails because of an oversight - the parameter passed to vmParameterAt:put: cannot exceed SmallInteger maxVal. It makes the careful testing for 32/64bit image seem a bit silly.

This means we can only ask for up to ~1GB space for free space on a 32bit image system and so I propose to clamp the requested value in AllocationTest>>#setFreeSpaceLimitOf:around: There don't appear to be any other places right now that need attention.

If I don't hear any outraged screams soon I'll just commit it to trunk.

tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
Strange OpCodes: IG: Insert Garbage



Reply | Threaded
Open this post in threaded view
|

Re: AllocationTest>>#testOutOfMemorySignal fails on 32bit system

David T. Lewis
On Thu, Jul 02, 2020 at 04:35:03PM -0700, tim Rowledge wrote:
> On a Raspberry Pi OS 32bit this test fails because of an oversight - the parameter passed to vmParameterAt:put: cannot exceed SmallInteger maxVal. It makes the careful testing for 32/64bit image seem a bit silly.
>
> This means we can only ask for up to ~1GB space for free space on a 32bit image system and so I propose to clamp the requested value in AllocationTest>>#setFreeSpaceLimitOf:around: There don't appear to be any other places right now that need attention.
>
> If I don't hear any outraged screams soon I'll just commit it to trunk.
>

So rather than

  1024 * 1024 * 1024

it should instead be

  16r3FFFFFFF

so that is it less than or equal to SmallInteger maxVal for either 32 or
64 bit images. Is that the change?

No outraged screams from me.

Dave
 

Reply | Threaded
Open this post in threaded view
|

Re: AllocationTest>>#testOutOfMemorySignal fails on 32bit system

timrowledge


> On 2020-07-02, at 6:32 PM, David T. Lewis <[hidden email]> wrote:
>
> On Thu, Jul 02, 2020 at 04:35:03PM -0700, tim Rowledge wrote:
>> On a Raspberry Pi OS 32bit this test fails because of an oversight - the parameter passed to vmParameterAt:put: cannot exceed SmallInteger maxVal. It makes the careful testing for 32/64bit image seem a bit silly.
>>
>> This means we can only ask for up to ~1GB space for free space on a 32bit image system and so I propose to clamp the requested value in AllocationTest>>#setFreeSpaceLimitOf:around: There don't appear to be any other places right now that need attention.
>>
>> If I don't hear any outraged screams soon I'll just commit it to trunk.
>>
>
> So rather than
>
>  1024 * 1024 * 1024
>
> it should instead be
>
>  16r3FFFFFFF
>
> so that is it less than or equal to SmallInteger maxVal for either 32 or
> 64 bit images. Is that the change?

It varies a bit for 32/64 bit (and strictly I guess it ought to check to see how much memory is actually available?) but must exceed SmallInteger MaxVal because of the VM code for primitiveVMParameter which fails if the input value is not a SmallInt. So, I claim we need to clamp the result of
(Smalltalk vmParameterAt: 1) + bytes asInteger
or the test cannot pass.


tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
To steal ideas from one person is plagiarism; to steal from many is research.



Reply | Threaded
Open this post in threaded view
|

Re: AllocationTest>>#testOutOfMemorySignal fails on 32bit system

Eliot Miranda-2
In reply to this post by David T. Lewis


> On Jul 2, 2020, at 6:32 PM, David T. Lewis <[hidden email]> wrote:
>
> On Thu, Jul 02, 2020 at 04:35:03PM -0700, tim Rowledge wrote:
>> On a Raspberry Pi OS 32bit this test fails because of an oversight - the parameter passed to vmParameterAt:put: cannot exceed SmallInteger maxVal. It makes the careful testing for 32/64bit image seem a bit silly.
>>
>> This means we can only ask for up to ~1GB space for free space on a 32bit image system and so I propose to clamp the requested value in AllocationTest>>#setFreeSpaceLimitOf:around: There don't appear to be any other places right now that need attention.
>>
>> If I don't hear any outraged screams soon I'll just commit it to trunk.
>>
>
> So rather than
>
>  1024 * 1024 * 1024
>
> it should instead be
>
>  16r3FFFFFFF
>
> so that is it less than or equal to SmallInteger maxVal for either 32 or
> 64 bit images. Is that the change?
>
> No outraged screams from me.

Nor from me, but one weak bleat for it to read

    (1024 * 1024 * 1024 min: SmallInteger maxVal)

And perhaps I should fix vmParameterAt:[put:] for very few cases including this one.


>
> Dave
>
>

Reply | Threaded
Open this post in threaded view
|

Re: AllocationTest>>#testOutOfMemorySignal fails on 32bit system

David T. Lewis
On Fri, Jul 03, 2020 at 11:17:52AM -0700, Eliot Miranda wrote:

>
>
> > On Jul 2, 2020, at 6:32 PM, David T. Lewis <[hidden email]> wrote:
> >
> > ???On Thu, Jul 02, 2020 at 04:35:03PM -0700, tim Rowledge wrote:
> >> On a Raspberry Pi OS 32bit this test fails because of an oversight - the parameter passed to vmParameterAt:put: cannot exceed SmallInteger maxVal. It makes the careful testing for 32/64bit image seem a bit silly.
> >>
> >> This means we can only ask for up to ~1GB space for free space on a 32bit image system and so I propose to clamp the requested value in AllocationTest>>#setFreeSpaceLimitOf:around: There don't appear to be any other places right now that need attention.
> >>
> >> If I don't hear any outraged screams soon I'll just commit it to trunk.
> >>
> >
> > So rather than
> >
> >  1024 * 1024 * 1024
> >
> > it should instead be
> >
> >  16r3FFFFFFF
> >
> > so that is it less than or equal to SmallInteger maxVal for either 32 or
> > 64 bit images. Is that the change?
> >
> > No outraged screams from me.
>
> Nor from me, but one weak bleat for it to read
>
>     (1024 * 1024 * 1024 min: SmallInteger maxVal)

+1

Weakly bleating in the affermative (the intent is much clearer when written this way).

Dave


Reply | Threaded
Open this post in threaded view
|

Re: AllocationTest>>#testOutOfMemorySignal fails on 32bit system

Eliot Miranda-2
In reply to this post by timrowledge
Hi Tim,

On Thu, Jul 2, 2020 at 4:35 PM tim Rowledge <[hidden email]> wrote:
On a Raspberry Pi OS 32bit this test fails because of an oversight - the parameter passed to vmParameterAt:put: cannot exceed SmallInteger maxVal. It makes the careful testing for 32/64bit image seem a bit silly.

On looking at the VM codee it's clear that this is really a VM bug, and the vmParameter primitives really should accept/return full width integers for this parameter.  I've fixed it and pushed.  So feel free to revert the image fix at some stage.

This means we can only ask for up to ~1GB space for free space on a 32bit image system and so I propose to clamp the requested value in AllocationTest>>#setFreeSpaceLimitOf:around: There don't appear to be any other places right now that need attention.

If I don't hear any outraged screams soon I'll just commit it to trunk.

tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
Strange OpCodes: IG: Insert Garbage

I have a whole architecture for this ;-) 

_,,,^..^,,,_
best, Eliot