Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.Sign up
Pharo 7.0.2 - #findOriginClassOf: was sent to nil (when deleting many classes) #2831
Since pharo 7.0.2, I've now started hitting this walkback when deleting 100 classes via a package (the classes are in pairs, and in 50 tags).
It looks like we don't handle the missing class very well.
This was never an issue in 7.0.1 - did somethng change?
Hmmm - its not easily reproducible in a new image unfortunately.
I tried loading:
And then right click on the exercism "project-smalltalk" project in the iceberg repositores view, and then choose Metacello | Install baseline.... and finally type "dev" - that will load the project I was using, and crucially, there is an ExercismWIP package that has 50+ tags with classes in them.
This WIP project is what I have been deleting to test my generation of classes. Initially I thought just opening a few browsers on some of those classes and then deleting the WIP package might do it - however this doesn't cause this issue.
So I think, that it must entail having some browsers open on some of those WIP test cases, and then loading some branches - but even when I do a few branch loads I can't get it to fail.
I guess leave this open for a week (until April) and if it doesn't happen again, we can close it.
I've hit this again - with a different setup. While developing for Exercism, I create a branch for a new exercise. I then worked on that exercise (it was in the ExercismWIP-tournament package). When i got it working, I moved my exercise to Exercism-tournament. I then started working on something else, and realised that I was still on my tournament branch. So I switched branch to master (but opted not reload changes - so it acted like a stash). I then did a pull on origin, and chose to do the experimental merge. This worked ok, but I needed to revert my exercise changes (so they wouldn't be mixed in with my new piece of work). So I then did a reload package on Exercism (fine), but when I did a reload package on ExercismWIP I got the same error. Its the Calypso browsers holding on to my old exercise classes and not processing the updates from the load.
I hit this again, loading code from Exercism, which loaded another version of a class via http (and replaced my hello world test case that was currently visible in the browser). The browser seemed to have an old version of the class and was then triggering this error. Closing this browser, then cured the error.
So it seems like an easy'ish thing to create, but does require a bit of random interaction to achieve.