After working on the shadowed variables thing I ran the suite of tests to see if I had broken anything other than Levente's heart. It was .... odd.
On my Pi4 (running recent Raspberry Pi OS, which is closely related to Debian) it was inconsistent. The first couple of attempts just crashed out leaving no crash.dmp or debug log. A third attempt worked without noticeable problem but reported ~160 errrors. Several other runs have done things like bloating the memory usage over 2GB and sometimes crashed.
A strange behaviour after the no-blowup runs has been the image locking up shortly after, with the SqueakDebug.log file being deleted and recreated very rapidly. On the occasions when I've been able to catch it with some content, the error appears to be related to some window trying to find a tool icon, which involves #allSubclassesDo: which causes problems with an ImageSegmentRootStub being sent #isMeta - which it doesn't understand, and then its own #doesNotUnderstand tries to load the image segment, which doesn't exist.
I've also run all the tests piecemeal on the Pi - select a few, run them, clear the selection, select the next few, rinse and repeat - and that didn't cause any problems. I didn't track the total number of failures in this situation.
I tried the same tests on my x86 ubuntu server (with and without my recent changes) and it did not fail in this way. It reported I think ~15 errors and the image did not lock up post-tests. What *did* surprise me was that the image memory use bloated to over 7Gb! I thought we gave back memory with GCs? Saving the image resulted in a 130Mb file though.
Right now I'm running the saved post-test-x86 image on the Pi to run the tests again just in case it does something different and amusing. It seems that we have some ARM64 related issues still needing work.
Oh, and possibly relevant, both systems would not respond at all to cmd-. whilst running the tests.
tim
--
tim Rowledge; tim(a)rowledge.org; http://www.rowledge.org/tim
Strange OpCodes: MW: Multiply Work
Amongst other aspects of trying out inboarding the sources (like a number of underscore assignments and block arguments being assigned to), the recompile threw up a long list (about 75!) of shadowed variable names.
Right now when a variable name is shadowed we only get a line appearing in the Transcript, which is alarmingly easy to miss. Given how many other alerts we get popping up for undeclared or unused variables, maybe we need to add one more for shadowing.
I'm slowly working down the following list, though one or two methods might well need more careful thought and consultation with the original author.
MenuMorph>>invokeModalAt:in:allowKeyboard: (originalFocusHolder is shadowed)
MenuMorph>>invokeAt:in:allowKeyboard: (originalFocusHolder is shadowed)
SketchEditorMorph>>initializeFor:inBounds:pasteUpMorph: (palette is shadowed)
BookMorph>>insertPageColored: (borderWidth is shadowed)
ObjectsTool>>highlightOnlySubmorph:in: (color is shadowed)
MCMethodDefinition>>printAnnotations:on: (timeStamp is shadowed)
PluggableListMorph>>getFilteredList (fullList is shadowed)
Parser>>collectTemporaryDeclarationsFrom: (mark is shadowed)
TextAnchorTest>>testResizeAnchoredMorph (anchoredMorph is shadowed)
SpaceTally>>spaceForInstance:depth:seen: (depth is shadowed)
BorderedMorph>>doFastWindowReframe: (owner is shadowed)
SoundService class>>defaultOrNil (default is shadowed)
MCClassDefinition>>createClass (traitComposition is shadowed)
ClassInspector>>streamSharedPoolsOn: (object is shadowed)
ClassInspector>>streamClassVariablesOn: (object is shadowed)
Project class>>makeANewLocalGallery (name is shadowed)
Project class>>cleanUpEtoysGarbage (name is shadowed)
ProcessTest>>testResumeTerminatingProcess (semaphore is shadowed)
ProcessTest>>testTerminateTerminatingProcess (semaphore is shadowed)
Context>>directedSuperSend:numArgs: (receiver is shadowed)
TestRunner>>findClassesForCategories: (environment is shadowed)
VariableNode>>variableGetterBlockIn: (index is shadowed)
ContextVariablesInspector>>streamTemporaryVariablesOn: (context is shadowed)
ContextVariablesInspector>>fieldAllTempVars (object is shadowed)
ContextInspector>>streamTemporaryVariablesOn: (context is shadowed)
ContextInspector>>streamStackVariablesOn: (object is shadowed)
TableLayoutTest>>testShrinkWrapIssue (container is shadowed)
TableLayoutTest>>testScrollPaneBarUpdate (container is shadowed)
BasicInspector>>fieldObjectClass (object is shadowed)
BasicInspector>>fieldObjectSize (object is shadowed)
BasicInspector>>streamIndexedVariablesOn: (object is shadowed)
TTFontFileHandle>>printOn: (filename is shadowed)
CompiledCodeInspector>>fieldHeader (object is shadowed)
CompiledCodeInspector>>fieldByteCodes (object is shadowed)
SqueakTheme class>>createDuller (name is shadowed)
Inspector>>streamError:on: (object is shadowed)
Inspector>>getContents (object is shadowed)
Inspector>>streamIndexedVariablesOn: (object is shadowed)
Inspector>>streamOn:truncate:collectFields: (object is shadowed)
Inspector>>valuePane (object is shadowed)
Inspector>>elementGetterAt: (object is shadowed)
SHTextStylerST80>>createTextAttributesForPixelHeight: (font is shadowed)
IndentingListItemMorph>>charactersOccluded (icon is shadowed)
FileList2 class>>endingSpecs (category is shadowed)
VersionsBrowser>>fileOutSelection (file is shadowed)
InspectorField class>>generateExpressionFrom:argumentNames: (name is shadowed)
FtpUrl>>retrieveContents (password is shadowed)
ClassBasedHelpTopic>>updateSubtopics (priority is shadowed)
LazyListMorph>>drawOn: (color is shadowed)
PluggableTreeMorph>>setSelectedPath: (setSelectedPathSelector is shadowed)
StringTest>>testFindLiteral (string is shadowed)
StringTest>>testFindSelector (string is shadowed)
StringTest>>testFindSymbol (string is shadowed)
SqueakMessageCategoriesHelp class>>addAllCategoriesTopicTo: (category is shadowed)
Ascii85ConverterTest>>testEncodeDecode (encoded is shadowed)
MVCMenuMorph>>invokeAt:in:allowKeyboard: (originalFocusHolder is shadowed)
HtmlEntityInspector>>fieldHtml (object is shadowed)
ReleaseBuilder class>>clearCaches (environment is shadowed)
ReleaseBuilder class>>cleanUpBitstreamVeraSans (name is shadowed)
ReleaseBuilder class>>checkForNilCategories (category is shadowed)
RxMatcher>>copy:replacingMatchesWith: (stream is shadowed)
Random>>next:into: (index is shadowed)
Random>>nextBytes:into:startingAt: (index is shadowed)
Random>>hashSeed: (index is shadowed)
PluggableMultiColumnListMorph>>selectionIndex: (listMorph is shadowed)
PluggableMultiColumnListMorph>>hoverRow: (listMorph is shadowed)
PluggableMultiColumnListMorph>>textColor: (listMorph is shadowed)
PluggableMultiColumnListMorph>>getFilteredList (fullList is shadowed)
PluggableMultiColumnListMorph>>rowAtLocation: (listMorph is shadowed)
PluggableMultiColumnListMorph>>updateColumns (listMorph is shadowed)
PluggableMultiColumnListMorph>>rowAboutToBecomeSelected: (listMorph is shadowed)
DockingBarMenuMorph>>popUpAdjacentTo:forHand:from: (owner is shadowed)
SystemWindow>>paneColorToUseWhenNotActive (color is shadowed)
CommunityTheme class>>createDark (name is shadowed)
tim
--
tim Rowledge; tim(a)rowledge.org; http://www.rowledge.org/tim
"How many Kzin does it take to change a lightbulb?”
"None. You can scream and leap in the dark."