Infinite error recursion while saving Pharo70 alpha
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... [image: 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
Hi Alex, On Wed, 7 Nov 2018 at 10:16, Aliaksei Syrel <alex.syrel@gmail.com> 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 <akgrant0710@gmail.com> wrote:
Hi Alex,
On Wed, 7 Nov 2018 at 10:16, Aliaksei Syrel <alex.syrel@gmail.com> 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 <sven@stfx.eu> wrote:
On 7 Nov 2018, at 10:27, Alistair Grant <akgrant0710@gmail.com> wrote:
Hi Alex,
On Wed, 7 Nov 2018 at 10:16, Aliaksei Syrel <alex.syrel@gmail.com> 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 <akgrant0710@gmail.com> wrote:
Hi Sven,
On Wed, 7 Nov 2018 at 10:37, Sven Van Caekenberghe <sven@stfx.eu> wrote:
On 7 Nov 2018, at 10:27, Alistair Grant <akgrant0710@gmail.com> wrote:
Hi Alex,
On Wed, 7 Nov 2018 at 10:16, Aliaksei Syrel <alex.syrel@gmail.com> 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
Hi Marcus, On Wed, 7 Nov 2018 at 14:27, Marcus Denker <marcus.denker@inria.fr> wrote:
On 7 Nov 2018, at 13:56, Alistair Grant <akgrant0710@gmail.com> 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
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 <alex.syrel@gmail.com> 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...
[image: 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
On Wed, Nov 7, 2018 at 6:28 AM Eliot Miranda <eliot.miranda@gmail.com> 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
participants (5)
-
Aliaksei Syrel -
Alistair Grant -
Eliot Miranda -
Marcus Denker -
Sven Van Caekenberghe