[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