My current employment work hours and roster have severely curtailed the time I have hacking Pharo, so I've not dug enough to be sure of my observations a few months ago, and this is from memory, but I was starting to develop a suspicion about the uniqueness of ExternalAddress(s).A while ago, in order to fix some stability issues on Windows, a guard was added somewhere that slowed down some operations.�� Looking into this and experimenting with removing the guard I seem to remember VM crashes due to a double-free() of an address, due to there being two ExternalAddresses holding the same external address.����My intuition is that that somewhere an ExternalAddress(a1) pointing at a particular external resource address "xa1" was being copied, so we end up with ExternalAddress(a2) also pointing at "xa1", with��and object b1 holding a1 and object b2 holding a2.�� During finalization of b1, ExternalAddress a1 free()d xa1, and a1 was flagged to avoid double-free()ing.�� But that didn't help when b2 was finalized, since a2 had no indication that xa1 had been free()d.��That is...b1-->a1-->xa1b2 := b1 copy.b2-->a2-->xa1b1 finalize a1 --> free(xa1)b2 finalize a2 --> free(xa1) --> General Protection FaultIt was hard to follow this through and I didn't succeed in tracking down where such a copy might have been made, but the idea simmering in my mind since then is to propose that...���� �� ExternalAddresses be unique in the image and behave like Symbols,���� �� such that trying to copy one returns the identical object.����The idea being that when b2 is finalized, a1 would notice that xa1 had already been free()d and raise a Smalltalk exception rather than a general protection fault.b1-->a1-->xa1b2 := b1 copy.
b2-->a1-->xa1�� �� �� �� ��^^b1 finalize a1 --> free(xa1)b2 finalize a1 --> Smalltalk exceptionI write now in response to Stef since I vaguely remember it being Freetype related.�� But I also remember the issue being FFI related and Freetype is a plugin not FFI.�� So I'm not sure my memory is clear and perhaps I have the "wrong end of the stick" but anyway, rather than hold back longer because of that, perhaps this can stimulate some discussion and at least I learn something to clarify my understanding here.cheers -ben��
On Sat, Oct 28, 2017 at 4:48 PM, Stephane Ducasse <stepharo.self@gmail.com> wrote:
>
> Hi all
>
> I'm and I guess many of you are fedup about the instability that the
> FreeType plugin��produces.
>
> So we need help because clement and esteban are fully booked.
>
> We have three options:
>
> - drop Freetype alltogether
> - rewrite the plugin
> - create a binding using raffaillac sketch
>
> Now we need help. Who is willing to help us?
> Should we try to set up a bounty?
>
> Stef