[squeak-dev] Error selector changed

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Mon Apr 12 20:50:30 UTC 2021


Le lun. 12 avr. 2021 à 21:52, Thiede, Christoph
<Christoph.Thiede at student.hpi.uni-potsdam.de> a écrit :
>
>
> Hi Nicolas,
>
>
> I could not reproduce the problem in a fresh trunk image after 12 attempts. How often do you need to recompile the image in order to experience the error, by average?
>

I do not recompileAll often, and I don't think that recompiling is the
action that is causing the Error, it rather reveals the Error.
The root cause is mysterious, and very hard to track since the
consequences get unnoticed...

For those wondering, the problem is that some Symbol get duplicated
violating the contract:
any two Symbols are either identical (==) or different (~=).

>
> Best,
>
> Christoph
>
> ________________________________
> Von: Squeak-dev <squeak-dev-bounces at lists.squeakfoundation.org> im Auftrag von Nicolas Cellier <nicolas.cellier.aka.nice at gmail.com>
> Gesendet: Montag, 12. April 2021 19:28:35
> An: The general-purpose Squeak developers list
> Betreff: [squeak-dev] Error selector changed
>
> Hi all,
> From time to time, (Compiler recompileAll) fails because some selector
> identity changed...
>
> Indeed, following snippet should always be true, but is sometimes false:
>
>     selector == (Symbol findInterned: selector asString).
>
> In such case, I can attempt a doIt and continue:
>
>     selector beWritableObject; becomeForward: (Symbol findInterned:
> selector asString).
>     oldClass methodDictionary rehash
>
> Sometimes I'm tempted to integrate the workaround directly in code,
> but it would just mask a problem. Any clue on how this can happen?
>
> Nicolas
>
>


More information about the Squeak-dev mailing list