Hi!
Vincent and I are experiencing many crashes from GrafPort>copyBits. It crashes every couple of minutes. I know that not much can be done so far. Stability is my biggest concern with Pharo :-( I use the latest VM. Cheers, Alexandre -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. _______________________________________________ Moose-dev mailing list [hidden email] https://www.list.inf.unibe.ch/listinfo/moose-dev crash.dmp (54K) Download Attachment |
According to crash.dmp TRMorph>drawOn: draws an image using FormCanvas>>#image:at:sourceRe
Try to round it to integer point. Cheers, Alex On 16 December 2016 at 16:34, Alexandre Bergel <[hidden email]> wrote: Hi! _______________________________________________ Moose-dev mailing list [hidden email] https://www.list.inf.unibe.ch/listinfo/moose-dev |
Okay, trying…
Alexandre > On Dec 16, 2016, at 4:40 PM, Aliaksei Syrel <[hidden email]> wrote: > > According to crash.dmp TRMorph>drawOn: draws an image using FormCanvas>>#image:at:sourceRect:rule: at a coordinate represented by a Float point. > Try to round it to integer point. > > Cheers, > Alex > > On 16 December 2016 at 16:34, Alexandre Bergel <[hidden email]> wrote: > Hi! > > Vincent and I are experiencing many crashes from GrafPort>copyBits. It crashes every couple of minutes. > > I know that not much can be done so far. Stability is my biggest concern with Pharo :-( > I use the latest VM. > > Cheers, > Alexandre > > > > > > > -- > _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: > Alexandre Bergel http://www.bergel.eu > ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. > > > > > _______________________________________________ > Moose-dev mailing list > [hidden email] > https://www.list.inf.unibe.ch/listinfo/moose-dev > > -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. _______________________________________________ Moose-dev mailing list [hidden email] https://www.list.inf.unibe.ch/listinfo/moose-dev |
In reply to this post by abergel
Which vm exactly?
On which os? Which version of Pharo? Such report are totally useless without any precise information. The proof is that I do not get any crash recently with Pharo. I will let you guess my os, image version and vm version because this is too much fun. Stef > Hi! > > Vincent and I are experiencing many crashes from GrafPort>copyBits. It > crashes every couple of minutes. > > I know that not much can be done so far. Stability is my biggest concern > with Pharo :-( > I use the latest VM. > > Cheers, > Alexandre > > -- Using Opera's mail client: http://www.opera.com/mail/ _______________________________________________ Moose-dev mailing list [hidden email] https://www.list.inf.unibe.ch/listinfo/moose-dev |
In reply to this post by abergel
Hi Alex,
I certainly understand your frustration, I felt it too on Windows to the point where I stopped using Pharo for couple of weeks out of rage, and then spend in total at least 40+ hours digging into the VM until I added usable workaround for Windows. Not to mention how frustrating was the fixing it. Obviously on Mac there are still some unresolved pathways, but it will not magically fix itself. The reason for the crash (bad object pinning and moving of canvas memory) has been known for some time now, so more crash.dmps do not give any more insight. If this is to be resolved then one of the two have to happen: A) Someone who really understands VM/image memory management / GC / pinning fixes the issue. B) Someone with Mac (which I don't have) digs around BitBlt code (or wherever it was) and adds a similar workaround. Considering the issue has emerged more than a year ago (Spur switch), I don't think (A) is going to happen any time soon, so I guess the only chance is to get elbows greasy and fix it yourself (B) (or you make one of your students suffer :)). I didn't have a single Roassal/BitBlt related crash on Windows since my fix was added, so there should be a way to add a workaround for Mac too. (there are of course crashes related to FT, but the story is arguably the same). TL;DR: I don't think it's on a todo list of anyone who actually understands this, so the only way to fix it is by yourself or find a concrete person that would be willing to dig into it. Peter _______________________________________________ Moose-dev mailing list [hidden email] https://www.list.inf.unibe.ch/listinfo/moose-dev |
On Mon, Dec 19, 2016 at 5:10 AM, Peter Uhnak <[hidden email]> wrote:
> Hi Alex, > > I certainly understand your frustration, I felt it too on Windows to the point where I stopped using Pharo for couple of weeks out of rage, and then spend in total at least 40+ hours digging into the VM until I added usable workaround for Windows. Not to mention how frustrating was the fixing it. > > Obviously on Mac there are still some unresolved pathways, but it will not magically fix itself. > > The reason for the crash (bad object pinning and moving of canvas memory) has been known for some time now, so more crash.dmps do not give any more insight. > > If this is to be resolved then one of the two have to happen: > > A) Someone who really understands VM/image memory management / GC / pinning fixes the issue. > > B) Someone with Mac (which I don't have) digs around BitBlt code (or wherever it was) and adds a similar workaround. > > Considering the issue has emerged more than a year ago (Spur switch), I don't think (A) is going to happen any time soon, so I guess the only chance is to get elbows greasy and fix it yourself (B) (or you make one of your students suffer :)). > > I didn't have a single Roassal/BitBlt related crash on Windows since my fix was added, so there should be a way to add a workaround for Mac too. > > (there are of course crashes related to FT, but the story is arguably the same). > > TL;DR: I don't think it's on a todo list of anyone who actually understands this, so the only way to fix it is by yourself or find a concrete person that would be willing to dig into it. Can yo point to where you added you workaround? cheers -ben _______________________________________________ Moose-dev mailing list [hidden email] https://www.list.inf.unibe.ch/listinfo/moose-dev |
On Mon, Dec 19, 2016 at 08:12:29AM +0800, Ben Coman wrote:
> Can yo point to where you added you workaround? The fix is a single line, because I hate myself. interpreterProxy failed ifTrue:[^nil]. https://github.com/pharo-project/pharo-vm/commit/9bf66cf656b176d988e1b0ba74fc37da467e6192 To give you more info: The problem is that memory of canvas forms are not properly pinned, so during garbage collection the form is being moved, but if at the same time the canvas form is being updated and moved, you are accessing wrong memory -> crash. My fix will return prematurely if an error occurs and throws PrimitiveFailed in the image before any wrong memory is accessed. On Roassal side the PrimitiveFailed is catched and a paint cycle is skipped --- this is good enough, as it results only in ocassional flicker that immediately fixes itself instead of crashing the image. It seems that on Mac there are also other places in the BitBlt code where the surface is being accessed without a check. Also be careful not to be misled by the crash dump stack. It took me quite a while to figure out that GrafPort is already operating on wrong data, so it's not GrafPort's fault, but BitBlt's; of course both should possibly be investigated with respect to the mac crash. Final note, personally I found it much easier the debug and manipulate the resulting C code (and recompiling just that), then to modify the Slang code and rebuild the source code and recompile it all (but again, I don't know what is the proper way to work with the VM code). I used this script to trigger the crash https://gist.github.com/peteruhnak/024650ed2594301558df4da913549b54 As the crash depends on memory consumption and "proper" garbage collection cycle, it wasn't the easiest to reproduce, however the script above usually managed to crash it. Having a more reliable way would be nice, but simply triggering GC (nor full GC) wasn't enough because the memory wasn't in the "right" state. Peter _______________________________________________ Moose-dev mailing list [hidden email] https://www.list.inf.unibe.ch/listinfo/moose-dev |
In reply to this post by Peter Uhnak
Thanks Peter for your email.
Alexandre > On Dec 18, 2016, at 10:10 PM, Peter Uhnak <[hidden email]> wrote: > > Hi Alex, > > I certainly understand your frustration, I felt it too on Windows to the point where I stopped using Pharo for couple of weeks out of rage, and then spend in total at least 40+ hours digging into the VM until I added usable workaround for Windows. Not to mention how frustrating was the fixing it. > > Obviously on Mac there are still some unresolved pathways, but it will not magically fix itself. > > The reason for the crash (bad object pinning and moving of canvas memory) has been known for some time now, so more crash.dmps do not give any more insight. > > If this is to be resolved then one of the two have to happen: > > A) Someone who really understands VM/image memory management / GC / pinning fixes the issue. > > B) Someone with Mac (which I don't have) digs around BitBlt code (or wherever it was) and adds a similar workaround. > > Considering the issue has emerged more than a year ago (Spur switch), I don't think (A) is going to happen any time soon, so I guess the only chance is to get elbows greasy and fix it yourself (B) (or you make one of your students suffer :)). > > I didn't have a single Roassal/BitBlt related crash on Windows since my fix was added, so there should be a way to add a workaround for Mac too. > > (there are of course crashes related to FT, but the story is arguably the same). > > TL;DR: I don't think it's on a todo list of anyone who actually understands this, so the only way to fix it is by yourself or find a concrete person that would be willing to dig into it. > > Peter > -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. _______________________________________________ Moose-dev mailing list [hidden email] https://www.list.inf.unibe.ch/listinfo/moose-dev |
In reply to this post by Peter Uhnak
Wow! Wonderful experience report!
Alexandre > On Dec 19, 2016, at 2:03 PM, Peter Uhnak <[hidden email]> wrote: > > On Mon, Dec 19, 2016 at 08:12:29AM +0800, Ben Coman wrote: >> Can yo point to where you added you workaround? > > The fix is a single line, because I hate myself. > > interpreterProxy failed ifTrue:[^nil]. > > https://github.com/pharo-project/pharo-vm/commit/9bf66cf656b176d988e1b0ba74fc37da467e6192 > > To give you more info: > > The problem is that memory of canvas forms are not properly pinned, so during garbage collection the form is being moved, but if at the same time the canvas form is being updated and moved, you are accessing wrong memory -> crash. > > My fix will return prematurely if an error occurs and throws PrimitiveFailed in the image before any wrong memory is accessed. On Roassal side the PrimitiveFailed is catched and a paint cycle is skipped --- this is good enough, as it results only in ocassional flicker that immediately fixes itself instead of crashing the image. > > It seems that on Mac there are also other places in the BitBlt code where the surface is being accessed without a check. > > Also be careful not to be misled by the crash dump stack. It took me quite a while to figure out that GrafPort is already operating on wrong data, so it's not GrafPort's fault, but BitBlt's; of course both should possibly be investigated with respect to the mac crash. > > Final note, personally I found it much easier the debug and manipulate the resulting C code (and recompiling just that), then to modify the Slang code and rebuild the source code and recompile it all (but again, I don't know what is the proper way to work with the VM code). > > I used this script to trigger the crash https://gist.github.com/peteruhnak/024650ed2594301558df4da913549b54 > As the crash depends on memory consumption and "proper" garbage collection cycle, it wasn't the easiest to reproduce, however the script above usually managed to crash it. Having a more reliable way would be nice, but simply triggering GC (nor full GC) wasn't enough because the memory wasn't in the "right" state. > > Peter > _______________________________________________ > Moose-dev mailing list > [hidden email] > https://www.list.inf.unibe.ch/listinfo/moose-dev -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. _______________________________________________ Moose-dev mailing list [hidden email] https://www.list.inf.unibe.ch/listinfo/moose-dev |
In reply to this post by abergel
Just to make clear, I am using the latest VM on Mac OS X, El capitan, latest Pharo.
The crashes I experienced are not new. My original email was not a complain (even if it may be perceived as one), but more to trigger a discussion. Peter did an excellent report of the current state of this issue. Cheers, Alexandre > On Dec 16, 2016, at 4:34 PM, Alexandre Bergel <[hidden email]> wrote: > > Hi! > > Vincent and I are experiencing many crashes from GrafPort>copyBits. It crashes every couple of minutes. > > I know that not much can be done so far. Stability is my biggest concern with Pharo :-( > I use the latest VM. > > Cheers, > Alexandre > > > <crash.dmp> > > > -- > _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: > Alexandre Bergel http://www.bergel.eu > ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. > > > > _______________________________________________ > Moose-dev mailing list > [hidden email] > https://www.list.inf.unibe.ch/listinfo/moose-dev -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. _______________________________________________ Moose-dev mailing list [hidden email] https://www.list.inf.unibe.ch/listinfo/moose-dev |
Free forum by Nabble | Edit this page |