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... VM: Mac OS - x64 - 1013.5 - CoInterpreter VMMaker.oscog-eem.2461 uuid: b3cd33f5-6309-43a1-b669-7a1805111f34 Oct 31 2018 Cheers, Alex |
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 |
> 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 > |
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 |
> 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 |
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:
_,,,^..^,,,_ best, Eliot |
On Wed, Nov 7, 2018 at 6:28 AM Eliot Miranda <[hidden email]> wrote: [snip]
i.e.: 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 |
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 |
Free forum by Nabble | Edit this page |