=============================================================================== Notice: Cannot read stored value of #notExistingClassStoredSettingSTONString. Exception: KeyNotFound: key #MockNotExistingClass not found in SystemDictionary =============================================================================== =============================================================================== Notice: There are references to, 'RPackageNewStubClass' from Undeclared. Check them after this change. =============================================================================== =============================================================================== Notice: There are references to, 'RPackageNewStubClass' from Undeclared. Check them after this change. =============================================================================== =============================================================================== Notice: There are references to, 'RPackageNewStubClass' from Undeclared. Check them after this change. =============================================================================== =============================================================================== Notice: There are references to, 'RPackageNewStubClass' from Undeclared. Check them after this change. =============================================================================== =============================================================================== Notice: There are references to, 'RPackageNewStubClass' from Undeclared. Check them after this change. =============================================================================== =============================================================================== Notice: There are references to, 'RPackageNewStubClass' from Undeclared. Check them after this change. =============================================================================== =============================================================================== Notice: There are references to, #ClassForTestToBeDeleted11 from Undeclared. Check them after this change. =============================================================================== =============================================================================== Notice: There are references to, #TraitForTestToBeDeleted1 from Undeclared. Check them after this change. =============================================================================== =============================================================================== Notice: There are references to, #ClassForTestToBeDeleted44 from Undeclared. Check them after this change. =============================================================================== =============================================================================== Notice: There are references to, #TraitForTestToBeDeleted1 from Undeclared. Check them after this change. =============================================================================== =============================================================================== Notice: There are references to, #ClassForTestToBeDeleted78 from Undeclared. Check them after this change. =============================================================================== =============================================================================== Notice: There are references to, #TraitForTestToBeDeleted1 from Undeclared. Check them after this change. =============================================================================== THERE_BE_DRAGONS_HERE #ifTrue: was sent to nil 5 October 2022 6:02:06.204102 pm VM: Mac OS - x86_64 - 1000 - CoInterpreter * VMMaker-tonel.1 uuid: b649e2e5-aca6-0d00-8caf-91d90b10211c Oct 5 2022 StackToRegisterMappingCogit * VMMaker-tonel.1 uuid: b649e2e5-aca6-0d00-8caf-91d90b10211c Oct 5 2022 v9.0.1-1-gf4fe5697 - Commit: f4fe5697 - Date: 2021-07-22 16:26:24 +0200 Image: Pharo9.0.0 [Build information: Pharo-9.0.0+build.1580.sha.e1bb0fb7b6c4aaadd5106d19b58633c94dff1b69 (64 Bit)] UndefinedObject(Object)>>doesNotUnderstand: #ifTrue: Receiver: nil Arguments and temporary variables: aMessage: ifTrue: DoItIn: arg1 ^ breakAtSpace ifTrue: [ arg1 home return: spa...etc... exception: #ifTrue: was sent to nil resumeValue: nil Receiver's instance variables: nil UndefinedObject>>doesNotUnderstand: #ifTrue: Receiver: nil Arguments and temporary variables: node: nil aMessage: ifTrue: DoItIn: arg1 ^ breakAtSpace ifTrue: [ arg1 home return: spa...etc... exception: nil resumeValue: nil Receiver's instance variables: nil RubCompositionScanner>>DoItIn: Receiver: a RubCompositionScanner Arguments and temporary variables: arg1: RubCompositionScanner>>rightX Receiver's instance variables: destX: 76.20002746582031 lastIndex: 19 destY: 25 stopConditions: a RubTextStopConditions text: a Text for 'AColorSelectorMorph' textStyle: a TextStyle Source Code Pro alignment: 0 leftMargin: 6 rightMargin: 90 font: a LogicalFont familyName: 'Source Code Pro' emphasis: nil pointSize: 1...etc... line: a RubTextLine 11 to: 19 runStopIndex: 19 spaceCount: 0 spaceWidth: 7.8000030517578125 emphasisCode: 0 kern: 0 indentationLevel: 0 baselineY: nil firstDestX: 6 pendingKernX: 0.0 spaceX: 76.20002746582031 lineHeight: 17 baseline: 13 breakableIndex: 10 lineHeightAtBreak: 17 baselineAtBreak: 13 breakAtSpace: false UndefinedObject(ProtoObject)>>mustBeBooleanDeOptimizeIn: Receiver: nil Arguments and temporary variables: context: RubCompositionScanner>>rightX ret: nil cache: an IdentityDictionary(RubCompositionScanner>>#rightX->an IdentityDiction...etc... method: RubCompositionScanner>>#DoItIn: Receiver's instance variables: nil UndefinedObject(ProtoObject)>>mustBeBoolean Receiver: nil Arguments and temporary variables: x Receiver's instance variables: nil RubCompositionScanner>>rightX Receiver: a RubCompositionScanner Arguments and temporary variables: x Receiver's instance variables: destX: 76.20002746582031 lastIndex: 19 destY: 25 stopConditions: a RubTextStopConditions text: a Text for 'AColorSelectorMorph' textStyle: a TextStyle Source Code Pro alignment: 0 leftMargin: 6 rightMargin: 90 font: a LogicalFont familyName: 'Source Code Pro' emphasis: nil pointSize: 1...etc... line: a RubTextLine 11 to: 19 runStopIndex: 19 spaceCount: 0 spaceWidth: 7.8000030517578125 emphasisCode: 0 kern: 0 indentationLevel: 0 baselineY: nil firstDestX: 6 pendingKernX: 0.0 spaceX: 76.20002746582031 lineHeight: 17 baseline: 13 breakableIndex: 10 lineHeightAtBreak: 17 baselineAtBreak: 13 breakAtSpace: false RubTextComposer>>composeEachRectangleIn: Receiver: a RubTextComposer Arguments and temporary variables: rectangles: {(6@44) corner: (90@44)} myLine: a RubTextLine 14 to: 19 lastChar: nil i: 1 Receiver's instance variables: lines: an OrderedCollection(a RubTextLine 1 to: 10 a RubTextLine 11 to: 19) maxRightX: 84.00003051757813 currentY: 44 scanner: a RubCompositionScanner possibleSlide: false nowSliding: false prevIndex: 1 prevLines: #() currCharIndex: 20 startCharIndex: 1 stopCharIndex: 19 deltaCharIndex: 0 theText: a Text for 'AColorSelectorMorph' theContainer: (6@6) corner: (90@1073741823) isFirstLine: false theTextStyle: a TextStyle Source Code Pro defaultLineHeight: 0 actualHeight: 19 actualWidth: 78.00003051757813 numberOfPhysicalLines: 1 prevTextStyle: a TextStyle Source Code Pro prevText: a Text for 'AColorSelectorMorph' prevContainer: (6@6) corner: (90@1073741823) emphasisHere: #() cursorWidth: 2 RubTextComposer>>composeAllRectangles: Receiver: a RubTextComposer Arguments and temporary variables: rectangles: {(6@44) corner: (90@44)} charIndexBeforeLine: 14 numberOfLinesBefore: 2 Receiver's instance variables: lines: an OrderedCollection(a RubTextLine 1 to: 10 a RubTextLine 11 to: 19) maxRightX: 84.00003051757813 currentY: 44 scanner: a RubCompositionScanner possibleSlide: false nowSliding: false prevIndex: 1 prevLines: #() currCharIndex: 20 startCharIndex: 1 stopCharIndex: 19 deltaCharIndex: 0 theText: a Text for 'AColorSelectorMorph' theContainer: (6@6) corner: (90@1073741823) isFirstLine: false theTextStyle: a TextStyle Source Code Pro defaultLineHeight: 0 actualHeight: 19 actualWidth: 78.00003051757813 numberOfPhysicalLines: 1 prevTextStyle: a TextStyle Source Code Pro prevText: a Text for 'AColorSelectorMorph' prevContainer: (6@6) corner: (90@1073741823) emphasisHere: #() cursorWidth: 2 RubTextComposer>>composeOneLine Receiver: a RubTextComposer Arguments and temporary variables: rectangles: {(6@44) corner: (90@44)} Receiver's instance variables: lines: an OrderedCollection(a RubTextLine 1 to: 10 a RubTextLine 11 to: 19) maxRightX: 84.00003051757813 currentY: 44 scanner: a RubCompositionScanner possibleSlide: false nowSliding: false prevIndex: 1 prevLines: #() currCharIndex: 20 startCharIndex: 1 stopCharIndex: 19 deltaCharIndex: 0 theText: a Text for 'AColorSelectorMorph' theContainer: (6@6) corner: (90@1073741823) isFirstLine: false theTextStyle: a TextStyle Source Code Pro defaultLineHeight: 0 actualHeight: 19 actualWidth: 78.00003051757813 numberOfPhysicalLines: 1 prevTextStyle: a TextStyle Source Code Pro prevText: a Text for 'AColorSelectorMorph' prevContainer: (6@6) corner: (90@1073741823) emphasisHere: #() cursorWidth: 2 RubTextComposer>>composeAllLines Receiver: a RubTextComposer Arguments and temporary variables: x Receiver's instance variables: lines: an OrderedCollection(a RubTextLine 1 to: 10 a RubTextLine 11 to: 19) maxRightX: 84.00003051757813 currentY: 44 scanner: a RubCompositionScanner possibleSlide: false nowSliding: false prevIndex: 1 prevLines: #() currCharIndex: 20 startCharIndex: 1 stopCharIndex: 19 deltaCharIndex: 0 theText: a Text for 'AColorSelectorMorph' theContainer: (6@6) corner: (90@1073741823) isFirstLine: false theTextStyle: a TextStyle Source Code Pro defaultLineHeight: 0 actualHeight: 19 actualWidth: 78.00003051757813 numberOfPhysicalLines: 1 prevTextStyle: a TextStyle Source Code Pro prevText: a Text for 'AColorSelectorMorph' prevContainer: (6@6) corner: (90@1073741823) emphasisHere: #() cursorWidth: 2 RubTextComposer>>composeLinesFrom:to:delta:into:priorLines:atY:textStyle:text:container: Receiver: a RubTextComposer Arguments and temporary variables: argStart: 1 argStop: 19 argDelta: 19 argLinesCollection: an OrderedCollection(a RubTextLine 1 to: 3 a RubTextLine 4 ...etc... argPriorLines: an OrderedCollection(a RubTextLine 1 to: 0) argStartY: 6 argTextStyle: a TextStyle Source Code Pro argText: a Text for 'AColorSelectorMorph' argContainer: (6@6) corner: (32@1073741823) Receiver's instance variables: lines: an OrderedCollection(a RubTextLine 1 to: 10 a RubTextLine 11 to: 19) maxRightX: 84.00003051757813 currentY: 44 scanner: a RubCompositionScanner possibleSlide: false nowSliding: false prevIndex: 1 prevLines: #() currCharIndex: 20 startCharIndex: 1 stopCharIndex: 19 deltaCharIndex: 0 theText: a Text for 'AColorSelectorMorph' theContainer: (6@6) corner: (90@1073741823) isFirstLine: false theTextStyle: a TextStyle Source Code Pro defaultLineHeight: 0 actualHeight: 19 actualWidth: 78.00003051757813 numberOfPhysicalLines: 1 prevTextStyle: a TextStyle Source Code Pro prevText: a Text for 'AColorSelectorMorph' prevContainer: (6@6) corner: (90@1073741823) emphasisHere: #() cursorWidth: 2 RubTextComposer>>composeLinesFrom:to:delta:into:priorLines:atY: Receiver: a RubTextComposer Arguments and temporary variables: start: 1 stop: 19 delta: 19 lineColl: an OrderedCollection(a RubTextLine 1 to: 3 a RubTextLine 4 to: 13) priorLines: an OrderedCollection(a RubTextLine 1 to: 0) startingY: 6 Receiver's instance variables: lines: an OrderedCollection(a RubTextLine 1 to: 10 a RubTextLine 11 to: 19) maxRightX: 84.00003051757813 currentY: 44 scanner: a RubCompositionScanner possibleSlide: false nowSliding: false prevIndex: 1 prevLines: #() currCharIndex: 20 startCharIndex: 1 stopCharIndex: 19 deltaCharIndex: 0 theText: a Text for 'AColorSelectorMorph' theContainer: (6@6) corner: (90@1073741823) isFirstLine: false theTextStyle: a TextStyle Source Code Pro defaultLineHeight: 0 actualHeight: 19 actualWidth: 78.00003051757813 numberOfPhysicalLines: 1 prevTextStyle: a TextStyle Source Code Pro prevText: a Text for 'AColorSelectorMorph' prevContainer: (6@6) corner: (90@1073741823) emphasisHere: #() cursorWidth: 2 RubTextComposer>>recomposeFrom:to:delta: Receiver: a RubTextComposer Arguments and temporary variables: start: 1 stop: 19 delta: 19 startLine: 1 newLines: an OrderedCollection(a RubTextLine 1 to: 3 a RubTextLine 4 to: 13) Receiver's instance variables: lines: an OrderedCollection(a RubTextLine 1 to: 10 a RubTextLine 11 to: 19) maxRightX: 84.00003051757813 currentY: 44 scanner: a RubCompositionScanner possibleSlide: false nowSliding: false prevIndex: 1 prevLines: #() currCharIndex: 20 startCharIndex: 1 stopCharIndex: 19 deltaCharIndex: 0 theText: a Text for 'AColorSelectorMorph' theContainer: (6@6) corner: (90@1073741823) isFirstLine: false theTextStyle: a TextStyle Source Code Pro defaultLineHeight: 0 actualHeight: 19 actualWidth: 78.00003051757813 numberOfPhysicalLines: 1 prevTextStyle: a TextStyle Source Code Pro prevText: a Text for 'AColorSelectorMorph' prevContainer: (6@6) corner: (90@1073741823) emphasisHere: #() cursorWidth: 2 RubTextComposer>>replaceFrom:to:with: Receiver: a RubTextComposer Arguments and temporary variables: start: 1 stop: 0 aText: a Text for 'AColorSelectorMorph' Receiver's instance variables: lines: an OrderedCollection(a RubTextLine 1 to: 10 a RubTextLine 11 to: 19) maxRightX: 84.00003051757813 currentY: 44 scanner: a RubCompositionScanner possibleSlide: false nowSliding: false prevIndex: 1 prevLines: #() currCharIndex: 20 startCharIndex: 1 stopCharIndex: 19 deltaCharIndex: 0 theText: a Text for 'AColorSelectorMorph' theContainer: (6@6) corner: (90@1073741823) isFirstLine: false theTextStyle: a TextStyle Source Code Pro defaultLineHeight: 0 actualHeight: 19 actualWidth: 78.00003051757813 numberOfPhysicalLines: 1 prevTextStyle: a TextStyle Source Code Pro prevText: a Text for 'AColorSelectorMorph' prevContainer: (6@6) corner: (90@1073741823) emphasisHere: #() cursorWidth: 2 [ self composer emphasisHere: textArea emphasisHere. self composer replaceFrom: start to: stop with: aText. self text: self composer text. textArea paragraphWasComposedFrom: start to: stop. textArea paragraphReplacedTextFrom: start to: stop with: aText ] in RubParagraph>>replaceFrom:to:with: Receiver: a RubParagraph Arguments and temporary variables: start: 1 stop: 0 aText: a Text for 'AColorSelectorMorph' Receiver's instance variables: text: a Text for 'AColorSelectorMorph' composer: a RubTextComposer container: (0@0) corner: (96@50) drawingEnabled: true textArea: a RubEditingArea(457443072) RubParagraph>>disableDrawingWhile: Receiver: a RubParagraph Arguments and temporary variables: aBlock: [ self composer emphasisHere: textArea emphasisHere. self compos...etc... Receiver's instance variables: text: a Text for 'AColorSelectorMorph' composer: a RubTextComposer container: (0@0) corner: (96@50) drawingEnabled: true textArea: a RubEditingArea(457443072) RubParagraph>>replaceFrom:to:with: Receiver: a RubParagraph Arguments and temporary variables: start: 1 stop: 0 aText: a Text for 'AColorSelectorMorph' Receiver's instance variables: text: a Text for 'AColorSelectorMorph' composer: a RubTextComposer container: (0@0) corner: (96@50) drawingEnabled: true textArea: a RubEditingArea(457443072) RubCurrentLineBarDecorator(RubParagraphDecorator)>>replaceFrom:to:with: Receiver: a RubCurrentLineBarDecorator Arguments and temporary variables: start: 1 stop: 0 aText: a Text for 'AColorSelectorMorph' Receiver's instance variables: next: a RubExtraSelectionDecorator RubShoutStylerDecorator>>replaceFrom:to:with: Receiver: a RubShoutStylerDecorator Arguments and temporary variables: start: 1 stop: 0 aText: a Text for 'AColorSelectorMorph' Receiver's instance variables: next: a RubCurrentLineBarDecorator styler: a SHRBTextStyler text: nil replaceStart: nil replaceStop: nil RubEditingArea(RubAbstractTextArea)>>privateReplaceFrom:to:with: Receiver: a RubEditingArea(457443072) Arguments and temporary variables: start: 1 stop: 0 aText: a Text for 'AColorSelectorMorph' Receiver's instance variables: bounds: (0@0) corner: (96@50) owner: a TransformWithLayoutMorph(720352512) submorphs: an Array(a RubCursor(527485952) a RubPrimarySelectionMorph(644165120...etc... fullBounds: (0@0) corner: (96@50) color: Color transparent extension: a MorphExtension (1019984640) [other: (announcer -> an Announcer)] model: a MorphicTextAdapter paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(593893120) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: nil margins: a Margin top: 6 left: 6 bottom: 6 right: 6 readOnly: false menuAllowed: nil editingMode: a RubSmalltalkScriptingMode cursor: a RubCursor(527485952) segments: nil getMenuPolicy: a RubPluggableGetMenuPolicy mouseDownPoint: nil completionEngine: a CoCompletionEngine maxLength: nil findReplaceService: a SpRubFindReplaceService wrapped: true editorClass: RubSmalltalkEditor RubSmalltalkEditor(RubTextEditor)>>zapSelectionWith: Receiver: a RubSmalltalkEditor Arguments and temporary variables: aText: a Text for 'AColorSelectorMorph' start: 1 stop: 1 Receiver's instance variables: defaultKeymappingIndex: nil textArea: a RubEditingArea(457443072) notificationStrategy: a RubTextInsertionStrategy completionEngine: a CoCompletionEngine RubSmalltalkEditor(RubTextEditor)>>replace:with:and: Receiver: a RubSmalltalkEditor Arguments and temporary variables: xoldInterval: (1 to: 0) newText: a Text for 'AColorSelectorMorph' selectingBlock: [] prevSel: a Text for '' currInterval: (1 to: 0) Receiver's instance variables: defaultKeymappingIndex: nil textArea: a RubEditingArea(457443072) notificationStrategy: a RubTextInsertionStrategy completionEngine: a CoCompletionEngine RubSmalltalkEditor(RubTextEditor)>>replaceSelectionWith: Receiver: a RubSmalltalkEditor Arguments and temporary variables: aText: a Text for 'AColorSelectorMorph' Receiver's instance variables: defaultKeymappingIndex: nil textArea: a RubEditingArea(457443072) notificationStrategy: a RubTextInsertionStrategy completionEngine: a CoCompletionEngine [ | s | s := self validateTextFrom: aStringOrText. s = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: s. self deselect ] ] in [ self beEditableWhile: [ | s | s := self validateTextFrom: aStringOrText. s = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: s. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: Receiver: a RubEditingArea(457443072) Arguments and temporary variables: aStringOrText: a Text for 'AColorSelectorMorph' s: a Text for 'AColorSelectorMorph' Receiver's instance variables: bounds: (0@0) corner: (96@50) owner: a TransformWithLayoutMorph(720352512) submorphs: an Array(a RubCursor(527485952) a RubPrimarySelectionMorph(644165120...etc... fullBounds: (0@0) corner: (96@50) color: Color transparent extension: a MorphExtension (1019984640) [other: (announcer -> an Announcer)] model: a MorphicTextAdapter paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(593893120) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: nil margins: a Margin top: 6 left: 6 bottom: 6 right: 6 readOnly: false menuAllowed: nil editingMode: a RubSmalltalkScriptingMode cursor: a RubCursor(527485952) segments: nil getMenuPolicy: a RubPluggableGetMenuPolicy mouseDownPoint: nil completionEngine: a CoCompletionEngine maxLength: nil findReplaceService: a SpRubFindReplaceService wrapped: true editorClass: RubSmalltalkEditor FullBlockClosure(BlockClosure)>>ensure: Receiver: [ | s | s := self validateTextFrom: aStringOrText. s = self text ifF...etc... Arguments and temporary variables: aBlock: [ self readOnly: wasEditable] complete: nil returnValue: nil Receiver's instance variables: outerContext: [ self beEditableWhile: [ | s | s := self validate...etc... startpc: a CompiledBlock: [ | s | s := self validateTextFrom: aStrin...etc... numArgs: 0 receiver: a RubEditingArea(457443072) RubEditingArea(RubAbstractTextArea)>>beEditableWhile: Receiver: a RubEditingArea(457443072) Arguments and temporary variables: aBlock: [ | s | s := self validateTextFrom: aStringOrText. s = ...etc... wasEditable: false Receiver's instance variables: bounds: (0@0) corner: (96@50) owner: a TransformWithLayoutMorph(720352512) submorphs: an Array(a RubCursor(527485952) a RubPrimarySelectionMorph(644165120...etc... fullBounds: (0@0) corner: (96@50) color: Color transparent extension: a MorphExtension (1019984640) [other: (announcer -> an Announcer)] model: a MorphicTextAdapter paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(593893120) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: nil margins: a Margin top: 6 left: 6 bottom: 6 right: 6 readOnly: false menuAllowed: nil editingMode: a RubSmalltalkScriptingMode cursor: a RubCursor(527485952) segments: nil getMenuPolicy: a RubPluggableGetMenuPolicy mouseDownPoint: nil completionEngine: a CoCompletionEngine maxLength: nil findReplaceService: a SpRubFindReplaceService wrapped: true editorClass: RubSmalltalkEditor [ self beEditableWhile: [ | s | s := self validateTextFrom: aStringOrText. s = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: s. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: Receiver: a RubEditingArea(457443072) Arguments and temporary variables: aStringOrText: a Text for 'AColorSelectorMorph' Receiver's instance variables: bounds: (0@0) corner: (96@50) owner: a TransformWithLayoutMorph(720352512) submorphs: an Array(a RubCursor(527485952) a RubPrimarySelectionMorph(644165120...etc... fullBounds: (0@0) corner: (96@50) color: Color transparent extension: a MorphExtension (1019984640) [other: (announcer -> an Announcer)] model: a MorphicTextAdapter paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(593893120) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: nil margins: a Margin top: 6 left: 6 bottom: 6 right: 6 readOnly: false menuAllowed: nil editingMode: a RubSmalltalkScriptingMode cursor: a RubCursor(527485952) segments: nil getMenuPolicy: a RubPluggableGetMenuPolicy mouseDownPoint: nil completionEngine: a CoCompletionEngine maxLength: nil findReplaceService: a SpRubFindReplaceService wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>handleEdit: Receiver: a RubEditingArea(457443072) Arguments and temporary variables: editBlock: [ self beEditableWhile: [ | s | s := self validateTex...etc... Receiver's instance variables: bounds: (0@0) corner: (96@50) owner: a TransformWithLayoutMorph(720352512) submorphs: an Array(a RubCursor(527485952) a RubPrimarySelectionMorph(644165120...etc... fullBounds: (0@0) corner: (96@50) color: Color transparent extension: a MorphExtension (1019984640) [other: (announcer -> an Announcer)] model: a MorphicTextAdapter paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(593893120) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: nil margins: a Margin top: 6 left: 6 bottom: 6 right: 6 readOnly: false menuAllowed: nil editingMode: a RubSmalltalkScriptingMode cursor: a RubCursor(527485952) segments: nil getMenuPolicy: a RubPluggableGetMenuPolicy mouseDownPoint: nil completionEngine: a CoCompletionEngine maxLength: nil findReplaceService: a SpRubFindReplaceService wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>updateTextWith: Receiver: a RubEditingArea(457443072) Arguments and temporary variables: aStringOrText: a Text for 'AColorSelectorMorph' Receiver's instance variables: bounds: (0@0) corner: (96@50) owner: a TransformWithLayoutMorph(720352512) submorphs: an Array(a RubCursor(527485952) a RubPrimarySelectionMorph(644165120...etc... fullBounds: (0@0) corner: (96@50) color: Color transparent extension: a MorphExtension (1019984640) [other: (announcer -> an Announcer)] model: a MorphicTextAdapter paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(593893120) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: nil margins: a Margin top: 6 left: 6 bottom: 6 right: 6 readOnly: false menuAllowed: nil editingMode: a RubSmalltalkScriptingMode cursor: a RubCursor(527485952) segments: nil getMenuPolicy: a RubPluggableGetMenuPolicy mouseDownPoint: nil completionEngine: a CoCompletionEngine maxLength: nil findReplaceService: a SpRubFindReplaceService wrapped: true editorClass: RubSmalltalkEditor RubTextScrollPane>>updateTextWith: Receiver: a RubTextScrollPane(593893120) Arguments and temporary variables: stringOrText: a Text for 'AColorSelectorMorph' Receiver's instance variables: bounds: (125.0@75.0) corner: (234.0@92.0) owner: a RubPluggableTextMorph(391564288) submorphs: an Array(a RubScrollBar(59231488) a TransformWithLayoutMorph(7203525...etc... fullBounds: (125@75) corner: (234@117) color: Color transparent extension: a MorphExtension (145216768) [other: (announcer -> an Announcer)] scroller: a TransformWithLayoutMorph(720352512) hScrollbar: a RubScrollBar(44936192) vScrollbar: a RubScrollBar(59231488) drawFocusBorder: true RubPluggableTextMorph(RubScrolledTextMorph)>>updateTextWith: Receiver: a RubPluggableTextMorph(391564288) Arguments and temporary variables: stringOrText: a Text for 'AColorSelectorMorph' Receiver's instance variables: bounds: (124.0@74.0) corner: (235.0@93.0) owner: a PanelMorph(351942400) submorphs: an Array(a RubTextScrollPane(593893120) a RubAdornmentDisplayer(9278...etc... fullBounds: (124@74) corner: (235@93) color: Color white extension: a MorphExtension (129863680) [other: (announcer -> an Announcer) (d...etc... hasEditingConflicts: false hasUnacceptedEdits: false alwaysAccept: nil setTextSelector: #accept:notifying: getTextSelector: #getText getSelectionSelector: #readSelection setSelectionSelector: #setSelection: autoAccept: false scrollPane: a RubTextScrollPane(593893120) rulers: a SortedCollection(a RubAdornmentDisplayer(927832576)) enabled: true highlights: an OrderedCollection() getBackgroundColorSelector: nil askBeforeDiscardingEdits: true getEnabledSelector: nil RubPluggableTextMorph>>update: Receiver: a RubPluggableTextMorph(391564288) Arguments and temporary variables: aSymbol: #getText Receiver's instance variables: bounds: (124.0@74.0) corner: (235.0@93.0) owner: a PanelMorph(351942400) submorphs: an Array(a RubTextScrollPane(593893120) a RubAdornmentDisplayer(9278...etc... fullBounds: (124@74) corner: (235@93) color: Color white extension: a MorphExtension (129863680) [other: (announcer -> an Announcer) (d...etc... hasEditingConflicts: false hasUnacceptedEdits: false alwaysAccept: nil setTextSelector: #accept:notifying: getTextSelector: #getText getSelectionSelector: #readSelection setSelectionSelector: #setSelection: autoAccept: false scrollPane: a RubTextScrollPane(593893120) rulers: a SortedCollection(a RubAdornmentDisplayer(927832576)) enabled: true highlights: an OrderedCollection() getBackgroundColorSelector: nil askBeforeDiscardingEdits: true getEnabledSelector: nil [:aDependent | aDependent update: aParameter] in MorphicTextAdapter(Model)>>changed: Receiver: a MorphicTextAdapter Arguments and temporary variables: aParameter: #getText aDependent: a RubPluggableTextMorph(391564288) Receiver's instance variables: dependents: a DependentsArray(a RubPluggableTextMorph(391564288)) announcer: nil model: a TextPresenter widget: a RubPluggableTextMorph(391564288) selector: nil DependentsArray>>do: Receiver: a DependentsArray(a RubPluggableTextMorph(391564288)) Arguments and temporary variables: aBlock: [:aDependent | aDependent update: aParameter] dep: a RubPluggableTextMorph(391564288) i: 1 Receiver's instance variables: a DependentsArray(a RubPluggableTextMorph(391564288)) MorphicTextAdapter(Model)>>changed: Receiver: a MorphicTextAdapter Arguments and temporary variables: aParameter: #getText Receiver's instance variables: dependents: a DependentsArray(a RubPluggableTextMorph(391564288)) announcer: nil model: a TextPresenter widget: a RubPluggableTextMorph(391564288) selector: nil MorphicTextAdapter(AbstractAdapter)>>update: Receiver: a MorphicTextAdapter Arguments and temporary variables: aSymbol: #getText Receiver's instance variables: dependents: a DependentsArray(a RubPluggableTextMorph(391564288)) announcer: nil model: a TextPresenter widget: a RubPluggableTextMorph(391564288) selector: nil [:aDependent | aDependent update: aParameter] in TextPresenter(Model)>>changed: Receiver: a TextPresenter Arguments and temporary variables: aParameter: #getText aDependent: a MorphicTextAdapter Receiver's instance variables: dependents: a DependentsArray(a MorphicTextAdapter) announcer: an Announcer focusOrder: nil owner: a ListSelectionPresenter window: a NewValueHolder[ nil ] spec: a SpecWrapper extentHolder: a NewValueHolder[ nil ] needRebuild: a NewValueHolder[ true ] additionalKeyBindings: a Dictionary() keyStrokesForNextFocusHolder: a CollectionValueHolder[ an Array() ] keyStrokesForPreviousFocusHolder: a CollectionValueHolder[ an Array() ] windowIcon: a NewValueHolder[ nil ] aboutText: a NewValueHolder[ nil ] askOkToClose: a NewValueHolder[ false ] titleHolder: a CollectionValueHolder[ 'Text' ] helpHolder: a NewValueHolder[ nil ] borderWidth: a NewValueHolder[ 0 ] borderColor: a NewValueHolder[ Color transparent ] enabledHolder: a NewValueHolder[ true ] dragEnabled: a NewValueHolder[ false ] dropEnabled: a NewValueHolder[ false ] dragTransformationBlock: a NewValueHolder[ [ :item :source | item ] ] wantDropBlock: a NewValueHolder[ [ :draggedItem :event :source | self dropEnabl...etc... acceptDropBlock: a NewValueHolder[ [ :draggedItem :event :source | ] ] transferBlock: a NewValueHolder[ [:passenger :source | self defaultTransferFor:...etc... color: a NewValueHolder[ Color white ] aboutToStyleHolder: a NewValueHolder[ [ false ] ] behaviorHolder: a NewValueHolder[ nil ] textHolder: a CollectionValueHolder[ 'AColorSelectorMorph' ] actionToPerformHolder: a NewValueHolder[ [ :text | ] ] readSelectionHolder: a NewValueHolder[ [ selection value ] ] actionPerformedHolder: a CollectionValueHolder[ '' ] isCodeCompletionAllowedHolder: a NewValueHolder[ true ] doItContext: a NewValueHolder[ nil ] doItReceiver: a NewValueHolder[ nil ] hasUnacceptedEdits: a NewValueHolder[ false ] selection: a CollectionValueHolder[ (1 to: 0) ] scrollValue: a NewValueHolder[ (0@0) ] menuHolder: a NewValueHolder[ [ self getMenu ] ] autoAccept: a NewValueHolder[ false ] wantsVisualFeedback: a NewValueHolder[ true ] askBeforeDiscardingEdits: a NewValueHolder[ true ] isForSmalltalkCodeHolder: a NewValueHolder[ true ] DependentsArray>>do: Receiver: a DependentsArray(a MorphicTextAdapter) Arguments and temporary variables: aBlock: [:aDependent | aDependent update: aParameter] dep: a MorphicTextAdapter i: 1 Receiver's instance variables: a DependentsArray(a MorphicTextAdapter) TextPresenter(Model)>>changed: Receiver: a TextPresenter Arguments and temporary variables: aParameter: #getText Receiver's instance variables: dependents: a DependentsArray(a MorphicTextAdapter) announcer: an Announcer focusOrder: nil owner: a ListSelectionPresenter window: a NewValueHolder[ nil ] spec: a SpecWrapper extentHolder: a NewValueHolder[ nil ] needRebuild: a NewValueHolder[ true ] additionalKeyBindings: a Dictionary() keyStrokesForNextFocusHolder: a CollectionValueHolder[ an Array() ] keyStrokesForPreviousFocusHolder: a CollectionValueHolder[ an Array() ] windowIcon: a NewValueHolder[ nil ] aboutText: a NewValueHolder[ nil ] askOkToClose: a NewValueHolder[ false ] titleHolder: a CollectionValueHolder[ 'Text' ] helpHolder: a NewValueHolder[ nil ] borderWidth: a NewValueHolder[ 0 ] borderColor: a NewValueHolder[ Color transparent ] enabledHolder: a NewValueHolder[ true ] dragEnabled: a NewValueHolder[ false ] dropEnabled: a NewValueHolder[ false ] dragTransformationBlock: a NewValueHolder[ [ :item :source | item ] ] wantDropBlock: a NewValueHolder[ [ :draggedItem :event :source | self dropEnabl...etc... acceptDropBlock: a NewValueHolder[ [ :draggedItem :event :source | ] ] transferBlock: a NewValueHolder[ [:passenger :source | self defaultTransferFor:...etc... color: a NewValueHolder[ Color white ] aboutToStyleHolder: a NewValueHolder[ [ false ] ] behaviorHolder: a NewValueHolder[ nil ] textHolder: a CollectionValueHolder[ 'AColorSelectorMorph' ] actionToPerformHolder: a NewValueHolder[ [ :text | ] ] readSelectionHolder: a NewValueHolder[ [ selection value ] ] actionPerformedHolder: a CollectionValueHolder[ '' ] isCodeCompletionAllowedHolder: a NewValueHolder[ true ] doItContext: a NewValueHolder[ nil ] doItReceiver: a NewValueHolder[ nil ] hasUnacceptedEdits: a NewValueHolder[ false ] selection: a CollectionValueHolder[ (1 to: 0) ] scrollValue: a NewValueHolder[ (0@0) ] menuHolder: a NewValueHolder[ [ self getMenu ] ] autoAccept: a NewValueHolder[ false ] wantsVisualFeedback: a NewValueHolder[ true ] askBeforeDiscardingEdits: a NewValueHolder[ true ] isForSmalltalkCodeHolder: a NewValueHolder[ true ] --- The full stack --- UndefinedObject(Object)>>doesNotUnderstand: #ifTrue: UndefinedObject>>doesNotUnderstand: #ifTrue: RubCompositionScanner>>DoItIn: UndefinedObject(ProtoObject)>>mustBeBooleanDeOptimizeIn: UndefinedObject(ProtoObject)>>mustBeBoolean RubCompositionScanner>>rightX RubTextComposer>>composeEachRectangleIn: RubTextComposer>>composeAllRectangles: RubTextComposer>>composeOneLine RubTextComposer>>composeAllLines RubTextComposer>>composeLinesFrom:to:delta:into:priorLines:atY:textStyle:text:container: RubTextComposer>>composeLinesFrom:to:delta:into:priorLines:atY: RubTextComposer>>recomposeFrom:to:delta: RubTextComposer>>replaceFrom:to:with: [ self composer emphasisHere: textArea emphasisHere. self composer replaceFrom: start to: stop with: aText. self text: self composer text. textArea paragraphWasComposedFrom: start to: stop. textArea paragraphReplacedTextFrom: start to: stop with: aText ] in RubParagraph>>replaceFrom:to:with: RubParagraph>>disableDrawingWhile: RubParagraph>>replaceFrom:to:with: RubCurrentLineBarDecorator(RubParagraphDecorator)>>replaceFrom:to:with: RubShoutStylerDecorator>>replaceFrom:to:with: RubEditingArea(RubAbstractTextArea)>>privateReplaceFrom:to:with: RubSmalltalkEditor(RubTextEditor)>>zapSelectionWith: RubSmalltalkEditor(RubTextEditor)>>replace:with:and: RubSmalltalkEditor(RubTextEditor)>>replaceSelectionWith: [ | s | s := self validateTextFrom: aStringOrText. s = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: s. self deselect ] ] in [ self beEditableWhile: [ | s | s := self validateTextFrom: aStringOrText. s = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: s. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: FullBlockClosure(BlockClosure)>>ensure: RubEditingArea(RubAbstractTextArea)>>beEditableWhile: [ self beEditableWhile: [ | s | s := self validateTextFrom: aStringOrText. s = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: s. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: RubEditingArea(RubAbstractTextArea)>>handleEdit: RubEditingArea(RubAbstractTextArea)>>updateTextWith: RubTextScrollPane>>updateTextWith: RubPluggableTextMorph(RubScrolledTextMorph)>>updateTextWith: RubPluggableTextMorph>>update: [:aDependent | aDependent update: aParameter] in MorphicTextAdapter(Model)>>changed: DependentsArray>>do: MorphicTextAdapter(Model)>>changed: MorphicTextAdapter(AbstractAdapter)>>update: [:aDependent | aDependent update: aParameter] in TextPresenter(Model)>>changed: DependentsArray>>do: TextPresenter(Model)>>changed: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [ self changed: #getText ] in TextPresenter>>registerEvents FullBlockClosure(BlockClosure)>>cull: FullBlockClosure(BlockClosure)>>cull:cull: FullBlockClosure(BlockClosure)>>cull:cull:cull: FullBlockClosure(BlockClosure)>>cull:cull:cull:cull: [ :announcement :ann | aBlock cull: announcement newValue cull: announcement oldValue cull: announcement cull: ann ] in CollectionValueHolder(Model)>>whenChangedDo: FullBlockClosure(BlockClosure)>>cull:cull: [action cull: anAnnouncement cull: announcer] in AnnouncementSubscription>>deliver: FullBlockClosure(BlockClosure)>>on:do: [ Processor terminateActive ] in BlockClosure>>on:fork: ------------------------------------------------------------------------------- Processes and their stacks: Process: a Process in InputEventFetcher>>waitForInput stack: InputEventFetcher>>waitForInput InputEventFetcher>>eventLoop Processor in InputEventFetcher>>installEventLoop [ self value. Processor terminateActive ] asContext in BlockClosure>>newProcess ------------------------------ Process: a Process in ProcessorScheduler class>>idleProcess stack: ProcessorScheduler class>>idleProcess [self idleProcess] in ProcessorScheduler class>>startUp [self value. Processor terminateActive] in FullBlockClosure(BlockClosure)>>newProcess ------------------------------ Process: a Process in WeakArray class>>finalizationProcess stack: WeakArray class>>finalizationProcess [self finalizationProcess] in WeakArray class>>restartFinalizationProcess [self value. Processor terminateActive] in FullBlockClosure(BlockClosure)>>newProcess ------------------------------ Process: a Process in [ testCompleted := true. watchDogSemaphore signal. "signal that test case is completed" self cleanUpAfterTest ] in TestExecutionEnvironment>>runTestCase: stack: [ testCompleted := true. watchDogSemaphore signal. "signal that test case is completed" self cleanUpAfterTest ] in TestExecutionEnvironment>>runTestCase: FullBlockClosure(BlockClosure)>>ensure: TestExecutionEnvironment>>runTestCase: CurrentExecutionEnvironment class>>runTestCase: MenuPresenterTest(TestCase)>>runCaseManaged [aTestCase runCaseManaged. aTestCase shouldPass ifTrue: [ self recordPassOf: aTestCase ] ifFalse: [ self recordUnexpectedPassOf: aTestCase ] ] in [ [aTestCase runCaseManaged. aTestCase shouldPass ifTrue: [ self recordPassOf: aTestCase ] ifFalse: [ self recordUnexpectedPassOf: aTestCase ] ] on: Exception do: [ :exc | exc recordResultOf: aTestCase inHDTestReport: self ] ] in HDTestReport>>runCase: FullBlockClosure(BlockClosure)>>on:do: [ [aTestCase runCaseManaged. aTestCase shouldPass ifTrue: [ self recordPassOf: aTestCase ] ifFalse: [ self recordUnexpectedPassOf: aTestCase ] ] on: Exception do: [ :exc | exc recordResultOf: aTestCase inHDTestReport: self ] ] in HDTestReport>>runCase: Time class>>microsecondsToRun: Time class>>millisecondsToRun: FullBlockClosure(BlockClosure)>>timeToRun [ time := aBlock timeToRun ] in HDTestReport>>reportTestCase:runBlock: FullBlockClosure(BlockClosure)>>ensure: HDTestReport>>newLogDuring: HDTestReport>>reportTestCase:runBlock: HDTestReport>>runCase: MenuPresenterTest(TestCase)>>run: [ :each | each run: self ] in [ suite tests do: [ :each | each run: self ] ] in HDTestReport>>runAll OrderedCollection>>do: [ suite tests do: [ :each | each run: self ] ] in HDTestReport>>runAll ------------------------------ Process: a Process in MorphicRenderLoop>>doOneCycleWhile: stack: MorphicRenderLoop>>doOneCycleWhile: [ MorphicRenderLoop new doOneCycleWhile: [ true ] ] in MorphicUIManager>>spawnNewProcess [self value. Processor terminateActive] in FullBlockClosure(BlockClosure)>>newProcess ------------------------------ Process: a Process in DelayMicrosecondTicker>>waitForUserSignalled:orExpired: stack: DelayMicrosecondTicker>>waitForUserSignalled:orExpired: [ [runTimerEventLoop] whileTrue: [ |nowTick| "Warning! Stepping the following line may lock the Image. Use or ." ticker waitForUserSignalled: timingSemaphore orExpired: activeDelay. "Invoke the api back-ends, which set the transfer-variable to nil" suspendSemaphore ifNotNil: [ self suspendAtTimingPriority ]. delayToStart ifNotNil: [ self scheduleAtTimingPriority ]. delayToStop ifNotNil: [ self unscheduleAtTimingPriority ]. "Signal any expired delays" nowTick := ticker nowTick. [ activeDelay notNil and: [nowTick >= activeDelay resumptionTick] ] whileTrue: [ activeDelay timingPrioritySignalExpired. activeDelay := suspendedDelays removeFirstOrNil ]. ] ] in DelaySemaphoreScheduler(DelayBasicScheduler)>>runBackendLoopAtTimingPriority FullBlockClosure(BlockClosure)>>ensure: DelaySemaphoreScheduler(DelayBasicScheduler)>>runBackendLoopAtTimingPriority [ self runBackendLoopAtTimingPriority ] in DelaySemaphoreScheduler(DelayBasicScheduler)>>startTimerEventLoopPriority: [self value. Processor terminateActive] in FullBlockClosure(BlockClosure)>>newProcess ------------------------------ Process: a Process in [ [ true ] whileTrue: [ semaphore wait. [self executeCallback: self nextPendingCallback] on: Exception fork: [:ex | ex pass ] ] ] in TFCallbackQueue>>forkCallbackProcess stack: [ [ true ] whileTrue: [ semaphore wait. [self executeCallback: self nextPendingCallback] on: Exception fork: [:ex | ex pass ] ] ] in TFCallbackQueue>>forkCallbackProcess [self value. Processor terminateActive] in FullBlockClosure(BlockClosure)>>newProcess ------------------------------ Process: a Process in [self value. Processor terminateActive] in FullBlockClosure(BlockClosure)>>newProcess stack: [self value. Processor terminateActive] in FullBlockClosure(BlockClosure)>>newProcess ------------------------------ Process: a Process in [ [root insertSender: thisContext. currentContext jump] on: exception do: handlerAction. Processor terminateActive] in Process>>on:do: stack: [ [root insertSender: thisContext. currentContext jump] on: exception do: handlerAction. Processor terminateActive] in Process>>on:do: ------------------------------ Process: a Process in [ [root insertSender: thisContext. currentContext jump] on: exception do: handlerAction. Processor terminateActive] in Process>>on:do: stack: [ [root insertSender: thisContext. currentContext jump] on: exception do: handlerAction. Processor terminateActive] in Process>>on:do: ------------------------------ Process: a Process in [self value. Processor terminateActive] in FullBlockClosure(BlockClosure)>>newProcess stack: [self value. Processor terminateActive] in FullBlockClosure(BlockClosure)>>newProcess ------------------------------ Process: a Process in [self value. Processor terminateActive] in FullBlockClosure(BlockClosure)>>newProcess stack: [self value. Processor terminateActive] in FullBlockClosure(BlockClosure)>>newProcess ------------------------------ Process: a Process in Process>>doTerminationFromYourself stack: Process>>doTerminationFromYourself ------------------------------ Process: a Process in Process>>doTerminationFromYourself stack: Process>>doTerminationFromYourself ------------------------------ Process: a Process in [self schedule. "It is critical that the following has no suspension point so that the test and the wait primitive are atomic. In addition, if the delay is no longer being waited on while entering the way we know that it is expired because the delay has already fired." beingWaitedOn ifTrue:[delaySemaphore wait] ifFalse:[expired := true]] in DelayWaitTimeout>>wait stack: [self schedule. "It is critical that the following has no suspension point so that the test and the wait primitive are atomic. In addition, if the delay is no longer being waited on while entering the way we know that it is expired because the delay has already fired." beingWaitedOn ifTrue:[delaySemaphore wait] ifFalse:[expired := true]] in DelayWaitTimeout>>wait FullBlockClosure(BlockClosure)>>ensure: DelayWaitTimeout>>wait Semaphore>>wait: [ "waiting new test case" watchDogSemaphore wait. "waiting while test completes" [timeIsGone := watchDogSemaphore wait: maxTimeForTest. testCompleted] whileFalse: [ "this subloop allows to dynamically change time limit and restart watch dog" timeIsGone ifTrue: [ "The main purpose of following condition is to ignore timeout when test is under debug. Test process is suspended only when it is debugged" mainTestProcess isSuspended ifFalse: [ mainTestProcess signalException: TestTookTooMuchTime new]] ]. ] in TestExecutionEnvironment>>watchDogLoop FullBlockClosure(BlockClosure)>>repeat TestExecutionEnvironment>>watchDogLoop [self watchDogLoop] in TestExecutionEnvironment>>startWatchDog [self value. Processor terminateActive] in FullBlockClosure(BlockClosure)>>newProcess ------------------------------ Process: a Process in Process>>doTerminationFromYourself stack: Process>>doTerminationFromYourself ------------------------------ Process: a Process in nil stack: Array(SequenceableCollection)>>do: [:logger | logger nextPutAll: 'Processes and their stacks: ';cr. Process allInstances do: [:each | | ctx | logger nextPutAll: 'Process: '; print: each; cr; nextPutAll: ' stack:'; cr; cr. ctx := each isActiveProcess ifTrue: [ thisContext sender ] ifFalse: [ each suspendedContext ]. ctx ifNotNil: [ (ctx stackOfSize: 20) do: [:s | logger print: s; cr ]]. logger nextPutAll: '------------------------------'; cr; cr. ]] in CommandLineUIManager>>quitFrom:withMessage: [ logStream := self openLog. aMonadicBlock value: logStream. ] in SmalltalkImage>>logDuring: FullBlockClosure(BlockClosure)>>ensure: SmalltalkImage>>logDuring: [ Smalltalk logError: aString inContext: aContext. " Print stacks of all current processes " Smalltalk logDuring: [:logger | logger nextPutAll: 'Processes and their stacks: ';cr. Process allInstances do: [:each | | ctx | logger nextPutAll: 'Process: '; print: each; cr; nextPutAll: ' stack:'; cr; cr. ctx := each isActiveProcess ifTrue: [ thisContext sender ] ifFalse: [ each suspendedContext ]. ctx ifNotNil: [ (ctx stackOfSize: 20) do: [:s | logger print: s; cr ]]. logger nextPutAll: '------------------------------'; cr; cr. ]]. ] in NonInteractiveUIManager(CommandLineUIManager)>>quitFrom:withMessage: FullBlockClosure(BlockClosure)>>ensure: NonInteractiveUIManager(CommandLineUIManager)>>quitFrom:withMessage: NonInteractiveUIManager(CommandLineUIManager)>>unhandledErrorDefaultAction: MessageNotUnderstood(Exception)>>unhandledErrorAction UnhandledError>>defaultAction UndefinedObject>>handleSignal: UnhandledError(Exception)>>pass [:ex | ex pass ] in AnnouncementSubscription>>deliver: FullBlockClosure(BlockClosure)>>cull: [ handlerAction cull: ex ] in [ :ex | | onDoCtx handler bottom thisCtx | onDoCtx := thisContext. thisCtx := onDoCtx home. "find the context on stack for which this method's is sender" [ onDoCtx sender == thisCtx ] whileFalse: [ onDoCtx := onDoCtx sender. onDoCtx ifNil: [ "Can't find our home context. seems like we're already forked and handling another exception in new thread. In this case, just pass it through handler." ^ handlerAction cull: ex ] ]. bottom := [ Processor terminateActive ] asContext. onDoCtx privSender: bottom. handler := [ handlerAction cull: ex ] asContext. handler privSender: thisContext sender. (Process forContext: handler priority: Processor activePriority) resume. "cut the stack of current process" thisContext privSender: thisCtx. nil ] in FullBlockClosure(BlockClosure)>>on:fork: FullBlockClosure(BlockClosure)>>cull: Context>>evaluateSignal: Context>>handleSignal: UnhandledError(Exception)>>signal ------------------------------ Process: a Process in Process>>doTerminationFromYourself stack: Process>>doTerminationFromYourself ------------------------------ Process: a Process in Process>>doTerminationFromYourself stack: Process>>doTerminationFromYourself ------------------------------