I found a single test method I could use to narrow down the problem (be aware that this might not work for you. I have other (fresh) images where the issue never occurs). The method I used is EpRedoAndUndoVisitorTest>>testClassModification.
I was able to mitigate the hang by making a small modification to the method EpUndoVisitor>>visitClassModification: Simply add
2 seconds asDelay wait. Smalltalk garbageCollect.
or
Smalltalk garbageCollect. 2 seconds asDelay wait.
after the compilation phase. My guess is, that announcements build up (a simple printout showed 1 announcement instance before and 74 instances after the #evaluate:) and do stuff in the system that influence the process scheduling. For instance, a lot of those announcements will probably be weak and need to be finalized at some point.
I don���t have enough experience with the ClassBuilder to go on hunting but this should hopefully give you a good head start.
For testing I used the following command line:
./pharo found_case.image eval "CommandLineTestRunner runPackages: #('Epicea' 'Kernel-Tests���)"
Install Epicea with
./pharo Pharo.image get Epicea 6.5
To isolate the test case I simply moved test classes from Epicea to a differently named package and once I had found the class I started excluding methods (e.g. with ���self fail.��� at the beginning).
HTH,
Max
Yes! with Max Leske we have been isolating the problem and we realized that a fresh image was enough:
1)
2)
./pharo Pharo.image eval "CommandLineTestRunner runClasses: {GLMTreeMorphicTest. GLMWatcherMorphicTest. GLMPagerMorphTest} named: 'x'. CommandLineTestRunner runPackages: #('Kernel-Tests')"
Martin