Hi folks!
I have a production system running on top of squeak and the vm crashes after about 6 or 7 ours of testing, I need some help understanding the attached crash.dmp because i don't really know what's going on besides of what you can read on the stack dump, apparently theres is a problem with a BalloonEngine drawing primitive, i was wandering if somebody could provide me a hint on what could be failing... The system runs on windows embedded with a 3.8 based image. thanks in advance! -- cheers Gonzalo Romano crash.dmp (8K) Download Attachment |
Gonzalo Romano wrote:
> I have a production system running on top of squeak and the vm > crashes after about 6 or 7 ours of testing, I need some help > understanding the attached crash.dmp because i don't really know what's > going on besides of what you can read on the stack dump, apparently > theres is a problem with a BalloonEngine drawing primitive, i was > wandering if somebody could provide me a hint on what could be failing... Sure. From the exception code (C00000FD) we can learn that the crash is a C stack overflow normally caused by custom plugins or other external libraries having some sort of stack leak/corruption. From the loaded plugins we can see that you're using the FFI to do some stuff which leads me to suspect the problem is caused by one of your FFI calls (there is little reason to assume that one of the other plugins would cause this since they're used heavily in many production environments and have never shown such problems). The first thing you should do is to very carefully screen your FFI calls. Are they declared correctly? Is the calling convention appropriate? Are the argument types correct? The other thing you could do to track this is to have a function which can return ESP from a primitive. In general the value should be identical when you call that primitive, so when it starts go differently, you're on to something. Cheers, - Andreas |
Hi andreas!
thanks for the help and the quick response! It turns out, after doing several test, and having the system run about 48hs straight without crashing, there was something worng with the code that used the balloon engine, so the "sollution" was removing it(:P) even better! the overall perfomance of the system improved :S and some problems we had like i.e. after 5 hours of running, squeak started to do excesive IGC turning everything slow, also stopped. I checked all my FFI calls but they are used once when the system starts and never used again, plus they were used to set the system time and volume and stuff like that. So i solved the problem but i still haven't got a clue of what was happening :S. I used the balloon engine to draw text with TTC fonts and atiliasing. here is the code that did the drawing: drawOn: aCanvas | xStart glyph matrix | (font isNil or:[string isNil or:[string isEmpty]]) ifTrue:[^self]. xStart := 0. aCanvas asBalloonCanvas preserveStateDuring:[:balloonCanvas| balloonCanvas transformBy: self transform. balloonCanvas aaLevel: self smoothing. string do:[:char| "draw only the border" glyph := font at: char. balloonCanvas preserveStateDuring:[:subCanvas| matrix:=(MatrixTransform2x3 withOffset: xStart@0) . subCanvas transformBy: matrix. subCanvas drawGeneralBezierShape: glyph contours color:borderColor borderWidth: (borderWidth *2.3) rounded asInteger borderColor: borderColor. ]. xStart := xStart + glyph advanceWidth. ]. xStart := 0. string do:[:char| "draw the text over the border" glyph := font at: char. balloonCanvas preserveStateDuring:[:subCanvas| matrix:=(MatrixTransform2x3 withOffset: xStart@0). subCanvas transformBy: matrix. subCanvas drawGeneralBezierShape: glyph contours color: color borderWidth:0 borderColor: Color transparent]. xStart := xStart + glyph advanceWidth. ]. ]. PD: I NOW IT SUCKS... On Tue, 24 Nov 2009 13:54:25 -0300, Andreas Raab <[hidden email]> wrote: > Gonzalo Romano wrote: >> I have a production system running on top of squeak and the vm >> crashes after about 6 or 7 ours of testing, I need some help >> understanding the attached crash.dmp because i don't really know what's >> going on besides of what you can read on the stack dump, apparently >> theres is a problem with a BalloonEngine drawing primitive, i was >> wandering if somebody could provide me a hint on what could be >> failing... > > Sure. From the exception code (C00000FD) we can learn that the crash is > a C stack overflow normally caused by custom plugins or other external > libraries having some sort of stack leak/corruption. From the loaded > plugins we can see that you're using the FFI to do some stuff which > leads me to suspect the problem is caused by one of your FFI calls > (there is little reason to assume that one of the other plugins would > cause this since they're used heavily in many production environments > and have never shown such problems). > > The first thing you should do is to very carefully screen your FFI > calls. Are they declared correctly? Is the calling convention > appropriate? Are the argument types correct? The other thing you could > do to track this is to have a function which can return ESP from a > primitive. In general the value should be identical when you call that > primitive, so when it starts go differently, you're on to something. > > Cheers, > - Andreas > > -- Saludos Gonzalo Romano |
Free forum by Nabble | Edit this page |