Infinite error recursion while saving Pharo70 alpha

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

Infinite error recursion while saving Pharo70 alpha

Aliaksei Syrel
Hello,

When saving one of the latest pharo70 image I got an infinite recursion loop due to message not understood. Force closing it probably lead to image corruption and it became un-openable anymore. Any idea what is going on? It does not look like a unique case because there are a few pharo70 images that already died in front of me...

Screen Shot 2018-11-07 at 09.55.07.png

VM: Mac OS - x64 - 1013.5 - CoInterpreter VMMaker.oscog-eem.2461 uuid: b3cd33f5-6309-43a1-b669-7a1805111f34 Oct 31 2018
StackToRegisterMappingCogit VMMaker.oscog-eem.2464 uuid: 0b1fa0a3-a781-4fd5-b1cf-1809796ccbbf Oct 31 2018
VM: 201810311808 https://github.com/OpenSmalltalk/opensmalltalk-vm.git Date: Wed Oct 31 11:08:29 2018 CommitHash: c7a9b1f Plugins: 201810311808 https://github.com/OpenSmalltalk/opensmalltalk-vm.git
Image: Pharo7.0.0alpha [Build information: Pharo-7.0.0+alpha.build.1361.sha.011b7c939adeb52338baad16a694cab2e7a54d74 (64 Bit)]

Cheers,
Alex
Reply | Threaded
Open this post in threaded view
|

Re: Infinite error recursion while saving Pharo70 alpha

alistairgrant
Hi Alex,


On Wed, 7 Nov 2018 at 10:16, Aliaksei Syrel <[hidden email]> wrote:
>
> Hello,
>
> When saving one of the latest pharo70 image I got an infinite recursion loop due to message not understood. Force closing it probably lead to image corruption and it became un-openable anymore. Any idea what is going on? It does not look like a unique case because there are a few pharo70 images that already died in front of me...

This looks like your image changes the definition of
Number>>raisedToInteger: somewhere along the line.  In the standard
image it doesn't call #run:with:in:.

HTH,
Alistair

Reply | Threaded
Open this post in threaded view
|

Re: Infinite error recursion while saving Pharo70 alpha

Sven Van Caekenberghe-2


> On 7 Nov 2018, at 10:27, Alistair Grant <[hidden email]> wrote:
>
> Hi Alex,
>
>
> On Wed, 7 Nov 2018 at 10:16, Aliaksei Syrel <[hidden email]> wrote:
>>
>> Hello,
>>
>> When saving one of the latest pharo70 image I got an infinite recursion loop due to message not understood. Force closing it probably lead to image corruption and it became un-openable anymore. Any idea what is going on? It does not look like a unique case because there are a few pharo70 images that already died in front of me...
>
> This looks like your image changes the definition of
> Number>>raisedToInteger: somewhere along the line.  In the standard
> image it doesn't call #run:with:in:.

I don't think that definition got overwritten, check the implementers of #run:with:in: is seems to have to do with meta links or proxies or something like that ...

> HTH,
> Alistair
>


Reply | Threaded
Open this post in threaded view
|

Re: Infinite error recursion while saving Pharo70 alpha

alistairgrant
Hi Sven,

On Wed, 7 Nov 2018 at 10:37, Sven Van Caekenberghe <[hidden email]> wrote:

>
>
>
> > On 7 Nov 2018, at 10:27, Alistair Grant <[hidden email]> wrote:
> >
> > Hi Alex,
> >
> >
> > On Wed, 7 Nov 2018 at 10:16, Aliaksei Syrel <[hidden email]> wrote:
> >>
> >> Hello,
> >>
> >> When saving one of the latest pharo70 image I got an infinite recursion loop due to message not understood. Force closing it probably lead to image corruption and it became un-openable anymore. Any idea what is going on? It does not look like a unique case because there are a few pharo70 images that already died in front of me...
> >
> > This looks like your image changes the definition of
> > Number>>raisedToInteger: somewhere along the line.  In the standard
> > image it doesn't call #run:with:in:.
>
> I don't think that definition got overwritten, check the implementers of #run:with:in: is seems to have to do with meta links or proxies or something like that ...

Good point.  How to get a list of all the methods that have MetaLinks?
 The following seems to work, but probably isn't the most efficient:

Object allSubclasses flatCollect: [ :each | each methods select: [
:method | method ast links isNotNil ] ]

Cheers,
Alistair

Reply | Threaded
Open this post in threaded view
|

Re: Infinite error recursion while saving Pharo70 alpha

Marcus Denker-4


> On 7 Nov 2018, at 13:56, Alistair Grant <[hidden email]> wrote:
>
> Hi Sven,
>
> On Wed, 7 Nov 2018 at 10:37, Sven Van Caekenberghe <[hidden email]> wrote:
>>
>>
>>
>>> On 7 Nov 2018, at 10:27, Alistair Grant <[hidden email]> wrote:
>>>
>>> Hi Alex,
>>>
>>>
>>> On Wed, 7 Nov 2018 at 10:16, Aliaksei Syrel <[hidden email]> wrote:
>>>>
>>>> Hello,
>>>>
>>>> When saving one of the latest pharo70 image I got an infinite recursion loop due to message not understood. Force closing it probably lead to image corruption and it became un-openable anymore. Any idea what is going on? It does not look like a unique case because there are a few pharo70 images that already died in front of me...
>>>
>>> This looks like your image changes the definition of
>>> Number>>raisedToInteger: somewhere along the line.  In the standard
>>> image it doesn't call #run:with:in:.
>>
>> I don't think that definition got overwritten, check the implementers of #run:with:in: is seems to have to do with meta links or proxies or something like that ...
>

Or it could be a bug where the VM ends up getting a SmallInteger instead of a CompiledMethod as the result of a method lookup. That would be bad...

> Good point.  How to get a list of all the methods that have MetaLinks?
> The following seems to work, but probably isn't the most efficient:
>
> Object allSubclasses flatCollect: [ :each | each methods select: [
> :method | method ast links isNotNil ] ]
>

you can ask the method directly

Object allSubclasses flatCollect: [ :each | each methods select: [
:method | method hasLinks ] ]

this is much faster as it returns immediately nil for methods without links  (without AST reification).

        Marcus



Reply | Threaded
Open this post in threaded view
|

Re: Infinite error recursion while saving Pharo70 alpha

Eliot Miranda-2
In reply to this post by Aliaksei Syrel
Hi Alex,

    I think Marcus is right.  The run:with:in: mechanism is invoked when the VM looks up a message and finds something other than a CompiledMethod in the relevant method dictionary as the value of the selector.  Occasionally this can happen from stack corruption, otherwise it implies method dictionary corruption.  Either could be caused by an FFI bug, a VM bug, etc.  Do you have the image still live?  We could meet on Slack and i could perhaps use lldb to look at the stack.  If not, the approach would be to find a reproducible case (painful, given that you're trying to get work done and save it) and then run the reproducible case with assertions and heap leak checking turned on to try and catch the error as early as possible.

Forgive me, but may I beg you to post the text of stack back traces in future not screenshots?  The screenshots have two major disadvantages; a) they're huge and b) one cannot search email messages for the text they contain.  You can use e.g. shell level tools to copy the text, eg from the terminal or from the console.

On Wed, Nov 7, 2018 at 1:16 AM Aliaksei Syrel <[hidden email]> wrote:
Hello,

When saving one of the latest pharo70 image I got an infinite recursion loop due to message not understood. Force closing it probably lead to image corruption and it became un-openable anymore. Any idea what is going on? It does not look like a unique case because there are a few pharo70 images that already died in front of me...

Screen Shot 2018-11-07 at 09.55.07.png

VM: Mac OS - x64 - 1013.5 - CoInterpreter VMMaker.oscog-eem.2461 uuid: b3cd33f5-6309-43a1-b669-7a1805111f34 Oct 31 2018
StackToRegisterMappingCogit VMMaker.oscog-eem.2464 uuid: 0b1fa0a3-a781-4fd5-b1cf-1809796ccbbf Oct 31 2018
VM: 201810311808 https://github.com/OpenSmalltalk/opensmalltalk-vm.git Date: Wed Oct 31 11:08:29 2018 CommitHash: c7a9b1f Plugins: 201810311808 https://github.com/OpenSmalltalk/opensmalltalk-vm.git
Image: Pharo7.0.0alpha [Build information: Pharo-7.0.0+alpha.build.1361.sha.011b7c939adeb52338baad16a694cab2e7a54d74 (64 Bit)]

Cheers,
Alex


--
_,,,^..^,,,_
best, Eliot
Reply | Threaded
Open this post in threaded view
|

Re: Infinite error recursion while saving Pharo70 alpha

Eliot Miranda-2


On Wed, Nov 7, 2018 at 6:28 AM Eliot Miranda <[hidden email]> wrote:
[snip]
Forgive me, but may I beg you to post the text of stack back traces in future not screenshots?  The screenshots have two major disadvantages; a) they're huge and b) one cannot search email messages for the text they contain.  You can use e.g. shell level tools to copy the text, eg from the terminal or from the console.

i.e.:

Your mail to 'Pharo-dev' with the subject

    Re: [Pharo-dev] Infinite error recursion while saving Pharo70 alpha

Is being held until the list moderator can review it for approval.

The reason it is being held:

    Message body is too big: 1522650 bytes with a limit of 1000 KB

[snip]

_,,,^..^,,,_
best, Eliot
Reply | Threaded
Open this post in threaded view
|

Re: Infinite error recursion while saving Pharo70 alpha

alistairgrant
In reply to this post by Marcus Denker-4
Hi Marcus,

On Wed, 7 Nov 2018 at 14:27, Marcus Denker <[hidden email]> wrote:

>
>
>
> > On 7 Nov 2018, at 13:56, Alistair Grant <[hidden email]> wrote:
>
> ...
>
> > Good point.  How to get a list of all the methods that have MetaLinks?
> > The following seems to work, but probably isn't the most efficient:
> >
> > Object allSubclasses flatCollect: [ :each | each methods select: [
> > :method | method ast links isNotNil ] ]
> >
>
> you can ask the method directly
>
> Object allSubclasses flatCollect: [ :each | each methods select: [
> :method | method hasLinks ] ]
>
> this is much faster as it returns immediately nil for methods without links  (without AST reification).

Thanks!

Cheers,
Alistair