[squeak-dev] Re: vm crash
Gonzalo Romano
gonzalo.romano at gmail.com
Fri Dec 4 13:06:51 UTC 2009
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 at 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 at 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 <andreas.raab at gmx.de>
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
More information about the Squeak-dev
mailing list
|