THERE_BE_DRAGONS_HERE MessageNotUnderstood: receiver of "keysAndValuesDo:" is nil 14 July 2015 1:28:47.447607 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] UndefinedObject(Object)>>doesNotUnderstand: #keysAndValuesDo: Receiver: nil Arguments and temporary variables: aMessage: keysAndValuesDo: [ :rowIndex :row | (row bounds containsPoint: aPoin...etc... exception: MessageNotUnderstood: receiver of "keysAndValuesDo:" is nil resumeValue: nil Receiver's instance variables: nil FTTableContainerMorph>>rowIndexContainingPoint: Receiver: a FTTableContainerMorph(901775360) Arguments and temporary variables: aPoint: (527@279) Receiver's instance variables: bounds: (473.0@247.0) corner: (681.0@504.0) owner: a FTPluggableIconListMorphAdaptor(595329024) submorphs: #() fullBounds: (473.0@247.0) corner: (681.0@504.0) color: Color transparent extension: a MorphExtension (931397632) [eventHandler = a MorphicEventHandler] ...etc... needsRefreshExposedRows: true headerRow: nil exposedRows: nil FTPluggableIconListMorphAdaptor(FTTableMorph)>>click: Receiver: a FTPluggableIconListMorphAdaptor(595329024) Arguments and temporary variables: event: BlMouseDownEvent((527@279) red 159215 0) rowIndex: nil Receiver's instance variables: bounds: (473.0@247.0) corner: (681.0@504.0) owner: a PanelMorph(547618816) submorphs: an Array(a ScrollBar(648544256) a FTTableContainerMorph(901775360)) fullBounds: (473@247) corner: (681@504) color: Color white extension: a MorphExtension (634912768) [other: (announcer -> an Announcer) (k...etc... container: a FTTableContainerMorph(901775360) verticalScrollBar: a ScrollBar(648544256) backgroundColor: nil selectionColor: nil showIndex: 0 dataSource: a FTPluggableIconListMorphAdaptorDataSource intercellSpacing: nil rowHeight: nil selectedRowIndexes: #() highlightedRowIndexes: #() selectionStrategy: a FTMultipleSelection columns: an Array(a FTColumn) secondarySelectionColor: nil headerColor: nil showHeader: nil showColumnHeaders: false search: a FTSearchFunction allowsDeselection: true setSelectionListSelector: #classSelectionAt:put: getSelectionListSelector: #classSelectionAt: setIndexSelector: #selectedClassIndex: getIndexSelector: #selectedClassIndex keystrokeSelector: #keyPressedOnList:shifted: resetListSelector: #resetClassSelection doubleClickSelector: #doubleClick keystrokeActionSelector: nil MouseClickState>>click Receiver: a MouseClickState[#firstClickUp] Arguments and temporary variables: Receiver's instance variables: clickClient: a FTPluggableIconListMorphAdaptor(595329024) clickState: #firstClickUp firstClickDown: BlMouseDownEvent((527@279) red 159215 0) firstClickUp: BlMouseUpEvent((527@279) 159295 0) firstClickTime: 159215 clickSelector: #click: dblClickSelector: #doubleClick: dblClickTime: 500 dblClickTimeoutSelector: #doubleClickTimeout: dragSelector: #startDrag: dragThreshold: 3 MouseClickState>>handleEvent:from: Receiver: a MouseClickState[#firstClickUp] Arguments and temporary variables: evt: BlMouseUpEvent((527@279) 159295 0) aHand: a BlHandMorph localEvt: BlMouseUpEvent((527@279) 159295 0) timedOut: false isDrag: false Receiver's instance variables: clickClient: a FTPluggableIconListMorphAdaptor(595329024) clickState: #firstClickUp firstClickDown: BlMouseDownEvent((527@279) red 159215 0) firstClickUp: BlMouseUpEvent((527@279) 159295 0) firstClickTime: 159215 clickSelector: #click: dblClickSelector: #doubleClick: dblClickTime: 500 dblClickTimeoutSelector: #doubleClickTimeout: dragSelector: #startDrag: dragThreshold: 3 MouseClickState>>handleEvent: Receiver: a MouseClickState[#firstClickUp] Arguments and temporary variables: evt: BlMouseUpEvent((527@279) 159295 0) Receiver's instance variables: clickClient: a FTPluggableIconListMorphAdaptor(595329024) clickState: #firstClickUp firstClickDown: BlMouseDownEvent((527@279) red 159215 0) firstClickUp: BlMouseUpEvent((527@279) 159295 0) firstClickTime: 159215 clickSelector: #click: dblClickSelector: #doubleClick: dblClickTime: 500 dblClickTimeoutSelector: #doubleClickTimeout: dragSelector: #startDrag: dragThreshold: 3 BlMorphicDoubleClickOrDragEventListener>>handleEvent: Receiver: a BlMorphicDoubleClickOrDragEventListener Arguments and temporary variables: anEvent: BlMouseUpEvent((527@279) 159295 0) Receiver's instance variables: next: a BlHaloGlobalEventListener state: a MouseClickState[#firstClickUp] BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: BlMouseUpEvent((527@279) 159295 0) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicDoubleClickOrDragEventListener deferredActions: WaitfreeQueue with 0 items [ :event | self handleEvent: event ] in BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: event: BlMouseUpEvent((527@279) 159295 0) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicDoubleClickOrDragEventListener deferredActions: WaitfreeQueue with 0 items BlVMEventFetcher>>fetchedEventDo: Receiver: a BlVMEventFetcher Arguments and temporary variables: aBlock: [ :event | self handleEvent: event ] evtBuf: #(1 159295 527 279 0 0 0 1) evt: BlMouseUpEvent((527@279) 159295 0) type: 1 Receiver's instance variables: space: a BlMorphicCompatibleBlocSpace [Bloc-1] sensor: an InputEventSensor lastEventBuffer: #(1 159295 527 279 0 0 0 1) lastKeyScanCode: 30 combinedChar: nil recentModifiers: 0 BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicDoubleClickOrDragEventListener deferredActions: WaitfreeQueue with 0 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: a BlTickEvent Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicDoubleClickOrDragEventListener deferredActions: WaitfreeQueue with 0 items WeakMessageSend>>value: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: anObject: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull:cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg1: a BlTickEvent arg2: an Announcer Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: Receiver: a WeakAnnouncementSubscription Arguments and temporary variables: anAnnouncement: a BlTickEvent Receiver's instance variables: list: a WeakFinalizationList next: nil announcer: an Announcer announcementClass: BlTickEvent action: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSp...etc... BlockClosure>>on:do: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: on: exception fork: handlerAction "Activate the receiver. In ca...etc... Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: nil ex: UnhandledError copy: nil onDoCtx: nil process: nil handler: nil bottom: nil thisCtx: nil Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 --- The full stack --- UndefinedObject(Object)>>doesNotUnderstand: #keysAndValuesDo: FTTableContainerMorph>>rowIndexContainingPoint: FTPluggableIconListMorphAdaptor(FTTableMorph)>>click: MouseClickState>>click MouseClickState>>handleEvent:from: MouseClickState>>handleEvent: BlMorphicDoubleClickOrDragEventListener>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: [ :event | self handleEvent: event ] in BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents BlVMEventFetcher>>fetchedEventDo: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: WeakMessageSend>>value: WeakMessageSend>>cull: WeakMessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: BlockClosure>>on:do: [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE MessageNotUnderstood: receiver of "keysAndValuesDo:" is nil 14 July 2015 1:28:47.803607 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] UndefinedObject(Object)>>doesNotUnderstand: #keysAndValuesDo: Receiver: nil Arguments and temporary variables: aMessage: keysAndValuesDo: [ :rowIndex :row | (row bounds containsPoint: aPoin...etc... exception: MessageNotUnderstood: receiver of "keysAndValuesDo:" is nil resumeValue: nil Receiver's instance variables: nil FTTableContainerMorph>>rowIndexContainingPoint: Receiver: a FTTableContainerMorph(901775360) Arguments and temporary variables: aPoint: (527@279) Receiver's instance variables: bounds: (473.0@247.0) corner: (681.0@504.0) owner: a FTPluggableIconListMorphAdaptor(595329024) submorphs: #() fullBounds: (473.0@247.0) corner: (681.0@504.0) color: Color transparent extension: a MorphExtension (931397632) [eventHandler = a MorphicEventHandler] ...etc... needsRefreshExposedRows: true headerRow: nil exposedRows: nil FTPluggableIconListMorphAdaptor(FTTableMorph)>>doubleClick: Receiver: a FTPluggableIconListMorphAdaptor(595329024) Arguments and temporary variables: event: BlMouseDownEvent((527@279) red 159215 0) rowIndex: nil Receiver's instance variables: bounds: (473.0@247.0) corner: (681.0@504.0) owner: a PanelMorph(547618816) submorphs: an Array(a ScrollBar(648544256) a FTTableContainerMorph(901775360)) fullBounds: (473@247) corner: (681@504) color: Color white extension: a MorphExtension (634912768) [other: (announcer -> an Announcer) (k...etc... container: a FTTableContainerMorph(901775360) verticalScrollBar: a ScrollBar(648544256) backgroundColor: nil selectionColor: nil showIndex: 0 dataSource: a FTPluggableIconListMorphAdaptorDataSource intercellSpacing: nil rowHeight: nil selectedRowIndexes: #() highlightedRowIndexes: #() selectionStrategy: a FTMultipleSelection columns: an Array(a FTColumn) secondarySelectionColor: nil headerColor: nil showHeader: nil showColumnHeaders: false search: a FTSearchFunction allowsDeselection: true setSelectionListSelector: #classSelectionAt:put: getSelectionListSelector: #classSelectionAt: setIndexSelector: #selectedClassIndex: getIndexSelector: #selectedClassIndex keystrokeSelector: #keyPressedOnList:shifted: resetListSelector: #resetClassSelection doubleClickSelector: #doubleClick keystrokeActionSelector: nil MouseClickState>>doubleClick Receiver: a MouseClickState[#secondClickDown] Arguments and temporary variables: Receiver's instance variables: clickClient: a FTPluggableIconListMorphAdaptor(595329024) clickState: #secondClickDown firstClickDown: BlMouseDownEvent((527@279) red 159215 0) firstClickUp: BlMouseUpEvent((527@279) 159295 0) firstClickTime: 159215 clickSelector: #click: dblClickSelector: #doubleClick: dblClickTime: 500 dblClickTimeoutSelector: #doubleClickTimeout: dragSelector: #startDrag: dragThreshold: 3 MouseClickState>>handleEvent:from: Receiver: a MouseClickState[#secondClickDown] Arguments and temporary variables: evt: BlMouseUpEvent((527@279) 159655 0) aHand: a BlHandMorph localEvt: BlMouseUpEvent((527@279) 159655 0) timedOut: false isDrag: false Receiver's instance variables: clickClient: a FTPluggableIconListMorphAdaptor(595329024) clickState: #secondClickDown firstClickDown: BlMouseDownEvent((527@279) red 159215 0) firstClickUp: BlMouseUpEvent((527@279) 159295 0) firstClickTime: 159215 clickSelector: #click: dblClickSelector: #doubleClick: dblClickTime: 500 dblClickTimeoutSelector: #doubleClickTimeout: dragSelector: #startDrag: dragThreshold: 3 MouseClickState>>handleEvent: Receiver: a MouseClickState[#secondClickDown] Arguments and temporary variables: evt: BlMouseUpEvent((527@279) 159655 0) Receiver's instance variables: clickClient: a FTPluggableIconListMorphAdaptor(595329024) clickState: #secondClickDown firstClickDown: BlMouseDownEvent((527@279) red 159215 0) firstClickUp: BlMouseUpEvent((527@279) 159295 0) firstClickTime: 159215 clickSelector: #click: dblClickSelector: #doubleClick: dblClickTime: 500 dblClickTimeoutSelector: #doubleClickTimeout: dragSelector: #startDrag: dragThreshold: 3 BlMorphicDoubleClickOrDragEventListener>>handleEvent: Receiver: a BlMorphicDoubleClickOrDragEventListener Arguments and temporary variables: anEvent: BlMouseUpEvent((527@279) 159655 0) Receiver's instance variables: next: a BlHaloGlobalEventListener state: nil BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: BlMouseUpEvent((527@279) 159655 0) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items [ :event | self handleEvent: event ] in BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: event: BlMouseUpEvent((527@279) 159655 0) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items BlVMEventFetcher>>fetchedEventDo: Receiver: a BlVMEventFetcher Arguments and temporary variables: aBlock: [ :event | self handleEvent: event ] evtBuf: #(1 159655 527 279 0 0 0 1) evt: BlMouseUpEvent((527@279) 159655 0) type: 1 Receiver's instance variables: space: a BlMorphicCompatibleBlocSpace [Bloc-1] sensor: an InputEventSensor lastEventBuffer: #(1 159655 527 279 0 0 0 1) lastKeyScanCode: 30 combinedChar: nil recentModifiers: 0 BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: a BlTickEvent Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items WeakMessageSend>>value: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: anObject: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull:cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg1: a BlTickEvent arg2: an Announcer Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: Receiver: a WeakAnnouncementSubscription Arguments and temporary variables: anAnnouncement: a BlTickEvent Receiver's instance variables: list: a WeakFinalizationList next: nil announcer: an Announcer announcementClass: BlTickEvent action: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSp...etc... BlockClosure>>on:do: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: on: exception fork: handlerAction "Activate the receiver. In ca...etc... Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: nil ex: UnhandledError copy: nil onDoCtx: nil process: nil handler: nil bottom: nil thisCtx: nil Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 --- The full stack --- UndefinedObject(Object)>>doesNotUnderstand: #keysAndValuesDo: FTTableContainerMorph>>rowIndexContainingPoint: FTPluggableIconListMorphAdaptor(FTTableMorph)>>doubleClick: MouseClickState>>doubleClick MouseClickState>>handleEvent:from: MouseClickState>>handleEvent: BlMorphicDoubleClickOrDragEventListener>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: [ :event | self handleEvent: event ] in BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents BlVMEventFetcher>>fetchedEventDo: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: WeakMessageSend>>value: WeakMessageSend>>cull: WeakMessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: BlockClosure>>on:do: [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE MessageNotUnderstood: receiver of "keysAndValuesDo:" is nil 14 July 2015 1:28:57.915607 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] UndefinedObject(Object)>>doesNotUnderstand: #keysAndValuesDo: Receiver: nil Arguments and temporary variables: aMessage: keysAndValuesDo: [ :rowIndex :row | (row bounds containsPoint: aPoin...etc... exception: MessageNotUnderstood: receiver of "keysAndValuesDo:" is nil resumeValue: nil Receiver's instance variables: nil FTTableContainerMorph>>rowIndexContainingPoint: Receiver: a FTTableContainerMorph(901775360) Arguments and temporary variables: aPoint: (312@276) Receiver's instance variables: bounds: (473.0@247.0) corner: (681.0@504.0) owner: a FTPluggableIconListMorphAdaptor(595329024) submorphs: #() fullBounds: (473.0@247.0) corner: (681.0@504.0) color: Color transparent extension: a MorphExtension (931397632) [eventHandler = a MorphicEventHandler] ...etc... needsRefreshExposedRows: true headerRow: nil exposedRows: nil FTPluggableIconListMorphAdaptor(FTTableMorph)>>click: Receiver: a FTPluggableIconListMorphAdaptor(595329024) Arguments and temporary variables: event: BlMouseDownEvent((312@276) red 169647 0) rowIndex: nil Receiver's instance variables: bounds: (473.0@247.0) corner: (681.0@504.0) owner: a PanelMorph(547618816) submorphs: an Array(a ScrollBar(648544256) a FTTableContainerMorph(901775360)) fullBounds: (473@247) corner: (681@504) color: Color white extension: a MorphExtension (634912768) [other: (announcer -> an Announcer) (k...etc... container: a FTTableContainerMorph(901775360) verticalScrollBar: a ScrollBar(648544256) backgroundColor: nil selectionColor: nil showIndex: 0 dataSource: a FTPluggableIconListMorphAdaptorDataSource intercellSpacing: nil rowHeight: nil selectedRowIndexes: #() highlightedRowIndexes: #() selectionStrategy: a FTMultipleSelection columns: an Array(a FTColumn) secondarySelectionColor: nil headerColor: nil showHeader: nil showColumnHeaders: false search: a FTSearchFunction allowsDeselection: true setSelectionListSelector: #classSelectionAt:put: getSelectionListSelector: #classSelectionAt: setIndexSelector: #selectedClassIndex: getIndexSelector: #selectedClassIndex keystrokeSelector: #keyPressedOnList:shifted: resetListSelector: #resetClassSelection doubleClickSelector: #doubleClick keystrokeActionSelector: nil MouseClickState>>click Receiver: a MouseClickState[#firstClickUp] Arguments and temporary variables: Receiver's instance variables: clickClient: a FTPluggableIconListMorphAdaptor(595329024) clickState: #firstClickUp firstClickDown: BlMouseDownEvent((312@276) red 169647 0) firstClickUp: BlMouseUpEvent((312@276) 169775 0) firstClickTime: 169647 clickSelector: #click: dblClickSelector: #doubleClick: dblClickTime: 500 dblClickTimeoutSelector: #doubleClickTimeout: dragSelector: #startDrag: dragThreshold: 3 MouseClickState>>handleEvent:from: Receiver: a MouseClickState[#firstClickUp] Arguments and temporary variables: evt: BlMouseUpEvent((312@276) 169775 0) aHand: a BlHandMorph localEvt: BlMouseUpEvent((312@276) 169775 0) timedOut: false isDrag: false Receiver's instance variables: clickClient: a FTPluggableIconListMorphAdaptor(595329024) clickState: #firstClickUp firstClickDown: BlMouseDownEvent((312@276) red 169647 0) firstClickUp: BlMouseUpEvent((312@276) 169775 0) firstClickTime: 169647 clickSelector: #click: dblClickSelector: #doubleClick: dblClickTime: 500 dblClickTimeoutSelector: #doubleClickTimeout: dragSelector: #startDrag: dragThreshold: 3 MouseClickState>>handleEvent: Receiver: a MouseClickState[#firstClickUp] Arguments and temporary variables: evt: BlMouseUpEvent((312@276) 169775 0) Receiver's instance variables: clickClient: a FTPluggableIconListMorphAdaptor(595329024) clickState: #firstClickUp firstClickDown: BlMouseDownEvent((312@276) red 169647 0) firstClickUp: BlMouseUpEvent((312@276) 169775 0) firstClickTime: 169647 clickSelector: #click: dblClickSelector: #doubleClick: dblClickTime: 500 dblClickTimeoutSelector: #doubleClickTimeout: dragSelector: #startDrag: dragThreshold: 3 BlMorphicDoubleClickOrDragEventListener>>handleEvent: Receiver: a BlMorphicDoubleClickOrDragEventListener Arguments and temporary variables: anEvent: BlMouseUpEvent((312@276) 169775 0) Receiver's instance variables: next: a BlHaloGlobalEventListener state: a MouseClickState[#firstClickUp] BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: BlMouseUpEvent((312@276) 169775 0) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicDoubleClickOrDragEventListener deferredActions: WaitfreeQueue with 0 items [ :event | self handleEvent: event ] in BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: event: BlMouseUpEvent((312@276) 169775 0) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicDoubleClickOrDragEventListener deferredActions: WaitfreeQueue with 0 items BlVMEventFetcher>>fetchedEventDo: Receiver: a BlVMEventFetcher Arguments and temporary variables: aBlock: [ :event | self handleEvent: event ] evtBuf: #(1 169775 312 276 0 0 0 1) evt: BlMouseUpEvent((312@276) 169775 0) type: 1 Receiver's instance variables: space: a BlMorphicCompatibleBlocSpace [Bloc-1] sensor: an InputEventSensor lastEventBuffer: #(1 169775 312 276 0 0 0 1) lastKeyScanCode: 30 combinedChar: nil recentModifiers: 0 BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicDoubleClickOrDragEventListener deferredActions: WaitfreeQueue with 0 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: a BlTickEvent Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicDoubleClickOrDragEventListener deferredActions: WaitfreeQueue with 0 items WeakMessageSend>>value: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: anObject: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull:cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg1: a BlTickEvent arg2: an Announcer Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: Receiver: a WeakAnnouncementSubscription Arguments and temporary variables: anAnnouncement: a BlTickEvent Receiver's instance variables: list: a WeakFinalizationList next: nil announcer: an Announcer announcementClass: BlTickEvent action: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSp...etc... BlockClosure>>on:do: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: on: exception fork: handlerAction "Activate the receiver. In ca...etc... Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: nil ex: UnhandledError copy: nil onDoCtx: nil process: nil handler: nil bottom: nil thisCtx: nil Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 --- The full stack --- UndefinedObject(Object)>>doesNotUnderstand: #keysAndValuesDo: FTTableContainerMorph>>rowIndexContainingPoint: FTPluggableIconListMorphAdaptor(FTTableMorph)>>click: MouseClickState>>click MouseClickState>>handleEvent:from: MouseClickState>>handleEvent: BlMorphicDoubleClickOrDragEventListener>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: [ :event | self handleEvent: event ] in BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents BlVMEventFetcher>>fetchedEventDo: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: WeakMessageSend>>value: WeakMessageSend>>cull: WeakMessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: BlockClosure>>on:do: [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE MessageNotUnderstood: receiver of "keysAndValuesDo:" is nil 14 July 2015 1:28:59.561608 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] UndefinedObject(Object)>>doesNotUnderstand: #keysAndValuesDo: Receiver: nil Arguments and temporary variables: aMessage: keysAndValuesDo: [ :rowIndex :row | (row bounds containsPoint: aPoin...etc... exception: MessageNotUnderstood: receiver of "keysAndValuesDo:" is nil resumeValue: nil Receiver's instance variables: nil FTTableContainerMorph>>rowIndexContainingPoint: Receiver: a FTTableContainerMorph(901775360) Arguments and temporary variables: aPoint: (329@293) Receiver's instance variables: bounds: (473.0@247.0) corner: (681.0@504.0) owner: a FTPluggableIconListMorphAdaptor(595329024) submorphs: #() fullBounds: (473.0@247.0) corner: (681.0@504.0) color: Color transparent extension: a MorphExtension (931397632) [eventHandler = a MorphicEventHandler] ...etc... needsRefreshExposedRows: true headerRow: nil exposedRows: nil FTPluggableIconListMorphAdaptor(FTTableMorph)>>click: Receiver: a FTPluggableIconListMorphAdaptor(595329024) Arguments and temporary variables: event: BlMouseDownEvent((329@293) red 171311 0) rowIndex: nil Receiver's instance variables: bounds: (473.0@247.0) corner: (681.0@504.0) owner: a PanelMorph(547618816) submorphs: an Array(a ScrollBar(648544256) a FTTableContainerMorph(901775360)) fullBounds: (473@247) corner: (681@504) color: Color white extension: a MorphExtension (634912768) [other: (announcer -> an Announcer) (k...etc... container: a FTTableContainerMorph(901775360) verticalScrollBar: a ScrollBar(648544256) backgroundColor: nil selectionColor: nil showIndex: 0 dataSource: a FTPluggableIconListMorphAdaptorDataSource intercellSpacing: nil rowHeight: nil selectedRowIndexes: #() highlightedRowIndexes: #() selectionStrategy: a FTMultipleSelection columns: an Array(a FTColumn) secondarySelectionColor: nil headerColor: nil showHeader: nil showColumnHeaders: false search: a FTSearchFunction allowsDeselection: true setSelectionListSelector: #classSelectionAt:put: getSelectionListSelector: #classSelectionAt: setIndexSelector: #selectedClassIndex: getIndexSelector: #selectedClassIndex keystrokeSelector: #keyPressedOnList:shifted: resetListSelector: #resetClassSelection doubleClickSelector: #doubleClick keystrokeActionSelector: nil MouseClickState>>click Receiver: a MouseClickState[#firstClickUp] Arguments and temporary variables: Receiver's instance variables: clickClient: a FTPluggableIconListMorphAdaptor(595329024) clickState: #firstClickUp firstClickDown: BlMouseDownEvent((329@293) red 171311 0) firstClickUp: BlMouseUpEvent((329@293) 171423 0) firstClickTime: 171311 clickSelector: #click: dblClickSelector: #doubleClick: dblClickTime: 500 dblClickTimeoutSelector: #doubleClickTimeout: dragSelector: #startDrag: dragThreshold: 3 MouseClickState>>handleEvent:from: Receiver: a MouseClickState[#firstClickUp] Arguments and temporary variables: evt: BlMouseUpEvent((329@293) 171423 0) aHand: a BlHandMorph localEvt: BlMouseUpEvent((329@293) 171423 0) timedOut: false isDrag: false Receiver's instance variables: clickClient: a FTPluggableIconListMorphAdaptor(595329024) clickState: #firstClickUp firstClickDown: BlMouseDownEvent((329@293) red 171311 0) firstClickUp: BlMouseUpEvent((329@293) 171423 0) firstClickTime: 171311 clickSelector: #click: dblClickSelector: #doubleClick: dblClickTime: 500 dblClickTimeoutSelector: #doubleClickTimeout: dragSelector: #startDrag: dragThreshold: 3 MouseClickState>>handleEvent: Receiver: a MouseClickState[#firstClickUp] Arguments and temporary variables: evt: BlMouseUpEvent((329@293) 171423 0) Receiver's instance variables: clickClient: a FTPluggableIconListMorphAdaptor(595329024) clickState: #firstClickUp firstClickDown: BlMouseDownEvent((329@293) red 171311 0) firstClickUp: BlMouseUpEvent((329@293) 171423 0) firstClickTime: 171311 clickSelector: #click: dblClickSelector: #doubleClick: dblClickTime: 500 dblClickTimeoutSelector: #doubleClickTimeout: dragSelector: #startDrag: dragThreshold: 3 BlMorphicDoubleClickOrDragEventListener>>handleEvent: Receiver: a BlMorphicDoubleClickOrDragEventListener Arguments and temporary variables: anEvent: BlMouseUpEvent((329@293) 171423 0) Receiver's instance variables: next: a BlHaloGlobalEventListener state: a MouseClickState[#firstClickUp] BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: BlMouseUpEvent((329@293) 171423 0) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicDoubleClickOrDragEventListener deferredActions: WaitfreeQueue with 0 items [ :event | self handleEvent: event ] in BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: event: BlMouseUpEvent((329@293) 171423 0) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicDoubleClickOrDragEventListener deferredActions: WaitfreeQueue with 0 items BlVMEventFetcher>>fetchedEventDo: Receiver: a BlVMEventFetcher Arguments and temporary variables: aBlock: [ :event | self handleEvent: event ] evtBuf: #(1 171423 329 293 0 0 0 1) evt: BlMouseUpEvent((329@293) 171423 0) type: 1 Receiver's instance variables: space: a BlMorphicCompatibleBlocSpace [Bloc-1] sensor: an InputEventSensor lastEventBuffer: #(1 171423 329 293 0 0 0 1) lastKeyScanCode: 30 combinedChar: nil recentModifiers: 0 BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicDoubleClickOrDragEventListener deferredActions: WaitfreeQueue with 0 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: a BlTickEvent Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicDoubleClickOrDragEventListener deferredActions: WaitfreeQueue with 0 items WeakMessageSend>>value: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: anObject: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull:cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg1: a BlTickEvent arg2: an Announcer Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: Receiver: a WeakAnnouncementSubscription Arguments and temporary variables: anAnnouncement: a BlTickEvent Receiver's instance variables: list: a WeakFinalizationList next: nil announcer: an Announcer announcementClass: BlTickEvent action: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSp...etc... BlockClosure>>on:do: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: on: exception fork: handlerAction "Activate the receiver. In ca...etc... Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: nil ex: UnhandledError copy: nil onDoCtx: nil process: nil handler: nil bottom: nil thisCtx: nil Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 --- The full stack --- UndefinedObject(Object)>>doesNotUnderstand: #keysAndValuesDo: FTTableContainerMorph>>rowIndexContainingPoint: FTPluggableIconListMorphAdaptor(FTTableMorph)>>click: MouseClickState>>click MouseClickState>>handleEvent:from: MouseClickState>>handleEvent: BlMorphicDoubleClickOrDragEventListener>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: [ :event | self handleEvent: event ] in BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents BlVMEventFetcher>>fetchedEventDo: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: WeakMessageSend>>value: WeakMessageSend>>cull: WeakMessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: BlockClosure>>on:do: [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE MessageNotUnderstood: receiver of "keysAndValuesDo:" is nil 14 July 2015 1:29:00.919615 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] UndefinedObject(Object)>>doesNotUnderstand: #keysAndValuesDo: Receiver: nil Arguments and temporary variables: aMessage: keysAndValuesDo: [ :rowIndex :row | (row bounds containsPoint: aPoin...etc... exception: MessageNotUnderstood: receiver of "keysAndValuesDo:" is nil resumeValue: nil Receiver's instance variables: nil FTTableContainerMorph>>rowIndexContainingPoint: Receiver: a FTTableContainerMorph(901775360) Arguments and temporary variables: aPoint: (31@270) Receiver's instance variables: bounds: (473.0@247.0) corner: (681.0@504.0) owner: a FTPluggableIconListMorphAdaptor(595329024) submorphs: #() fullBounds: (473.0@247.0) corner: (681.0@504.0) color: Color transparent extension: a MorphExtension (931397632) [eventHandler = a MorphicEventHandler] ...etc... needsRefreshExposedRows: true headerRow: nil exposedRows: nil FTPluggableIconListMorphAdaptor(FTTableMorph)>>mouseMove: Receiver: a FTPluggableIconListMorphAdaptor(595329024) Arguments and temporary variables: event: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) Receiver's instance variables: bounds: (473.0@247.0) corner: (681.0@504.0) owner: a PanelMorph(547618816) submorphs: an Array(a ScrollBar(648544256) a FTTableContainerMorph(901775360)) fullBounds: (473@247) corner: (681@504) color: Color white extension: a MorphExtension (634912768) [other: (announcer -> an Announcer) (k...etc... container: a FTTableContainerMorph(901775360) verticalScrollBar: a ScrollBar(648544256) backgroundColor: nil selectionColor: nil showIndex: 0 dataSource: a FTPluggableIconListMorphAdaptorDataSource intercellSpacing: nil rowHeight: nil selectedRowIndexes: #() highlightedRowIndexes: #() selectionStrategy: a FTMultipleSelection columns: an Array(a FTColumn) secondarySelectionColor: nil headerColor: nil showHeader: nil showColumnHeaders: false search: a FTSearchFunction allowsDeselection: true setSelectionListSelector: #classSelectionAt:put: getSelectionListSelector: #classSelectionAt: setIndexSelector: #selectedClassIndex: getIndexSelector: #selectedClassIndex keystrokeSelector: #keyPressedOnList:shifted: resetListSelector: #resetClassSelection doubleClickSelector: #doubleClick keystrokeActionSelector: nil FTPluggableIconListMorphAdaptor(FTTableMorph)>>handleMouseMove: Receiver: a FTPluggableIconListMorphAdaptor(595329024) Arguments and temporary variables: anEvent: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) Receiver's instance variables: bounds: (473.0@247.0) corner: (681.0@504.0) owner: a PanelMorph(547618816) submorphs: an Array(a ScrollBar(648544256) a FTTableContainerMorph(901775360)) fullBounds: (473@247) corner: (681@504) color: Color white extension: a MorphExtension (634912768) [other: (announcer -> an Announcer) (k...etc... container: a FTTableContainerMorph(901775360) verticalScrollBar: a ScrollBar(648544256) backgroundColor: nil selectionColor: nil showIndex: 0 dataSource: a FTPluggableIconListMorphAdaptorDataSource intercellSpacing: nil rowHeight: nil selectedRowIndexes: #() highlightedRowIndexes: #() selectionStrategy: a FTMultipleSelection columns: an Array(a FTColumn) secondarySelectionColor: nil headerColor: nil showHeader: nil showColumnHeaders: false search: a FTSearchFunction allowsDeselection: true setSelectionListSelector: #classSelectionAt:put: getSelectionListSelector: #classSelectionAt: setIndexSelector: #selectedClassIndex: getIndexSelector: #selectedClassIndex keystrokeSelector: #keyPressedOnList:shifted: resetListSelector: #resetClassSelection doubleClickSelector: #doubleClick keystrokeActionSelector: nil BlMouseMoveEvent>>sentTo: Receiver: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) Arguments and temporary variables: anObject: a FTPluggableIconListMorphAdaptor(595329024) Receiver's instance variables: timeStamp: 172767 source: a BlHandMorph windowIndex: 0 handler: nil wasHandled: true buttons: 4 position: (31@270) startPoint: (23.0@271.0) trail: {(26@270). (31@270)} FTPluggableIconListMorphAdaptor(Morph)>>handleEvent: Receiver: a FTPluggableIconListMorphAdaptor(595329024) Arguments and temporary variables: anEvent: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) Receiver's instance variables: bounds: (473.0@247.0) corner: (681.0@504.0) owner: a PanelMorph(547618816) submorphs: an Array(a ScrollBar(648544256) a FTTableContainerMorph(901775360)) fullBounds: (473@247) corner: (681@504) color: Color white extension: a MorphExtension (634912768) [other: (announcer -> an Announcer) (k...etc... container: a FTTableContainerMorph(901775360) verticalScrollBar: a ScrollBar(648544256) backgroundColor: nil selectionColor: nil showIndex: 0 dataSource: a FTPluggableIconListMorphAdaptorDataSource intercellSpacing: nil rowHeight: nil selectedRowIndexes: #() highlightedRowIndexes: #() selectionStrategy: a FTMultipleSelection columns: an Array(a FTColumn) secondarySelectionColor: nil headerColor: nil showHeader: nil showColumnHeaders: false search: a FTSearchFunction allowsDeselection: true setSelectionListSelector: #classSelectionAt:put: getSelectionListSelector: #classSelectionAt: setIndexSelector: #selectedClassIndex: getIndexSelector: #selectedClassIndex keystrokeSelector: #keyPressedOnList:shifted: resetListSelector: #resetClassSelection doubleClickSelector: #doubleClick keystrokeActionSelector: nil FTPluggableIconListMorphAdaptor(Morph)>>handleFocusEvent: Receiver: a FTPluggableIconListMorphAdaptor(595329024) Arguments and temporary variables: anEvent: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) Receiver's instance variables: bounds: (473.0@247.0) corner: (681.0@504.0) owner: a PanelMorph(547618816) submorphs: an Array(a ScrollBar(648544256) a FTTableContainerMorph(901775360)) fullBounds: (473@247) corner: (681@504) color: Color white extension: a MorphExtension (634912768) [other: (announcer -> an Announcer) (k...etc... container: a FTTableContainerMorph(901775360) verticalScrollBar: a ScrollBar(648544256) backgroundColor: nil selectionColor: nil showIndex: 0 dataSource: a FTPluggableIconListMorphAdaptorDataSource intercellSpacing: nil rowHeight: nil selectedRowIndexes: #() highlightedRowIndexes: #() selectionStrategy: a FTMultipleSelection columns: an Array(a FTColumn) secondarySelectionColor: nil headerColor: nil showHeader: nil showColumnHeaders: false search: a FTSearchFunction allowsDeselection: true setSelectionListSelector: #classSelectionAt:put: getSelectionListSelector: #classSelectionAt: setIndexSelector: #selectedClassIndex: getIndexSelector: #selectedClassIndex keystrokeSelector: #keyPressedOnList:shifted: resetListSelector: #resetClassSelection doubleClickSelector: #doubleClick keystrokeActionSelector: nil BlSpaceEventListener>>sendFocusEvent:to:clear: Receiver: a BlSpaceEventListener Arguments and temporary variables: anEvent: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) focusHolder: a FTPluggableIconListMorphAdaptor(595329024) aBlock: [ self mouseFocus: nil ] w: a BlWorldMorph transformedEvent: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) Receiver's instance variables: started: true spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) keyboardFocus: a FTPluggableIconListMorphAdaptor(595329024) mouseFocus: a FTPluggableIconListMorphAdaptor(595329024) lastMouseEvent: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) mouseOverHandler: a BlMouseOverHandler tickSubscribers: a WeakArray() startSlideOccured: false BlSpaceEventListener>>sendEvent:focus:clear: Receiver: a BlSpaceEventListener Arguments and temporary variables: anEvent: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) focusHolder: a FTPluggableIconListMorphAdaptor(595329024) aBlock: [ self mouseFocus: nil ] Receiver's instance variables: started: true spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) keyboardFocus: a FTPluggableIconListMorphAdaptor(595329024) mouseFocus: a FTPluggableIconListMorphAdaptor(595329024) lastMouseEvent: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) mouseOverHandler: a BlMouseOverHandler tickSubscribers: a WeakArray() startSlideOccured: false BlSpaceEventListener>>sendEventToMouseFocus: Receiver: a BlSpaceEventListener Arguments and temporary variables: anEvent: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) Receiver's instance variables: started: true spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) keyboardFocus: a FTPluggableIconListMorphAdaptor(595329024) mouseFocus: a FTPluggableIconListMorphAdaptor(595329024) lastMouseEvent: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) mouseOverHandler: a BlMouseOverHandler tickSubscribers: a WeakArray() startSlideOccured: false [ self sendEventToMouseFocus: anEvent ] in BlSpaceEventListener>>mouseMove: Receiver: a BlSpaceEventListener Arguments and temporary variables: anEvent: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) Receiver's instance variables: started: true spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) keyboardFocus: a FTPluggableIconListMorphAdaptor(595329024) mouseFocus: a FTPluggableIconListMorphAdaptor(595329024) lastMouseEvent: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) mouseOverHandler: a BlMouseOverHandler tickSubscribers: a WeakArray() startSlideOccured: false UndefinedObject>>ifNotNil:ifNil: Receiver: nil Arguments and temporary variables: ifNotNilBlock: [ :d | aBlockWithDraggedAsArg cull: d ] nilBlock: [ self sendEventToMouseFocus: anEvent ] Receiver's instance variables: nil BlHandMorph>>withDraggedDo:ifNone: Receiver: a BlHandMorph Arguments and temporary variables: aBlockWithDraggedAsArg: [ ] noneBlock: [ self sendEventToMouseFocus: anEvent ] Receiver's instance variables: transform: an AthensAffineTransform ownerReference: a WeakArray(a BlHandForegroundMorph) visible: true properties: an IdentityDictionary() layoutProperties: a BlLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: a WeakArray(nil) spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlHandView announcer: an Announcer submorphs: #() layoutStrategy: a BlDummyLayoutStrategy zIndex: 100 style: a BlUINullStyle targetOffset: (-450.0@24.0) dragged: nil defaultView: a BlHandView BlSpaceEventListener>>mouseMove: Receiver: a BlSpaceEventListener Arguments and temporary variables: anEvent: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) Receiver's instance variables: started: true spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) keyboardFocus: a FTPluggableIconListMorphAdaptor(595329024) mouseFocus: a FTPluggableIconListMorphAdaptor(595329024) lastMouseEvent: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) mouseOverHandler: a BlMouseOverHandler tickSubscribers: a WeakArray() startSlideOccured: false BlMorphicCompatibilitySpaceEventListener(BlEventListener)>>mouseMove: Receiver: a BlMorphicCompatibilitySpaceEventListener Arguments and temporary variables: anEvent: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) Receiver's instance variables: next: a BlSpaceEventListener BlHaloGlobalEventListener(BlEventListener)>>mouseMove: Receiver: a BlHaloGlobalEventListener Arguments and temporary variables: anEvent: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) Receiver's instance variables: next: a BlMorphicCompatibilitySpaceEventListener BlMouseMoveEvent>>sentToNext: Receiver: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) Arguments and temporary variables: anObject: a BlHaloGlobalEventListener Receiver's instance variables: timeStamp: 172767 source: a BlHandMorph windowIndex: 0 handler: nil wasHandled: false buttons: 4 position: (31@270) startPoint: (23.0@271.0) trail: {(26@270). (31@270)} [ :listener | anEvent sentToNext: listener ] in BlSpaceEventListener>>handleEvent: Receiver: a BlSpaceEventListener Arguments and temporary variables: anEvent: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) listener: a BlHaloGlobalEventListener Receiver's instance variables: started: true spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) keyboardFocus: a FTPluggableIconListMorphAdaptor(595329024) mouseFocus: a FTPluggableIconListMorphAdaptor(595329024) lastMouseEvent: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) mouseOverHandler: a BlMouseOverHandler tickSubscribers: a WeakArray() startSlideOccured: false BlockClosure>>cull: Receiver: [ :listener | anEvent sentToNext: listener ] Arguments and temporary variables: anArg: a BlHaloGlobalEventListener Receiver's instance variables: outerContext: BlSpaceEventListener>>handleEvent: startpc: 27 numArgs: 1 [ :el | aBlock cull: el ] in BlSpaceEventListener>>privateReinjectEvent: Receiver: a BlSpaceEventListener Arguments and temporary variables: aBlock: [ :listener | anEvent sentToNext: listener ] el: a BlHaloGlobalEventListener Receiver's instance variables: started: true spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) keyboardFocus: a FTPluggableIconListMorphAdaptor(595329024) mouseFocus: a FTPluggableIconListMorphAdaptor(595329024) lastMouseEvent: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) mouseOverHandler: a BlMouseOverHandler tickSubscribers: a WeakArray() startSlideOccured: false BlockClosure>>cull: Receiver: [ :el | aBlock cull: el ] Arguments and temporary variables: anArg: a BlHaloGlobalEventListener Receiver's instance variables: outerContext: BlSpaceEventListener>>privateReinjectEvent: startpc: 32 numArgs: 1 BlMorphicCompatibleBlocSpace(BlBlocSpace)>>eventListenerDo: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: aBlock: [ :el | aBlock cull: el ] Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items BlSpaceEventListener>>privateReinjectEvent: Receiver: a BlSpaceEventListener Arguments and temporary variables: aBlock: [ :listener | anEvent sentToNext: listener ] Receiver's instance variables: started: true spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) keyboardFocus: a FTPluggableIconListMorphAdaptor(595329024) mouseFocus: a FTPluggableIconListMorphAdaptor(595329024) lastMouseEvent: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) mouseOverHandler: a BlMouseOverHandler tickSubscribers: a WeakArray() startSlideOccured: false BlSpaceEventListener>>handleEvent: Receiver: a BlSpaceEventListener Arguments and temporary variables: anEvent: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) Receiver's instance variables: started: true spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) keyboardFocus: a FTPluggableIconListMorphAdaptor(595329024) mouseFocus: a FTPluggableIconListMorphAdaptor(595329024) lastMouseEvent: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) mouseOverHandler: a BlMouseOverHandler tickSubscribers: a WeakArray() startSlideOccured: false BlMorphicCompatibilitySpaceEventListener(BlEventListener)>>handleEvent: Receiver: a BlMorphicCompatibilitySpaceEventListener Arguments and temporary variables: anEvent: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) Receiver's instance variables: next: a BlSpaceEventListener BlHaloGlobalEventListener(BlEventListener)>>handleEvent: Receiver: a BlHaloGlobalEventListener Arguments and temporary variables: anEvent: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) Receiver's instance variables: next: a BlMorphicCompatibilitySpaceEventListener BlMorphicDoubleClickOrDragEventListener(BlEventListener)>>handleEvent: Receiver: a BlMorphicDoubleClickOrDragEventListener Arguments and temporary variables: anEvent: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) Receiver's instance variables: next: a BlHaloGlobalEventListener state: nil BlMorphicDoubleClickOrDragEventListener>>handleEvent: Receiver: a BlMorphicDoubleClickOrDragEventListener Arguments and temporary variables: anEvent: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) Receiver's instance variables: next: a BlHaloGlobalEventListener state: nil BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items [ :event | self handleEvent: event ] in BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: event: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items BlVMEventFetcher>>fetchedEventDo: Receiver: a BlVMEventFetcher Arguments and temporary variables: aBlock: [ :event | self handleEvent: event ] evtBuf: #(1 172767 26 270 4 0 0 1) evt: BlMouseMoveEvent((23.0@271.0) (31@270) red 172767 0) type: 1 Receiver's instance variables: space: a BlMorphicCompatibleBlocSpace [Bloc-1] sensor: an InputEventSensor lastEventBuffer: #(1 172767 26 270 4 0 0 1) lastKeyScanCode: 30 combinedChar: nil recentModifiers: 0 BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: a BlTickEvent Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items WeakMessageSend>>value: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: anObject: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull:cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg1: a BlTickEvent arg2: an Announcer Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: Receiver: a WeakAnnouncementSubscription Arguments and temporary variables: anAnnouncement: a BlTickEvent Receiver's instance variables: list: a WeakFinalizationList next: nil announcer: an Announcer announcementClass: BlTickEvent action: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSp...etc... BlockClosure>>on:do: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: on: exception fork: handlerAction "Activate the receiver. In ca...etc... Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: nil ex: UnhandledError copy: nil onDoCtx: nil process: nil handler: nil bottom: nil thisCtx: nil Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 --- The full stack --- UndefinedObject(Object)>>doesNotUnderstand: #keysAndValuesDo: FTTableContainerMorph>>rowIndexContainingPoint: FTPluggableIconListMorphAdaptor(FTTableMorph)>>mouseMove: FTPluggableIconListMorphAdaptor(FTTableMorph)>>handleMouseMove: BlMouseMoveEvent>>sentTo: FTPluggableIconListMorphAdaptor(Morph)>>handleEvent: FTPluggableIconListMorphAdaptor(Morph)>>handleFocusEvent: BlSpaceEventListener>>sendFocusEvent:to:clear: BlSpaceEventListener>>sendEvent:focus:clear: BlSpaceEventListener>>sendEventToMouseFocus: [ self sendEventToMouseFocus: anEvent ] in BlSpaceEventListener>>mouseMove: UndefinedObject>>ifNotNil:ifNil: BlHandMorph>>withDraggedDo:ifNone: BlSpaceEventListener>>mouseMove: BlMorphicCompatibilitySpaceEventListener(BlEventListener)>>mouseMove: BlHaloGlobalEventListener(BlEventListener)>>mouseMove: BlMouseMoveEvent>>sentToNext: [ :listener | anEvent sentToNext: listener ] in BlSpaceEventListener>>handleEvent: BlockClosure>>cull: [ :el | aBlock cull: el ] in BlSpaceEventListener>>privateReinjectEvent: BlockClosure>>cull: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>eventListenerDo: BlSpaceEventListener>>privateReinjectEvent: BlSpaceEventListener>>handleEvent: BlMorphicCompatibilitySpaceEventListener(BlEventListener)>>handleEvent: BlHaloGlobalEventListener(BlEventListener)>>handleEvent: BlMorphicDoubleClickOrDragEventListener(BlEventListener)>>handleEvent: BlMorphicDoubleClickOrDragEventListener>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: [ :event | self handleEvent: event ] in BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents BlVMEventFetcher>>fetchedEventDo: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: WeakMessageSend>>value: WeakMessageSend>>cull: WeakMessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: BlockClosure>>on:do: [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE MessageNotUnderstood: receiver of "keysAndValuesDo:" is nil 14 July 2015 1:29:00.979607 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] UndefinedObject(Object)>>doesNotUnderstand: #keysAndValuesDo: Receiver: nil Arguments and temporary variables: aMessage: keysAndValuesDo: [ :rowIndex :row | (row bounds containsPoint: aPoin...etc... exception: MessageNotUnderstood: receiver of "keysAndValuesDo:" is nil resumeValue: nil Receiver's instance variables: nil FTTableContainerMorph>>rowIndexContainingPoint: Receiver: a FTTableContainerMorph(901775360) Arguments and temporary variables: aPoint: (53@274) Receiver's instance variables: bounds: (473.0@247.0) corner: (681.0@504.0) owner: a FTPluggableIconListMorphAdaptor(595329024) submorphs: #() fullBounds: (473.0@247.0) corner: (681.0@504.0) color: Color transparent extension: a MorphExtension (931397632) [eventHandler = a MorphicEventHandler] ...etc... needsRefreshExposedRows: true headerRow: nil exposedRows: nil FTPluggableIconListMorphAdaptor(FTTableMorph)>>mouseMove: Receiver: a FTPluggableIconListMorphAdaptor(595329024) Arguments and temporary variables: event: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) Receiver's instance variables: bounds: (473.0@247.0) corner: (681.0@504.0) owner: a PanelMorph(547618816) submorphs: an Array(a ScrollBar(648544256) a FTTableContainerMorph(901775360)) fullBounds: (473@247) corner: (681@504) color: Color white extension: a MorphExtension (634912768) [other: (announcer -> an Announcer) (k...etc... container: a FTTableContainerMorph(901775360) verticalScrollBar: a ScrollBar(648544256) backgroundColor: nil selectionColor: nil showIndex: 0 dataSource: a FTPluggableIconListMorphAdaptorDataSource intercellSpacing: nil rowHeight: nil selectedRowIndexes: #() highlightedRowIndexes: #() selectionStrategy: a FTMultipleSelection columns: an Array(a FTColumn) secondarySelectionColor: nil headerColor: nil showHeader: nil showColumnHeaders: false search: a FTSearchFunction allowsDeselection: true setSelectionListSelector: #classSelectionAt:put: getSelectionListSelector: #classSelectionAt: setIndexSelector: #selectedClassIndex: getIndexSelector: #selectedClassIndex keystrokeSelector: #keyPressedOnList:shifted: resetListSelector: #resetClassSelection doubleClickSelector: #doubleClick keystrokeActionSelector: nil FTPluggableIconListMorphAdaptor(FTTableMorph)>>handleMouseMove: Receiver: a FTPluggableIconListMorphAdaptor(595329024) Arguments and temporary variables: anEvent: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) Receiver's instance variables: bounds: (473.0@247.0) corner: (681.0@504.0) owner: a PanelMorph(547618816) submorphs: an Array(a ScrollBar(648544256) a FTTableContainerMorph(901775360)) fullBounds: (473@247) corner: (681@504) color: Color white extension: a MorphExtension (634912768) [other: (announcer -> an Announcer) (k...etc... container: a FTTableContainerMorph(901775360) verticalScrollBar: a ScrollBar(648544256) backgroundColor: nil selectionColor: nil showIndex: 0 dataSource: a FTPluggableIconListMorphAdaptorDataSource intercellSpacing: nil rowHeight: nil selectedRowIndexes: #() highlightedRowIndexes: #() selectionStrategy: a FTMultipleSelection columns: an Array(a FTColumn) secondarySelectionColor: nil headerColor: nil showHeader: nil showColumnHeaders: false search: a FTSearchFunction allowsDeselection: true setSelectionListSelector: #classSelectionAt:put: getSelectionListSelector: #classSelectionAt: setIndexSelector: #selectedClassIndex: getIndexSelector: #selectedClassIndex keystrokeSelector: #keyPressedOnList:shifted: resetListSelector: #resetClassSelection doubleClickSelector: #doubleClick keystrokeActionSelector: nil BlMouseMoveEvent>>sentTo: Receiver: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) Arguments and temporary variables: anObject: a FTPluggableIconListMorphAdaptor(595329024) Receiver's instance variables: timeStamp: 172793 source: a BlHandMorph windowIndex: 0 handler: nil wasHandled: true buttons: 4 position: (53@274) startPoint: (31.0@270.0) trail: {(37@270). (43@270). (53@274)} FTPluggableIconListMorphAdaptor(Morph)>>handleEvent: Receiver: a FTPluggableIconListMorphAdaptor(595329024) Arguments and temporary variables: anEvent: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) Receiver's instance variables: bounds: (473.0@247.0) corner: (681.0@504.0) owner: a PanelMorph(547618816) submorphs: an Array(a ScrollBar(648544256) a FTTableContainerMorph(901775360)) fullBounds: (473@247) corner: (681@504) color: Color white extension: a MorphExtension (634912768) [other: (announcer -> an Announcer) (k...etc... container: a FTTableContainerMorph(901775360) verticalScrollBar: a ScrollBar(648544256) backgroundColor: nil selectionColor: nil showIndex: 0 dataSource: a FTPluggableIconListMorphAdaptorDataSource intercellSpacing: nil rowHeight: nil selectedRowIndexes: #() highlightedRowIndexes: #() selectionStrategy: a FTMultipleSelection columns: an Array(a FTColumn) secondarySelectionColor: nil headerColor: nil showHeader: nil showColumnHeaders: false search: a FTSearchFunction allowsDeselection: true setSelectionListSelector: #classSelectionAt:put: getSelectionListSelector: #classSelectionAt: setIndexSelector: #selectedClassIndex: getIndexSelector: #selectedClassIndex keystrokeSelector: #keyPressedOnList:shifted: resetListSelector: #resetClassSelection doubleClickSelector: #doubleClick keystrokeActionSelector: nil FTPluggableIconListMorphAdaptor(Morph)>>handleFocusEvent: Receiver: a FTPluggableIconListMorphAdaptor(595329024) Arguments and temporary variables: anEvent: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) Receiver's instance variables: bounds: (473.0@247.0) corner: (681.0@504.0) owner: a PanelMorph(547618816) submorphs: an Array(a ScrollBar(648544256) a FTTableContainerMorph(901775360)) fullBounds: (473@247) corner: (681@504) color: Color white extension: a MorphExtension (634912768) [other: (announcer -> an Announcer) (k...etc... container: a FTTableContainerMorph(901775360) verticalScrollBar: a ScrollBar(648544256) backgroundColor: nil selectionColor: nil showIndex: 0 dataSource: a FTPluggableIconListMorphAdaptorDataSource intercellSpacing: nil rowHeight: nil selectedRowIndexes: #() highlightedRowIndexes: #() selectionStrategy: a FTMultipleSelection columns: an Array(a FTColumn) secondarySelectionColor: nil headerColor: nil showHeader: nil showColumnHeaders: false search: a FTSearchFunction allowsDeselection: true setSelectionListSelector: #classSelectionAt:put: getSelectionListSelector: #classSelectionAt: setIndexSelector: #selectedClassIndex: getIndexSelector: #selectedClassIndex keystrokeSelector: #keyPressedOnList:shifted: resetListSelector: #resetClassSelection doubleClickSelector: #doubleClick keystrokeActionSelector: nil BlSpaceEventListener>>sendFocusEvent:to:clear: Receiver: a BlSpaceEventListener Arguments and temporary variables: anEvent: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) focusHolder: a FTPluggableIconListMorphAdaptor(595329024) aBlock: [ self mouseFocus: nil ] w: a BlWorldMorph transformedEvent: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) Receiver's instance variables: started: true spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) keyboardFocus: a PluggableButtonMorph(148373504) mouseFocus: a FTPluggableIconListMorphAdaptor(595329024) lastMouseEvent: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) mouseOverHandler: a BlMouseOverHandler tickSubscribers: a WeakArray() startSlideOccured: false BlSpaceEventListener>>sendEvent:focus:clear: Receiver: a BlSpaceEventListener Arguments and temporary variables: anEvent: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) focusHolder: a FTPluggableIconListMorphAdaptor(595329024) aBlock: [ self mouseFocus: nil ] Receiver's instance variables: started: true spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) keyboardFocus: a PluggableButtonMorph(148373504) mouseFocus: a FTPluggableIconListMorphAdaptor(595329024) lastMouseEvent: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) mouseOverHandler: a BlMouseOverHandler tickSubscribers: a WeakArray() startSlideOccured: false BlSpaceEventListener>>sendEventToMouseFocus: Receiver: a BlSpaceEventListener Arguments and temporary variables: anEvent: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) Receiver's instance variables: started: true spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) keyboardFocus: a PluggableButtonMorph(148373504) mouseFocus: a FTPluggableIconListMorphAdaptor(595329024) lastMouseEvent: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) mouseOverHandler: a BlMouseOverHandler tickSubscribers: a WeakArray() startSlideOccured: false [ self sendEventToMouseFocus: anEvent ] in BlSpaceEventListener>>mouseMove: Receiver: a BlSpaceEventListener Arguments and temporary variables: anEvent: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) Receiver's instance variables: started: true spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) keyboardFocus: a PluggableButtonMorph(148373504) mouseFocus: a FTPluggableIconListMorphAdaptor(595329024) lastMouseEvent: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) mouseOverHandler: a BlMouseOverHandler tickSubscribers: a WeakArray() startSlideOccured: false UndefinedObject>>ifNotNil:ifNil: Receiver: nil Arguments and temporary variables: ifNotNilBlock: [ :d | aBlockWithDraggedAsArg cull: d ] nilBlock: [ self sendEventToMouseFocus: anEvent ] Receiver's instance variables: nil BlHandMorph>>withDraggedDo:ifNone: Receiver: a BlHandMorph Arguments and temporary variables: aBlockWithDraggedAsArg: [ ] noneBlock: [ self sendEventToMouseFocus: anEvent ] Receiver's instance variables: transform: an AthensAffineTransform ownerReference: a WeakArray(a BlHandForegroundMorph) visible: true properties: an IdentityDictionary() layoutProperties: a BlLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: a WeakArray(nil) spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlHandView announcer: an Announcer submorphs: #() layoutStrategy: a BlDummyLayoutStrategy zIndex: 100 style: a BlUINullStyle targetOffset: (-450.0@24.0) dragged: nil defaultView: a BlHandView BlSpaceEventListener>>mouseMove: Receiver: a BlSpaceEventListener Arguments and temporary variables: anEvent: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) Receiver's instance variables: started: true spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) keyboardFocus: a PluggableButtonMorph(148373504) mouseFocus: a FTPluggableIconListMorphAdaptor(595329024) lastMouseEvent: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) mouseOverHandler: a BlMouseOverHandler tickSubscribers: a WeakArray() startSlideOccured: false BlMorphicCompatibilitySpaceEventListener(BlEventListener)>>mouseMove: Receiver: a BlMorphicCompatibilitySpaceEventListener Arguments and temporary variables: anEvent: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) Receiver's instance variables: next: a BlSpaceEventListener BlHaloGlobalEventListener(BlEventListener)>>mouseMove: Receiver: a BlHaloGlobalEventListener Arguments and temporary variables: anEvent: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) Receiver's instance variables: next: a BlMorphicCompatibilitySpaceEventListener BlMouseMoveEvent>>sentToNext: Receiver: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) Arguments and temporary variables: anObject: a BlHaloGlobalEventListener Receiver's instance variables: timeStamp: 172793 source: a BlHandMorph windowIndex: 0 handler: nil wasHandled: false buttons: 4 position: (53@274) startPoint: (31.0@270.0) trail: {(37@270). (43@270). (53@274)} [ :listener | anEvent sentToNext: listener ] in BlSpaceEventListener>>handleEvent: Receiver: a BlSpaceEventListener Arguments and temporary variables: anEvent: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) listener: a BlHaloGlobalEventListener Receiver's instance variables: started: true spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) keyboardFocus: a PluggableButtonMorph(148373504) mouseFocus: a FTPluggableIconListMorphAdaptor(595329024) lastMouseEvent: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) mouseOverHandler: a BlMouseOverHandler tickSubscribers: a WeakArray() startSlideOccured: false BlockClosure>>cull: Receiver: [ :listener | anEvent sentToNext: listener ] Arguments and temporary variables: anArg: a BlHaloGlobalEventListener Receiver's instance variables: outerContext: BlSpaceEventListener>>handleEvent: startpc: 27 numArgs: 1 [ :el | aBlock cull: el ] in BlSpaceEventListener>>privateReinjectEvent: Receiver: a BlSpaceEventListener Arguments and temporary variables: aBlock: [ :listener | anEvent sentToNext: listener ] el: a BlHaloGlobalEventListener Receiver's instance variables: started: true spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) keyboardFocus: a PluggableButtonMorph(148373504) mouseFocus: a FTPluggableIconListMorphAdaptor(595329024) lastMouseEvent: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) mouseOverHandler: a BlMouseOverHandler tickSubscribers: a WeakArray() startSlideOccured: false BlockClosure>>cull: Receiver: [ :el | aBlock cull: el ] Arguments and temporary variables: anArg: a BlHaloGlobalEventListener Receiver's instance variables: outerContext: BlSpaceEventListener>>privateReinjectEvent: startpc: 32 numArgs: 1 BlMorphicCompatibleBlocSpace(BlBlocSpace)>>eventListenerDo: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: aBlock: [ :el | aBlock cull: el ] Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items BlSpaceEventListener>>privateReinjectEvent: Receiver: a BlSpaceEventListener Arguments and temporary variables: aBlock: [ :listener | anEvent sentToNext: listener ] Receiver's instance variables: started: true spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) keyboardFocus: a PluggableButtonMorph(148373504) mouseFocus: a FTPluggableIconListMorphAdaptor(595329024) lastMouseEvent: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) mouseOverHandler: a BlMouseOverHandler tickSubscribers: a WeakArray() startSlideOccured: false BlSpaceEventListener>>handleEvent: Receiver: a BlSpaceEventListener Arguments and temporary variables: anEvent: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) Receiver's instance variables: started: true spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) keyboardFocus: a PluggableButtonMorph(148373504) mouseFocus: a FTPluggableIconListMorphAdaptor(595329024) lastMouseEvent: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) mouseOverHandler: a BlMouseOverHandler tickSubscribers: a WeakArray() startSlideOccured: false BlMorphicCompatibilitySpaceEventListener(BlEventListener)>>handleEvent: Receiver: a BlMorphicCompatibilitySpaceEventListener Arguments and temporary variables: anEvent: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) Receiver's instance variables: next: a BlSpaceEventListener BlHaloGlobalEventListener(BlEventListener)>>handleEvent: Receiver: a BlHaloGlobalEventListener Arguments and temporary variables: anEvent: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) Receiver's instance variables: next: a BlMorphicCompatibilitySpaceEventListener BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items [ :event | self handleEvent: event ] in BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: event: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items BlVMEventFetcher>>fetchedEventDo: Receiver: a BlVMEventFetcher Arguments and temporary variables: aBlock: [ :event | self handleEvent: event ] evtBuf: #(1 172793 37 270 4 0 0 1) evt: BlMouseMoveEvent((31.0@270.0) (53@274) red 172793 0) type: 1 Receiver's instance variables: space: a BlMorphicCompatibleBlocSpace [Bloc-1] sensor: an InputEventSensor lastEventBuffer: #(1 172793 37 270 4 0 0 1) lastKeyScanCode: 30 combinedChar: nil recentModifiers: 0 BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: a BlTickEvent Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items WeakMessageSend>>value: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: anObject: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull:cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg1: a BlTickEvent arg2: an Announcer Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: Receiver: a WeakAnnouncementSubscription Arguments and temporary variables: anAnnouncement: a BlTickEvent Receiver's instance variables: list: a WeakFinalizationList next: nil announcer: an Announcer announcementClass: BlTickEvent action: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSp...etc... BlockClosure>>on:do: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: on: exception fork: handlerAction "Activate the receiver. In ca...etc... Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: nil ex: UnhandledError copy: nil onDoCtx: nil process: nil handler: nil bottom: nil thisCtx: nil Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 --- The full stack --- UndefinedObject(Object)>>doesNotUnderstand: #keysAndValuesDo: FTTableContainerMorph>>rowIndexContainingPoint: FTPluggableIconListMorphAdaptor(FTTableMorph)>>mouseMove: FTPluggableIconListMorphAdaptor(FTTableMorph)>>handleMouseMove: BlMouseMoveEvent>>sentTo: FTPluggableIconListMorphAdaptor(Morph)>>handleEvent: FTPluggableIconListMorphAdaptor(Morph)>>handleFocusEvent: BlSpaceEventListener>>sendFocusEvent:to:clear: BlSpaceEventListener>>sendEvent:focus:clear: BlSpaceEventListener>>sendEventToMouseFocus: [ self sendEventToMouseFocus: anEvent ] in BlSpaceEventListener>>mouseMove: UndefinedObject>>ifNotNil:ifNil: BlHandMorph>>withDraggedDo:ifNone: BlSpaceEventListener>>mouseMove: BlMorphicCompatibilitySpaceEventListener(BlEventListener)>>mouseMove: BlHaloGlobalEventListener(BlEventListener)>>mouseMove: BlMouseMoveEvent>>sentToNext: [ :listener | anEvent sentToNext: listener ] in BlSpaceEventListener>>handleEvent: BlockClosure>>cull: [ :el | aBlock cull: el ] in BlSpaceEventListener>>privateReinjectEvent: BlockClosure>>cull: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>eventListenerDo: BlSpaceEventListener>>privateReinjectEvent: BlSpaceEventListener>>handleEvent: BlMorphicCompatibilitySpaceEventListener(BlEventListener)>>handleEvent: BlHaloGlobalEventListener(BlEventListener)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: [ :event | self handleEvent: event ] in BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents BlVMEventFetcher>>fetchedEventDo: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: WeakMessageSend>>value: WeakMessageSend>>cull: WeakMessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: BlockClosure>>on:do: [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE MessageNotUnderstood: BlRectangleView>>cornerRadius: 14 July 2015 1:46:40.985607 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] BlRectangleView(Object)>>doesNotUnderstand: #cornerRadius: Receiver: a BlRectangleView Arguments and temporary variables: aMessage: cornerRadius: 5 exception: MessageNotUnderstood: BlRectangleView>>cornerRadius: resumeValue: nil Receiver's instance variables: transform: a BlAthensIdentityTransform ownerReference: a WeakArray(a BlWellPanel) visible: true properties: an IdentityDictionary() layoutProperties: a BlLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil extent: (50@50) fillStyle: Color white borderStyle: a BlNullRectanglerBorder layoutStrategy: a BlDummyLayoutStrategy plainSurface: true clipping: false subviews: #() [ :v | v color: self defaultColor. v cornerRadius: 5. v borderStyle: (BlSolidRectangleBorder new color: self defaultBorderColor; width: self defaultBorderWidth). v addView: (BlStringView string: self title) ] in BlWellPanel>>initialize Receiver: a BlWellPanel Arguments and temporary variables: v: a BlRectangleView Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BlLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: #() layoutStrategy: a BlDummyLayoutStrategy zIndex: nil style: a BlUINullStyle title: nil BlWellPanel(BlMorph)>>withRectangleViewDo: Receiver: a BlWellPanel Arguments and temporary variables: aBlock: [ :v | v color: self defaultColor. v cornerRadius: 5. v borderStyle: ...etc... Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BlLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: #() layoutStrategy: a BlDummyLayoutStrategy zIndex: nil style: a BlUINullStyle title: nil BlWellPanel>>initialize Receiver: a BlWellPanel Arguments and temporary variables: Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BlLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: #() layoutStrategy: a BlDummyLayoutStrategy zIndex: nil style: a BlUINullStyle title: nil BlWellPanel class(Behavior)>>new Receiver: BlWellPanel Arguments and temporary variables: Receiver's instance variables: superclass: BlMorph methodDict: a MethodDictionary(#defaultBorderColor->BlWellPanel>>#defaultBorder...etc... format: 170 layout: a FixedLayout instanceVariables: #(#title) organization: a ClassOrganization subclasses: nil name: #BlWellPanel classPool: a Dictionary() sharedPools: an OrderedCollection() environment: a SystemDictionary(lots of globals) category: #'Bloc-DragPanels' traitComposition: {} localSelectors: nil UndefinedObject>>DoIt Receiver: nil Arguments and temporary variables: Receiver's instance variables: nil OpalCompiler>>evaluate Receiver: an OpalCompiler Arguments and temporary variables: value: nil selectedSource: a ReadStream itsSelection: a Text for '' itsSelectionString: '' Receiver's instance variables: ast: DoIt ^ BlWellPanel new openInWorld source: a ReadStream context: nil receiver: nil compilationContext: a CompilationContext compilationContextClass: nil useFaultyForParsing: false RubSmalltalkEditor>>evaluate:andDo: Receiver: a RubSmalltalkEditor Arguments and temporary variables: aStream: a ReadStream aBlock: [ :result | aBlock value: result ] result: nil rcvr: nil ctxt: nil Receiver's instance variables: defaultKeymappingIndex: nil textArea: a RubEditingArea(204472320) selectorChooser: nil notificationStrategy: a GLMPopperNotificationStrategy RubSmalltalkEditor>>highlightEvaluateAndDo: Receiver: a RubSmalltalkEditor Arguments and temporary variables: aBlock: [ :result | ] Receiver's instance variables: defaultKeymappingIndex: nil textArea: a RubEditingArea(204472320) selectorChooser: nil notificationStrategy: a GLMPopperNotificationStrategy [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] in [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: Receiver: a GLMMorphicPharoPlaygroundRenderer Arguments and temporary variables: ann: a GLMHighlightAndEvaluate Receiver's instance variables: renderer: a GLMMorphicRenderer textMorph: a RubScrolledTextMorph(654049280) textModel: a GLMRubricSmalltalkTextModel RubEditingArea(RubAbstractTextArea)>>handleEdit: Receiver: a RubEditingArea(204472320) Arguments and temporary variables: editBlock: [ textMorph textArea editor highlightEvaluateAndDo: ann action. tex...etc... Receiver's instance variables: bounds: (0@0) corner: (580@31) owner: a TransformWithLayoutMorph(782237696) submorphs: an Array(a RubCursor(650379264) a RubPrimarySelectionMorph(797704192...etc... fullBounds: nil color: Color transparent extension: a MorphExtension (676069376) [other: (announcer -> an Announcer) (k...etc... model: a GLMRubricSmalltalkTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(743702528) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkScriptingMode cursor: a RubCursor(650379264) segments: an OrderedCollection(a RubHighlightSegmentMorph(677642240)) getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: Receiver: a GLMMorphicPharoPlaygroundRenderer Arguments and temporary variables: ann: a GLMHighlightAndEvaluate Receiver's instance variables: renderer: a GLMMorphicRenderer textMorph: a RubScrolledTextMorph(654049280) textModel: a GLMRubricSmalltalkTextModel BlMorphicCompatibleBlocSpace(BlBlocSpace)>>runDeferredActions Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: nextInQueue: [ textMorph textArea handleEdit: [ textMorph textArea editor ...etc... Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: a BlTickEvent Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items WeakMessageSend>>value: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: anObject: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull:cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg1: a BlTickEvent arg2: an Announcer Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: Receiver: a WeakAnnouncementSubscription Arguments and temporary variables: anAnnouncement: a BlTickEvent Receiver's instance variables: list: a WeakFinalizationList next: nil announcer: an Announcer announcementClass: BlTickEvent action: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSp...etc... BlockClosure>>on:do: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: on: exception fork: handlerAction "Activate the receiver. In ca...etc... Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: nil ex: UnhandledError copy: nil onDoCtx: nil process: nil handler: nil bottom: nil thisCtx: nil Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 --- The full stack --- BlRectangleView(Object)>>doesNotUnderstand: #cornerRadius: [ :v | v color: self defaultColor. v cornerRadius: 5. v borderStyle: (BlSolidRectangleBorder new color: self defaultBorderColor; width: self defaultBorderWidth). v addView: (BlStringView string: self title) ] in BlWellPanel>>initialize BlWellPanel(BlMorph)>>withRectangleViewDo: BlWellPanel>>initialize BlWellPanel class(Behavior)>>new UndefinedObject>>DoIt OpalCompiler>>evaluate RubSmalltalkEditor>>evaluate:andDo: RubSmalltalkEditor>>highlightEvaluateAndDo: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] in [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: RubEditingArea(RubAbstractTextArea)>>handleEdit: [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>runDeferredActions BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: WeakMessageSend>>value: WeakMessageSend>>cull: WeakMessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: BlockClosure>>on:do: [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE MessageNotUnderstood: Array>>self 14 July 2015 2:08:25.071608 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] Array(Object)>>doesNotUnderstand: #self Receiver: {Color lightYellow. Color lightGreen. Color lightBlue. Color white. Color veryVeryLightGra...etc... Arguments and temporary variables: aMessage: self exception: MessageNotUnderstood: Array>>self resumeValue: nil Receiver's instance variables: {Color lightYellow. Color lightGreen. Color lightBlue. Color white. Color veryVeryLightGra...etc... BlWellPanel>>defaultValues: Receiver: a BlWellPanel Arguments and temporary variables: anObject: {Color lightYellow. Color lightGreen. Color lightBlue. Color white. C...etc... Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BlLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: #() layoutStrategy: a BlDummyLayoutStrategy zIndex: nil style: a BlUINullStyle title: nil defaultValues: nil BlWellPanel class>>withSevenPaleColors Receiver: BlWellPanel Arguments and temporary variables: Receiver's instance variables: superclass: BlMorph methodDict: a MethodDictionary(#addDefaultWellsAndPlus->BlWellPanel>>#addDefaul...etc... format: 172 layout: a FixedLayout instanceVariables: #(#title #defaultValues) organization: a ClassOrganization subclasses: nil name: #BlWellPanel classPool: a Dictionary() sharedPools: an OrderedCollection() environment: a SystemDictionary(lots of globals) category: #'Bloc-DragPanels' traitComposition: {} localSelectors: nil UndefinedObject>>DoIt Receiver: nil Arguments and temporary variables: Receiver's instance variables: nil OpalCompiler>>evaluate Receiver: an OpalCompiler Arguments and temporary variables: value: nil selectedSource: a ReadStream itsSelection: a Text for '' itsSelectionString: '' Receiver's instance variables: ast: DoIt ^ BlWellPanel withSevenPaleColors openInWorld source: a ReadStream context: nil receiver: nil compilationContext: a CompilationContext compilationContextClass: nil useFaultyForParsing: false RubSmalltalkEditor>>evaluate:andDo: Receiver: a RubSmalltalkEditor Arguments and temporary variables: aStream: a ReadStream aBlock: [ :result | aBlock value: result ] result: nil rcvr: nil ctxt: nil Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(204472320) selectorChooser: nil notificationStrategy: a GLMPopperNotificationStrategy RubSmalltalkEditor>>highlightEvaluateAndDo: Receiver: a RubSmalltalkEditor Arguments and temporary variables: aBlock: [ :result | ] Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(204472320) selectorChooser: nil notificationStrategy: a GLMPopperNotificationStrategy [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] in [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: Receiver: a GLMMorphicPharoPlaygroundRenderer Arguments and temporary variables: ann: a GLMHighlightAndEvaluate Receiver's instance variables: renderer: a GLMMorphicRenderer textMorph: a RubScrolledTextMorph(654049280) textModel: a GLMRubricSmalltalkTextModel RubEditingArea(RubAbstractTextArea)>>handleEdit: Receiver: a RubEditingArea(204472320) Arguments and temporary variables: editBlock: [ textMorph textArea editor highlightEvaluateAndDo: ann action. tex...etc... Receiver's instance variables: bounds: (0@0) corner: (580@69) owner: a TransformWithLayoutMorph(782237696) submorphs: an Array(a RubCursor(650379264) a RubPrimarySelectionMorph(797704192...etc... fullBounds: nil color: Color transparent extension: a MorphExtension (676069376) [other: (announcer -> an Announcer) (k...etc... model: a GLMRubricSmalltalkTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(743702528) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkScriptingMode cursor: a RubCursor(650379264) segments: an OrderedCollection(a RubHighlightSegmentMorph(503578624)) getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: Receiver: a GLMMorphicPharoPlaygroundRenderer Arguments and temporary variables: ann: a GLMHighlightAndEvaluate Receiver's instance variables: renderer: a GLMMorphicRenderer textMorph: a RubScrolledTextMorph(654049280) textModel: a GLMRubricSmalltalkTextModel BlMorphicCompatibleBlocSpace(BlBlocSpace)>>runDeferredActions Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: nextInQueue: [ textMorph textArea handleEdit: [ textMorph textArea editor ...etc... Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: a BlTickEvent Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items WeakMessageSend>>value: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: anObject: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull:cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg1: a BlTickEvent arg2: an Announcer Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: Receiver: a WeakAnnouncementSubscription Arguments and temporary variables: anAnnouncement: a BlTickEvent Receiver's instance variables: list: a WeakFinalizationList next: nil announcer: an Announcer announcementClass: BlTickEvent action: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSp...etc... BlockClosure>>on:do: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: on: exception fork: handlerAction "Activate the receiver. In ca...etc... Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: nil ex: UnhandledError copy: nil onDoCtx: nil process: nil handler: nil bottom: nil thisCtx: nil Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 --- The full stack --- Array(Object)>>doesNotUnderstand: #self BlWellPanel>>defaultValues: BlWellPanel class>>withSevenPaleColors UndefinedObject>>DoIt OpalCompiler>>evaluate RubSmalltalkEditor>>evaluate:andDo: RubSmalltalkEditor>>highlightEvaluateAndDo: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] in [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: RubEditingArea(RubAbstractTextArea)>>handleEdit: [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>runDeferredActions BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: WeakMessageSend>>value: WeakMessageSend>>cull: WeakMessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: BlockClosure>>on:do: [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE MessageNotUnderstood: Rectangle>>asPoint 14 July 2015 2:08:35.82361 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] Rectangle(Object)>>doesNotUnderstand: #asPoint Receiver: (0@0) corner: (30@30) Arguments and temporary variables: aMessage: asPoint exception: MessageNotUnderstood: Rectangle>>asPoint resumeValue: nil Receiver's instance variables: origin: (0@0) corner: (30@30) BlMinimalMorphView(BlView)>>basicExtent: Receiver: a BlMinimalMorphView Arguments and temporary variables: aPoint: (0@0) corner: (30@30) previousExtent: nil Receiver's instance variables: transform: an AthensAffineTransform ownerReference: a WeakArray(a BlDragWell) visible: true properties: an IdentityDictionary() layoutProperties: a BlLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil extent: (50@50) BlMinimalMorphView(BlProtoView)>>privateExtent: Receiver: a BlMinimalMorphView Arguments and temporary variables: anExtent: (0@0) corner: (30@30) Receiver's instance variables: transform: an AthensAffineTransform ownerReference: a WeakArray(a BlDragWell) visible: true properties: an IdentityDictionary() layoutProperties: a BlLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil extent: (50@50) [ aView privateExtent: anExtent ] in BlExtentRestriction>>extent:of: Receiver: a BlExtentRestriction Arguments and temporary variables: anExtent: (0@0) corner: (30@30) aView: a BlMinimalMorphView Receiver's instance variables: minimalWidth: 0 minimalHeight: 0 maximalWidth: 1073741823 maximalHeight: 1073741823 BlMinimalMorphView(BlProtoView)>>changedAround: Receiver: a BlMinimalMorphView Arguments and temporary variables: aBlock: [ aView privateExtent: anExtent ] previousTransform: an AthensAffineTransform previousBnds: (-1@ -1) corner: (51@51) newTransform: nil newBnds: nil Receiver's instance variables: transform: an AthensAffineTransform ownerReference: a WeakArray(a BlDragWell) visible: true properties: an IdentityDictionary() layoutProperties: a BlLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil extent: (50@50) BlExtentRestriction>>extent:of: Receiver: a BlExtentRestriction Arguments and temporary variables: anExtent: (0@0) corner: (30@30) aView: a BlMinimalMorphView Receiver's instance variables: minimalWidth: 0 minimalHeight: 0 maximalWidth: 1073741823 maximalHeight: 1073741823 BlMinimalMorphView(BlProtoView)>>extent: Receiver: a BlMinimalMorphView Arguments and temporary variables: anExtent: (0@0) corner: (30@30) Receiver's instance variables: transform: an AthensAffineTransform ownerReference: a WeakArray(a BlDragWell) visible: true properties: an IdentityDictionary() layoutProperties: a BlLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil extent: (50@50) BlDragWell(BlMorph)>>defaultView Receiver: a BlDragWell Arguments and temporary variables: Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BlLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: nil announcer: nil submorphs: #() layoutStrategy: a BlDummyLayoutStrategy zIndex: nil style: a BlUINullStyle panel: nil BlDragWell(BlMorph)>>initialize Receiver: a BlDragWell Arguments and temporary variables: Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BlLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: nil announcer: nil submorphs: #() layoutStrategy: a BlDummyLayoutStrategy zIndex: nil style: a BlUINullStyle panel: nil BlDragWell>>initialize Receiver: a BlDragWell Arguments and temporary variables: Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BlLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: nil announcer: nil submorphs: #() layoutStrategy: a BlDummyLayoutStrategy zIndex: nil style: a BlUINullStyle panel: nil BlDragWell class(Behavior)>>new Receiver: BlDragWell Arguments and temporary variables: Receiver's instance variables: superclass: BlMorph methodDict: a MethodDictionary(#defaultBorderColor->BlDragWell>>#defaultBorderC...etc... format: 170 layout: a FixedLayout instanceVariables: #(#panel) organization: a ClassOrganization subclasses: nil name: #BlDragWell classPool: a Dictionary() sharedPools: an OrderedCollection() environment: a SystemDictionary(lots of globals) category: #'Bloc-DragPanels' traitComposition: {} localSelectors: nil BlDragWell class>>on: Receiver: BlDragWell Arguments and temporary variables: aColor: Color lightYellow Receiver's instance variables: superclass: BlMorph methodDict: a MethodDictionary(#defaultBorderColor->BlDragWell>>#defaultBorderC...etc... format: 170 layout: a FixedLayout instanceVariables: #(#panel) organization: a ClassOrganization subclasses: nil name: #BlDragWell classPool: a Dictionary() sharedPools: an OrderedCollection() environment: a SystemDictionary(lots of globals) category: #'Bloc-DragPanels' traitComposition: {} localSelectors: nil [ :value | self addMorphBack: ((self wellClass on: value) panel: self; yourself) ] in BlWellPanel>>addDefaultWellsAndPlus Receiver: a BlWellPanel Arguments and temporary variables: value: Color lightYellow Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BlLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: #() layoutStrategy: a BlDummyLayoutStrategy zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... Array(SequenceableCollection)>>do: Receiver: {Color lightYellow. Color lightGreen. Color lightBlue. Color white. Color veryVeryLightGra...etc... Arguments and temporary variables: aBlock: [ :value | self addMorphBack: ((self wellClass on: value) panel:...etc... index: 1 Receiver's instance variables: {Color lightYellow. Color lightGreen. Color lightBlue. Color white. Color veryVeryLightGra...etc... BlWellPanel>>addDefaultWellsAndPlus Receiver: a BlWellPanel Arguments and temporary variables: Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BlLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: #() layoutStrategy: a BlDummyLayoutStrategy zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... BlWellPanel>>defaultValues: Receiver: a BlWellPanel Arguments and temporary variables: anObject: {Color lightYellow. Color lightGreen. Color lightBlue. Color white. C...etc... Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BlLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: #() layoutStrategy: a BlDummyLayoutStrategy zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... BlWellPanel class>>withSevenPaleColors Receiver: BlWellPanel Arguments and temporary variables: Receiver's instance variables: superclass: BlMorph methodDict: a MethodDictionary(#addDefaultWellsAndPlus->BlWellPanel>>#addDefaul...etc... format: 172 layout: a FixedLayout instanceVariables: #(#title #defaultValues) organization: a ClassOrganization subclasses: nil name: #BlWellPanel classPool: a Dictionary() sharedPools: an OrderedCollection() environment: a SystemDictionary(lots of globals) category: #'Bloc-DragPanels' traitComposition: {} localSelectors: nil UndefinedObject>>DoIt Receiver: nil Arguments and temporary variables: Receiver's instance variables: nil OpalCompiler>>evaluate Receiver: an OpalCompiler Arguments and temporary variables: value: nil selectedSource: a ReadStream itsSelection: a Text for '' itsSelectionString: '' Receiver's instance variables: ast: DoIt ^ BlWellPanel withSevenPaleColors openInWorld source: a ReadStream context: nil receiver: nil compilationContext: a CompilationContext compilationContextClass: nil useFaultyForParsing: false RubSmalltalkEditor>>evaluate:andDo: Receiver: a RubSmalltalkEditor Arguments and temporary variables: aStream: a ReadStream aBlock: [ :result | aBlock value: result ] result: nil rcvr: nil ctxt: nil Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(204472320) selectorChooser: nil notificationStrategy: a GLMPopperNotificationStrategy RubSmalltalkEditor>>highlightEvaluateAndDo: Receiver: a RubSmalltalkEditor Arguments and temporary variables: aBlock: [ :result | ] Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(204472320) selectorChooser: nil notificationStrategy: a GLMPopperNotificationStrategy [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] in [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: Receiver: a GLMMorphicPharoPlaygroundRenderer Arguments and temporary variables: ann: a GLMHighlightAndEvaluate Receiver's instance variables: renderer: a GLMMorphicRenderer textMorph: a RubScrolledTextMorph(654049280) textModel: a GLMRubricSmalltalkTextModel RubEditingArea(RubAbstractTextArea)>>handleEdit: Receiver: a RubEditingArea(204472320) Arguments and temporary variables: editBlock: [ textMorph textArea editor highlightEvaluateAndDo: ann action. tex...etc... Receiver's instance variables: bounds: (0@0) corner: (580@69) owner: a TransformWithLayoutMorph(782237696) submorphs: an Array(a RubCursor(650379264) a RubPrimarySelectionMorph(797704192...etc... fullBounds: (0@0) corner: (580@69) color: Color transparent extension: a MorphExtension (676069376) [other: (announcer -> an Announcer) (k...etc... model: a GLMRubricSmalltalkTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(743702528) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkScriptingMode cursor: a RubCursor(650379264) segments: an OrderedCollection(a RubHighlightSegmentMorph(503578624)) getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: Receiver: a GLMMorphicPharoPlaygroundRenderer Arguments and temporary variables: ann: a GLMHighlightAndEvaluate Receiver's instance variables: renderer: a GLMMorphicRenderer textMorph: a RubScrolledTextMorph(654049280) textModel: a GLMRubricSmalltalkTextModel BlMorphicCompatibleBlocSpace(BlBlocSpace)>>runDeferredActions Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: nextInQueue: [ textMorph textArea handleEdit: [ textMorph textArea editor ...etc... Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: a BlTickEvent Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items WeakMessageSend>>value: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: anObject: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull:cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg1: a BlTickEvent arg2: an Announcer Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: Receiver: a WeakAnnouncementSubscription Arguments and temporary variables: anAnnouncement: a BlTickEvent Receiver's instance variables: list: a WeakFinalizationList next: nil announcer: an Announcer announcementClass: BlTickEvent action: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSp...etc... BlockClosure>>on:do: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: on: exception fork: handlerAction "Activate the receiver. In ca...etc... Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: nil ex: UnhandledError copy: nil onDoCtx: nil process: nil handler: nil bottom: nil thisCtx: nil Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 --- The full stack --- Rectangle(Object)>>doesNotUnderstand: #asPoint BlMinimalMorphView(BlView)>>basicExtent: BlMinimalMorphView(BlProtoView)>>privateExtent: [ aView privateExtent: anExtent ] in BlExtentRestriction>>extent:of: BlMinimalMorphView(BlProtoView)>>changedAround: BlExtentRestriction>>extent:of: BlMinimalMorphView(BlProtoView)>>extent: BlDragWell(BlMorph)>>defaultView BlDragWell(BlMorph)>>initialize BlDragWell>>initialize BlDragWell class(Behavior)>>new BlDragWell class>>on: [ :value | self addMorphBack: ((self wellClass on: value) panel: self; yourself) ] in BlWellPanel>>addDefaultWellsAndPlus Array(SequenceableCollection)>>do: BlWellPanel>>addDefaultWellsAndPlus BlWellPanel>>defaultValues: BlWellPanel class>>withSevenPaleColors UndefinedObject>>DoIt OpalCompiler>>evaluate RubSmalltalkEditor>>evaluate:andDo: RubSmalltalkEditor>>highlightEvaluateAndDo: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] in [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: RubEditingArea(RubAbstractTextArea)>>handleEdit: [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>runDeferredActions BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: WeakMessageSend>>value: WeakMessageSend>>cull: WeakMessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: BlockClosure>>on:do: [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE MessageNotUnderstood: BlDragWell>>layoutPropertiesFirstAxisDo: 14 July 2015 2:57:40.453607 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] BlDragWell(Object)>>doesNotUnderstand: #layoutPropertiesFirstAxisDo: Receiver: a BlDragWell Arguments and temporary variables: aMessage: layoutPropertiesFirstAxisDo: [ :a | a beRigid ] exception: MessageNotUnderstood: BlDragWell>>layoutPropertiesFirstAxisDo: resumeValue: nil Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BlLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: #() layoutStrategy: a BlDummyLayoutStrategy zIndex: nil style: a BlUINullStyle panel: nil BlDragWell(BlMorph)>>doesNotUnderstand: #layoutPropertiesFirstAxisDo: Receiver: a BlDragWell Arguments and temporary variables: aMessage: layoutPropertiesFirstAxisDo: [ :a | a beRigid ] cat: nil Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BlLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: #() layoutStrategy: a BlDummyLayoutStrategy zIndex: nil style: a BlUINullStyle panel: nil BlDragWell>>initialize Receiver: a BlDragWell Arguments and temporary variables: Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BlLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: #() layoutStrategy: a BlDummyLayoutStrategy zIndex: nil style: a BlUINullStyle panel: nil BlDragWell class(Behavior)>>new Receiver: BlDragWell Arguments and temporary variables: Receiver's instance variables: superclass: BlMorph methodDict: a MethodDictionary(#defaultBorderColor->BlDragWell>>#defaultBorderC...etc... format: 170 layout: a FixedLayout instanceVariables: #(#panel) organization: a ClassOrganization subclasses: nil name: #BlDragWell classPool: a Dictionary() sharedPools: an OrderedCollection() environment: a SystemDictionary(lots of globals) category: #'Bloc-DragPanels' traitComposition: {} localSelectors: nil BlDragWell class>>on: Receiver: BlDragWell Arguments and temporary variables: aColor: Color lightYellow Receiver's instance variables: superclass: BlMorph methodDict: a MethodDictionary(#defaultBorderColor->BlDragWell>>#defaultBorderC...etc... format: 170 layout: a FixedLayout instanceVariables: #(#panel) organization: a ClassOrganization subclasses: nil name: #BlDragWell classPool: a Dictionary() sharedPools: an OrderedCollection() environment: a SystemDictionary(lots of globals) category: #'Bloc-DragPanels' traitComposition: {} localSelectors: nil [ :value | self addMorphBack: ((self wellClass on: value) panel: self; yourself) ] in BlWellPanel>>addDefaultWellsAndPlus Receiver: a BlWellPanel Arguments and temporary variables: value: Color lightYellow Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BlLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: #() layoutStrategy: a BlBoxLayoutStrategy zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... Array(SequenceableCollection)>>do: Receiver: {Color lightYellow. Color lightGreen. Color lightBlue. Color white. Color veryVeryLightGra...etc... Arguments and temporary variables: aBlock: [ :value | self addMorphBack: ((self wellClass on: value) panel:...etc... index: 1 Receiver's instance variables: {Color lightYellow. Color lightGreen. Color lightBlue. Color white. Color veryVeryLightGra...etc... BlWellPanel>>addDefaultWellsAndPlus Receiver: a BlWellPanel Arguments and temporary variables: Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BlLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: #() layoutStrategy: a BlBoxLayoutStrategy zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... BlWellPanel>>defaultValues: Receiver: a BlWellPanel Arguments and temporary variables: anObject: {Color lightYellow. Color lightGreen. Color lightBlue. Color white. C...etc... Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BlLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: #() layoutStrategy: a BlBoxLayoutStrategy zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... BlWellPanel class>>withSevenPaleColors Receiver: BlWellPanel Arguments and temporary variables: Receiver's instance variables: superclass: BlMorph methodDict: a MethodDictionary(#addDefaultWellsAndPlus->BlWellPanel>>#addDefaul...etc... format: 172 layout: a FixedLayout instanceVariables: #(#title #defaultValues) organization: a ClassOrganization subclasses: nil name: #BlWellPanel classPool: a Dictionary() sharedPools: an OrderedCollection() environment: a SystemDictionary(lots of globals) category: #'Bloc-DragPanels' traitComposition: {} localSelectors: nil UndefinedObject>>DoIt Receiver: nil Arguments and temporary variables: Receiver's instance variables: nil OpalCompiler>>evaluate Receiver: an OpalCompiler Arguments and temporary variables: value: nil selectedSource: a ReadStream itsSelection: a Text for '' itsSelectionString: '' Receiver's instance variables: ast: DoIt ^ BlWellPanel withSevenPaleColors openInWorld source: a ReadStream context: nil receiver: nil compilationContext: a CompilationContext compilationContextClass: nil useFaultyForParsing: false RubSmalltalkEditor>>evaluate:andDo: Receiver: a RubSmalltalkEditor Arguments and temporary variables: aStream: a ReadStream aBlock: [ :result | aBlock value: result ] result: nil rcvr: nil ctxt: nil Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(204472320) selectorChooser: nil notificationStrategy: a GLMPopperNotificationStrategy RubSmalltalkEditor>>highlightEvaluateAndDo: Receiver: a RubSmalltalkEditor Arguments and temporary variables: aBlock: [ :result | ] Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(204472320) selectorChooser: nil notificationStrategy: a GLMPopperNotificationStrategy [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] in [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: Receiver: a GLMMorphicPharoPlaygroundRenderer Arguments and temporary variables: ann: a GLMHighlightAndEvaluate Receiver's instance variables: renderer: a GLMMorphicRenderer textMorph: a RubScrolledTextMorph(654049280) textModel: a GLMRubricSmalltalkTextModel RubEditingArea(RubAbstractTextArea)>>handleEdit: Receiver: a RubEditingArea(204472320) Arguments and temporary variables: editBlock: [ textMorph textArea editor highlightEvaluateAndDo: ann action. tex...etc... Receiver's instance variables: bounds: (0@0) corner: (580@69) owner: a TransformWithLayoutMorph(782237696) submorphs: an Array(a RubCursor(650379264) a RubPrimarySelectionMorph(797704192...etc... fullBounds: nil color: Color transparent extension: a MorphExtension (676069376) [other: (announcer -> an Announcer) (k...etc... model: a GLMRubricSmalltalkTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(743702528) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkScriptingMode cursor: a RubCursor(650379264) segments: an OrderedCollection(a RubHighlightSegmentMorph(222298112)) getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: Receiver: a GLMMorphicPharoPlaygroundRenderer Arguments and temporary variables: ann: a GLMHighlightAndEvaluate Receiver's instance variables: renderer: a GLMMorphicRenderer textMorph: a RubScrolledTextMorph(654049280) textModel: a GLMRubricSmalltalkTextModel BlMorphicCompatibleBlocSpace(BlBlocSpace)>>runDeferredActions Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: nextInQueue: [ textMorph textArea handleEdit: [ textMorph textArea editor ...etc... Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: a BlTickEvent Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items WeakMessageSend>>value: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: anObject: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull:cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg1: a BlTickEvent arg2: an Announcer Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: Receiver: a WeakAnnouncementSubscription Arguments and temporary variables: anAnnouncement: a BlTickEvent Receiver's instance variables: list: a WeakFinalizationList next: nil announcer: an Announcer announcementClass: BlTickEvent action: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSp...etc... BlockClosure>>on:do: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: on: exception fork: handlerAction "Activate the receiver. In ca...etc... Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: nil ex: UnhandledError copy: nil onDoCtx: nil process: nil handler: nil bottom: nil thisCtx: nil Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 --- The full stack --- BlDragWell(Object)>>doesNotUnderstand: #layoutPropertiesFirstAxisDo: BlDragWell(BlMorph)>>doesNotUnderstand: #layoutPropertiesFirstAxisDo: BlDragWell>>initialize BlDragWell class(Behavior)>>new BlDragWell class>>on: [ :value | self addMorphBack: ((self wellClass on: value) panel: self; yourself) ] in BlWellPanel>>addDefaultWellsAndPlus Array(SequenceableCollection)>>do: BlWellPanel>>addDefaultWellsAndPlus BlWellPanel>>defaultValues: BlWellPanel class>>withSevenPaleColors UndefinedObject>>DoIt OpalCompiler>>evaluate RubSmalltalkEditor>>evaluate:andDo: RubSmalltalkEditor>>highlightEvaluateAndDo: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] in [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: RubEditingArea(RubAbstractTextArea)>>handleEdit: [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>runDeferredActions BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: WeakMessageSend>>value: WeakMessageSend>>cull: WeakMessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: BlockClosure>>on:do: [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE MessageNotUnderstood: BlStackLayoutStrategy>>beLeftToRight 14 July 2015 3:10:23.759608 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] BlStackLayoutStrategy(Object)>>doesNotUnderstand: #beLeftToRight Receiver: a BlStackLayoutStrategy Arguments and temporary variables: aMessage: beLeftToRight exception: MessageNotUnderstood: BlStackLayoutStrategy>>beLeftToRight resumeValue: nil Receiver's instance variables: layouting: false plugged: true BlWellPanel>>initialize Receiver: a BlWellPanel Arguments and temporary variables: Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BlLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: #() layoutStrategy: a BlDummyLayoutStrategy zIndex: nil style: a BlUINullStyle title: nil defaultValues: nil BlWellPanel class(Behavior)>>new Receiver: BlWellPanel Arguments and temporary variables: Receiver's instance variables: superclass: BlMorph methodDict: a MethodDictionary(#addDefaultWellsAndPlus->BlWellPanel>>#addDefaul...etc... format: 172 layout: a FixedLayout instanceVariables: #(#title #defaultValues) organization: a ClassOrganization subclasses: nil name: #BlWellPanel classPool: a Dictionary() sharedPools: an OrderedCollection() environment: a SystemDictionary(lots of globals) category: #'Bloc-DragPanels' traitComposition: {} localSelectors: nil BlWellPanel class>>withSevenPaleColors Receiver: BlWellPanel Arguments and temporary variables: Receiver's instance variables: superclass: BlMorph methodDict: a MethodDictionary(#addDefaultWellsAndPlus->BlWellPanel>>#addDefaul...etc... format: 172 layout: a FixedLayout instanceVariables: #(#title #defaultValues) organization: a ClassOrganization subclasses: nil name: #BlWellPanel classPool: a Dictionary() sharedPools: an OrderedCollection() environment: a SystemDictionary(lots of globals) category: #'Bloc-DragPanels' traitComposition: {} localSelectors: nil UndefinedObject>>DoIt Receiver: nil Arguments and temporary variables: Receiver's instance variables: nil OpalCompiler>>evaluate Receiver: an OpalCompiler Arguments and temporary variables: value: nil selectedSource: a ReadStream itsSelection: a Text for '' itsSelectionString: '' Receiver's instance variables: ast: DoIt ^ BlWellPanel withSevenPaleColors openInWorld source: a ReadStream context: nil receiver: nil compilationContext: a CompilationContext compilationContextClass: nil useFaultyForParsing: false RubSmalltalkEditor>>evaluate:andDo: Receiver: a RubSmalltalkEditor Arguments and temporary variables: aStream: a ReadStream aBlock: [ :result | aBlock value: result ] result: nil rcvr: nil ctxt: nil Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(204472320) selectorChooser: nil notificationStrategy: a GLMPopperNotificationStrategy RubSmalltalkEditor>>highlightEvaluateAndDo: Receiver: a RubSmalltalkEditor Arguments and temporary variables: aBlock: [ :result | ] Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(204472320) selectorChooser: nil notificationStrategy: a GLMPopperNotificationStrategy [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] in [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: Receiver: a GLMMorphicPharoPlaygroundRenderer Arguments and temporary variables: ann: a GLMHighlightAndEvaluate Receiver's instance variables: renderer: a GLMMorphicRenderer textMorph: a RubScrolledTextMorph(654049280) textModel: a GLMRubricSmalltalkTextModel RubEditingArea(RubAbstractTextArea)>>handleEdit: Receiver: a RubEditingArea(204472320) Arguments and temporary variables: editBlock: [ textMorph textArea editor highlightEvaluateAndDo: ann action. tex...etc... Receiver's instance variables: bounds: (0@0) corner: (580@69) owner: a TransformWithLayoutMorph(782237696) submorphs: an Array(a RubCursor(650379264) a RubPrimarySelectionMorph(797704192...etc... fullBounds: nil color: Color transparent extension: a MorphExtension (676069376) [other: (announcer -> an Announcer) (k...etc... model: a GLMRubricSmalltalkTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(743702528) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkScriptingMode cursor: a RubCursor(650379264) segments: an OrderedCollection(a RubHighlightSegmentMorph(459800576)) getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: Receiver: a GLMMorphicPharoPlaygroundRenderer Arguments and temporary variables: ann: a GLMHighlightAndEvaluate Receiver's instance variables: renderer: a GLMMorphicRenderer textMorph: a RubScrolledTextMorph(654049280) textModel: a GLMRubricSmalltalkTextModel BlMorphicCompatibleBlocSpace(BlBlocSpace)>>runDeferredActions Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: nextInQueue: [ textMorph textArea handleEdit: [ textMorph textArea editor ...etc... Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: a BlTickEvent Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items WeakMessageSend>>value: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: anObject: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull:cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg1: a BlTickEvent arg2: an Announcer Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: Receiver: a WeakAnnouncementSubscription Arguments and temporary variables: anAnnouncement: a BlTickEvent Receiver's instance variables: list: a WeakFinalizationList next: nil announcer: an Announcer announcementClass: BlTickEvent action: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSp...etc... BlockClosure>>on:do: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: on: exception fork: handlerAction "Activate the receiver. In ca...etc... Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: nil ex: UnhandledError copy: nil onDoCtx: nil process: nil handler: nil bottom: nil thisCtx: nil Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 --- The full stack --- BlStackLayoutStrategy(Object)>>doesNotUnderstand: #beLeftToRight BlWellPanel>>initialize BlWellPanel class(Behavior)>>new BlWellPanel class>>withSevenPaleColors UndefinedObject>>DoIt OpalCompiler>>evaluate RubSmalltalkEditor>>evaluate:andDo: RubSmalltalkEditor>>highlightEvaluateAndDo: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] in [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: RubEditingArea(RubAbstractTextArea)>>handleEdit: [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>runDeferredActions BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: WeakMessageSend>>value: WeakMessageSend>>cull: WeakMessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: BlockClosure>>on:do: [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE MessageNotUnderstood: BlStackLayoutStrategy>>padding: 14 July 2015 3:10:51.877611 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] BlStackLayoutStrategy(Object)>>doesNotUnderstand: #padding: Receiver: a BlStackLayoutStrategy Arguments and temporary variables: aMessage: padding: 2 exception: MessageNotUnderstood: BlStackLayoutStrategy>>padding: resumeValue: nil Receiver's instance variables: layouting: false plugged: true BlWellPanel>>initialize Receiver: a BlWellPanel Arguments and temporary variables: Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BlLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: #() layoutStrategy: a BlDummyLayoutStrategy zIndex: nil style: a BlUINullStyle title: nil defaultValues: nil BlWellPanel class(Behavior)>>new Receiver: BlWellPanel Arguments and temporary variables: Receiver's instance variables: superclass: BlMorph methodDict: a MethodDictionary(#addDefaultWellsAndPlus->BlWellPanel>>#addDefaul...etc... format: 172 layout: a FixedLayout instanceVariables: #(#title #defaultValues) organization: a ClassOrganization subclasses: nil name: #BlWellPanel classPool: a Dictionary() sharedPools: an OrderedCollection() environment: a SystemDictionary(lots of globals) category: #'Bloc-DragPanels' traitComposition: {} localSelectors: nil BlWellPanel class>>withSevenPaleColors Receiver: BlWellPanel Arguments and temporary variables: Receiver's instance variables: superclass: BlMorph methodDict: a MethodDictionary(#addDefaultWellsAndPlus->BlWellPanel>>#addDefaul...etc... format: 172 layout: a FixedLayout instanceVariables: #(#title #defaultValues) organization: a ClassOrganization subclasses: nil name: #BlWellPanel classPool: a Dictionary() sharedPools: an OrderedCollection() environment: a SystemDictionary(lots of globals) category: #'Bloc-DragPanels' traitComposition: {} localSelectors: nil UndefinedObject>>DoIt Receiver: nil Arguments and temporary variables: Receiver's instance variables: nil OpalCompiler>>evaluate Receiver: an OpalCompiler Arguments and temporary variables: value: nil selectedSource: a ReadStream itsSelection: a Text for '' itsSelectionString: '' Receiver's instance variables: ast: DoIt ^ BlWellPanel withSevenPaleColors openInWorld source: a ReadStream context: nil receiver: nil compilationContext: a CompilationContext compilationContextClass: nil useFaultyForParsing: false RubSmalltalkEditor>>evaluate:andDo: Receiver: a RubSmalltalkEditor Arguments and temporary variables: aStream: a ReadStream aBlock: [ :result | aBlock value: result ] result: nil rcvr: nil ctxt: nil Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(204472320) selectorChooser: nil notificationStrategy: a GLMPopperNotificationStrategy RubSmalltalkEditor>>highlightEvaluateAndDo: Receiver: a RubSmalltalkEditor Arguments and temporary variables: aBlock: [ :result | ] Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(204472320) selectorChooser: nil notificationStrategy: a GLMPopperNotificationStrategy [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] in [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: Receiver: a GLMMorphicPharoPlaygroundRenderer Arguments and temporary variables: ann: a GLMHighlightAndEvaluate Receiver's instance variables: renderer: a GLMMorphicRenderer textMorph: a RubScrolledTextMorph(654049280) textModel: a GLMRubricSmalltalkTextModel RubEditingArea(RubAbstractTextArea)>>handleEdit: Receiver: a RubEditingArea(204472320) Arguments and temporary variables: editBlock: [ textMorph textArea editor highlightEvaluateAndDo: ann action. tex...etc... Receiver's instance variables: bounds: (0@0) corner: (580@69) owner: a TransformWithLayoutMorph(782237696) submorphs: an Array(a RubCursor(650379264) a RubPrimarySelectionMorph(797704192...etc... fullBounds: nil color: Color transparent extension: a MorphExtension (676069376) [other: (announcer -> an Announcer) (k...etc... model: a GLMRubricSmalltalkTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(743702528) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkScriptingMode cursor: a RubCursor(650379264) segments: an OrderedCollection(a RubHighlightSegmentMorph(456654848)) getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: Receiver: a GLMMorphicPharoPlaygroundRenderer Arguments and temporary variables: ann: a GLMHighlightAndEvaluate Receiver's instance variables: renderer: a GLMMorphicRenderer textMorph: a RubScrolledTextMorph(654049280) textModel: a GLMRubricSmalltalkTextModel BlMorphicCompatibleBlocSpace(BlBlocSpace)>>runDeferredActions Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: nextInQueue: [ textMorph textArea handleEdit: [ textMorph textArea editor ...etc... Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: a BlTickEvent Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items WeakMessageSend>>value: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: anObject: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull:cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg1: a BlTickEvent arg2: an Announcer Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: Receiver: a WeakAnnouncementSubscription Arguments and temporary variables: anAnnouncement: a BlTickEvent Receiver's instance variables: list: a WeakFinalizationList next: nil announcer: an Announcer announcementClass: BlTickEvent action: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSp...etc... BlockClosure>>on:do: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: on: exception fork: handlerAction "Activate the receiver. In ca...etc... Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: nil ex: UnhandledError copy: nil onDoCtx: nil process: nil handler: nil bottom: nil thisCtx: nil Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 --- The full stack --- BlStackLayoutStrategy(Object)>>doesNotUnderstand: #padding: BlWellPanel>>initialize BlWellPanel class(Behavior)>>new BlWellPanel class>>withSevenPaleColors UndefinedObject>>DoIt OpalCompiler>>evaluate RubSmalltalkEditor>>evaluate:andDo: RubSmalltalkEditor>>highlightEvaluateAndDo: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] in [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: RubEditingArea(RubAbstractTextArea)>>handleEdit: [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>runDeferredActions BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: WeakMessageSend>>value: WeakMessageSend>>cull: WeakMessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: BlockClosure>>on:do: [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE MessageNotUnderstood: receiver of "isRightToLeft" is nil 14 July 2015 3:14:57.567607 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] UndefinedObject(Object)>>doesNotUnderstand: #isRightToLeft Receiver: nil Arguments and temporary variables: aMessage: isRightToLeft exception: MessageNotUnderstood: receiver of "isRightToLeft" is nil resumeValue: nil Receiver's instance variables: nil BlRowLayout(BlBoxLayout)>>initializeCells Receiver: a BlRowLayout Arguments and temporary variables: b: [ :c | self addCell: (self newCellFor: c) ] Receiver's instance variables: strategy: nil targetReference: nil position: nil extent: nil firstCell: nil lastCell: nil BlRowLayout>>initializeCells Receiver: a BlRowLayout Arguments and temporary variables: Receiver's instance variables: strategy: nil targetReference: nil position: nil extent: nil firstCell: nil lastCell: nil BlRowLayout(BlBoxLayout)>>adaptContentsToExtent Receiver: a BlRowLayout Arguments and temporary variables: Receiver's instance variables: strategy: nil targetReference: nil position: nil extent: nil firstCell: nil lastCell: nil BlWellPanel>>initialize Receiver: a BlWellPanel Arguments and temporary variables: Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BlLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: #() layoutStrategy: a BlDummyLayoutStrategy zIndex: nil style: a BlUINullStyle title: nil defaultValues: nil BlWellPanel class(Behavior)>>new Receiver: BlWellPanel Arguments and temporary variables: Receiver's instance variables: superclass: BlMorph methodDict: a MethodDictionary(#addDefaultWellsAndPlus->BlWellPanel>>#addDefaul...etc... format: 172 layout: a FixedLayout instanceVariables: #(#title #defaultValues) organization: a ClassOrganization subclasses: nil name: #BlWellPanel classPool: a Dictionary() sharedPools: an OrderedCollection() environment: a SystemDictionary(lots of globals) category: #'Bloc-DragPanels' traitComposition: {} localSelectors: nil BlWellPanel class>>withSevenPaleColors Receiver: BlWellPanel Arguments and temporary variables: Receiver's instance variables: superclass: BlMorph methodDict: a MethodDictionary(#addDefaultWellsAndPlus->BlWellPanel>>#addDefaul...etc... format: 172 layout: a FixedLayout instanceVariables: #(#title #defaultValues) organization: a ClassOrganization subclasses: nil name: #BlWellPanel classPool: a Dictionary() sharedPools: an OrderedCollection() environment: a SystemDictionary(lots of globals) category: #'Bloc-DragPanels' traitComposition: {} localSelectors: nil UndefinedObject>>DoIt Receiver: nil Arguments and temporary variables: Receiver's instance variables: nil OpalCompiler>>evaluate Receiver: an OpalCompiler Arguments and temporary variables: value: nil selectedSource: a ReadStream itsSelection: a Text for '' itsSelectionString: '' Receiver's instance variables: ast: DoIt ^ BlWellPanel withSevenPaleColors openInWorld source: a ReadStream context: nil receiver: nil compilationContext: a CompilationContext compilationContextClass: nil useFaultyForParsing: false RubSmalltalkEditor>>evaluate:andDo: Receiver: a RubSmalltalkEditor Arguments and temporary variables: aStream: a ReadStream aBlock: [ :result | aBlock value: result ] result: nil rcvr: nil ctxt: nil Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(204472320) selectorChooser: nil notificationStrategy: a GLMPopperNotificationStrategy RubSmalltalkEditor>>highlightEvaluateAndDo: Receiver: a RubSmalltalkEditor Arguments and temporary variables: aBlock: [ :result | ] Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(204472320) selectorChooser: nil notificationStrategy: a GLMPopperNotificationStrategy [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] in [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: Receiver: a GLMMorphicPharoPlaygroundRenderer Arguments and temporary variables: ann: a GLMHighlightAndEvaluate Receiver's instance variables: renderer: a GLMMorphicRenderer textMorph: a RubScrolledTextMorph(654049280) textModel: a GLMRubricSmalltalkTextModel RubEditingArea(RubAbstractTextArea)>>handleEdit: Receiver: a RubEditingArea(204472320) Arguments and temporary variables: editBlock: [ textMorph textArea editor highlightEvaluateAndDo: ann action. tex...etc... Receiver's instance variables: bounds: (0@0) corner: (580@69) owner: a TransformWithLayoutMorph(782237696) submorphs: an Array(a RubCursor(650379264) a RubPrimarySelectionMorph(797704192...etc... fullBounds: nil color: Color transparent extension: a MorphExtension (676069376) [other: (announcer -> an Announcer) (k...etc... model: a GLMRubricSmalltalkTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(743702528) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkScriptingMode cursor: a RubCursor(650379264) segments: an OrderedCollection(a RubHighlightSegmentMorph(60817408)) getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: Receiver: a GLMMorphicPharoPlaygroundRenderer Arguments and temporary variables: ann: a GLMHighlightAndEvaluate Receiver's instance variables: renderer: a GLMMorphicRenderer textMorph: a RubScrolledTextMorph(654049280) textModel: a GLMRubricSmalltalkTextModel BlMorphicCompatibleBlocSpace(BlBlocSpace)>>runDeferredActions Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: nextInQueue: [ textMorph textArea handleEdit: [ textMorph textArea editor ...etc... Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: a BlTickEvent Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items WeakMessageSend>>value: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: anObject: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull:cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg1: a BlTickEvent arg2: an Announcer Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: Receiver: a WeakAnnouncementSubscription Arguments and temporary variables: anAnnouncement: a BlTickEvent Receiver's instance variables: list: a WeakFinalizationList next: nil announcer: an Announcer announcementClass: BlTickEvent action: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSp...etc... BlockClosure>>on:do: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: on: exception fork: handlerAction "Activate the receiver. In ca...etc... Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: nil ex: UnhandledError copy: nil onDoCtx: nil process: nil handler: nil bottom: nil thisCtx: nil Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 --- The full stack --- UndefinedObject(Object)>>doesNotUnderstand: #isRightToLeft BlRowLayout(BlBoxLayout)>>initializeCells BlRowLayout>>initializeCells BlRowLayout(BlBoxLayout)>>adaptContentsToExtent BlWellPanel>>initialize BlWellPanel class(Behavior)>>new BlWellPanel class>>withSevenPaleColors UndefinedObject>>DoIt OpalCompiler>>evaluate RubSmalltalkEditor>>evaluate:andDo: RubSmalltalkEditor>>highlightEvaluateAndDo: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] in [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: RubEditingArea(RubAbstractTextArea)>>handleEdit: [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>runDeferredActions BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: WeakMessageSend>>value: WeakMessageSend>>cull: WeakMessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: BlockClosure>>on:do: [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE MessageNotUnderstood: BlLayoutProperties>>hasFloating 14 July 2015 6:02:09.223608 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] BlLayoutProperties(Object)>>doesNotUnderstand: #hasFloating Receiver: a BlLayoutProperties Arguments and temporary variables: aMessage: hasFloating exception: MessageNotUnderstood: BlLayoutProperties>>hasFloating resumeValue: nil Receiver's instance variables: positioning: #top resizing: #rigid anchors: nil extentRestriction: nil secondAxisProperties: a BlSecondAxisLayoutProperties [ :origin :each | | result | result := origin + (each layoutProperties hasFloating ifFalse: [ aBlock cull: origin cull: each ] ifTrue: [ self float: each ]). self align: each. BrServiceLocator uniqueInstance layouter layoutDone: each -> aRectangle. result ] in BrHorizontalLinearLayout(BrLinearLayout)>>layout:in:inject:into: Receiver: a BrHorizontalLinearLayout Arguments and temporary variables: aBrick: a BlWellPanel aRectangle: (1@1) corner: (49@49) anInteger: (0@0) aBlock: [ :origin :each | each privatePosition: (origin x + each marginLeft) @...etc... origin: (0@0) each: a BlDragWell result: nil Receiver's instance variables: layouting: true plugged: true [ :each | nextValue := binaryBlock value: nextValue value: each ] in Array(Collection)>>inject:into: Receiver: an Array(a BlDragWell) Arguments and temporary variables: thisValue: (0@0) binaryBlock: [ :origin :each | | result | result := origin + (each layoutPr...etc... nextValue: (0@0) each: a BlDragWell Receiver's instance variables: an Array(a BlDragWell) Array(SequenceableCollection)>>do: Receiver: an Array(a BlDragWell) Arguments and temporary variables: aBlock: [ :each | nextValue := binaryBlock value: nextValue value: each ] index: 1 Receiver's instance variables: an Array(a BlDragWell) Array(Collection)>>inject:into: Receiver: an Array(a BlDragWell) Arguments and temporary variables: nextValue: (0@0) thisValue: (0@0) binaryBlock: [ :origin :each | | result | result := origin + (each layoutPr...etc... Receiver's instance variables: an Array(a BlDragWell) BrHorizontalLinearLayout(BrLinearLayout)>>layout:in:inject:into: Receiver: a BrHorizontalLinearLayout Arguments and temporary variables: aBrick: a BlWellPanel aRectangle: (1@1) corner: (49@49) anInteger: (0@0) aBlock: [ :origin :each | each privatePosition: (origin x + each marginLeft) @...etc... Receiver's instance variables: layouting: true plugged: true BrHorizontalLinearLayout>>layout:in: Receiver: a BrHorizontalLinearLayout Arguments and temporary variables: aBrick: a BlWellPanel newBounds: (1@1) corner: (49@49) Receiver's instance variables: layouting: true plugged: true BlBrickHeightTraverser(BlBrickLayoutTraverser)>>layoutComponents: Receiver: a BlBrickHeightTraverser Arguments and temporary variables: aView: a BlWellPanel Receiver's instance variables: isTraversing: nil BlBrickHeightTraverser(BlBrickLayoutTraverser)>>layoutAround:inContext: Receiver: a BlBrickHeightTraverser Arguments and temporary variables: aView: a BlWellPanel aContextView: nil shoudBeDamaged: true Receiver's instance variables: isTraversing: nil BlBrickLayouter>>layout: Receiver: a BlBrickLayouter Arguments and temporary variables: aMorph: a BlWellPanel Receiver's instance variables: layouting: true layoutDoneStack: a LinkedList(a BlWellPanel->(0@0) corner: (50@50)) BlBrickLayouter>>privateLayoutIn: Receiver: a BlBrickLayouter Arguments and temporary variables: aBrick: a BlWellPanel Receiver's instance variables: layouting: true layoutDoneStack: a LinkedList(a BlWellPanel->(0@0) corner: (50@50)) [ BrServiceLocator uniqueInstance layouter layoutDone: aBrick -> aBrick bounds. self privateLayoutIn: aBrick ] in [ self privateForbidLayoutingWhile: [ BrServiceLocator uniqueInstance layouter layoutDone: aBrick -> aBrick bounds. self privateLayoutIn: aBrick ] ] in BlBrickLayouter>>layoutIn: Receiver: a BlBrickLayouter Arguments and temporary variables: aBrick: a BlWellPanel Receiver's instance variables: layouting: true layoutDoneStack: a LinkedList(a BlWellPanel->(0@0) corner: (50@50)) BlockClosure>>ensure: Receiver: [ BrServiceLocator uniqueInstance layouter layoutDone: aBrick -> aBrick bounds. self priv...etc... Arguments and temporary variables: aBlock: [ layouting := false ] complete: nil returnValue: nil Receiver's instance variables: outerContext: [ self privateForbidLayoutingWhile: [ BrServiceLocator uniqu...etc... startpc: 83 numArgs: 0 BlBrickLayouter>>privateForbidLayoutingWhile: Receiver: a BlBrickLayouter Arguments and temporary variables: aBlock: [ BrServiceLocator uniqueInstance layouter layoutDone: aBrick -> aBric...etc... Receiver's instance variables: layouting: true layoutDoneStack: a LinkedList(a BlWellPanel->(0@0) corner: (50@50)) [ self privateForbidLayoutingWhile: [ BrServiceLocator uniqueInstance layouter layoutDone: aBrick -> aBrick bounds. self privateLayoutIn: aBrick ] ] in BlBrickLayouter>>layoutIn: Receiver: a BlBrickLayouter Arguments and temporary variables: aBrick: a BlWellPanel Receiver's instance variables: layouting: true layoutDoneStack: a LinkedList(a BlWellPanel->(0@0) corner: (50@50)) BlockClosure>>ensure: Receiver: [ self privateForbidLayoutingWhile: [ BrServiceLocator uniqueInstance layouter layout...etc... Arguments and temporary variables: aBlock: [ layouting ifFalse: [ BrServiceLocator uniqueInstance layouter retri...etc... complete: nil returnValue: nil Receiver's instance variables: outerContext: BlBrickLayouter>>layoutIn: startpc: 77 numArgs: 0 BlBrickLayouter>>layoutIn: Receiver: a BlBrickLayouter Arguments and temporary variables: aBrick: a BlWellPanel Receiver's instance variables: layouting: true layoutDoneStack: a LinkedList(a BlWellPanel->(0@0) corner: (50@50)) [ "Compute the layout for the given morph based on the new bounds" aView aboutToDoLayoutIn: newBounds. BrServiceLocator uniqueInstance layouter layoutIn: aView ] in BrHorizontalLinearLayout(BrLinearLayout)>>doLayout:in: Receiver: a BrHorizontalLinearLayout Arguments and temporary variables: aView: a BlWellPanel newBounds: (1@1) corner: (49@49) Receiver's instance variables: layouting: true plugged: true BlockClosure>>ensure: Receiver: [ "Compute the layout for the given morph based on the new bounds" aView aboutToDoLayoutI...etc... Arguments and temporary variables: aBlock: [ layouting := false ] complete: nil returnValue: nil Receiver's instance variables: outerContext: BrHorizontalLinearLayout(BrLinearLayout)>>doLayout:in: startpc: 52 numArgs: 0 BrHorizontalLinearLayout(BlLayoutStrategy)>>privateForbidLayoutingWhile: Receiver: a BrHorizontalLinearLayout Arguments and temporary variables: aBlock: [ "Compute the layout for the given morph based on the new bounds" aVi...etc... Receiver's instance variables: layouting: true plugged: true BrHorizontalLinearLayout(BrLinearLayout)>>doLayout:in: Receiver: a BrHorizontalLinearLayout Arguments and temporary variables: aView: a BlWellPanel newBounds: (1@1) corner: (49@49) Receiver's instance variables: layouting: true plugged: true BlWellPanel(BlProtoView)>>doLayoutIn: Receiver: a BlWellPanel Arguments and temporary variables: newInnerBounds: (1@1) corner: (49@49) Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BrLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: an Array(a BlDragWell) layoutStrategy: a BrHorizontalLinearLayout zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... BlWellPanel(BlProtoView)>>doLayout Receiver: a BlWellPanel Arguments and temporary variables: Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BrLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: an Array(a BlDragWell) layoutStrategy: a BrHorizontalLinearLayout zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... BlViewBoundsCache>>updateBounds Receiver: a BlViewBoundsCache Arguments and temporary variables: Receiver's instance variables: bounds: nil extent: (50@50) dirty: true drawingBounds: nil innerBounds: nil updating: true viewReference: a WeakArray(a BlWellPanel) BlViewBoundsCache>>upToDate Receiver: a BlViewBoundsCache Arguments and temporary variables: Receiver's instance variables: bounds: nil extent: (50@50) dirty: true drawingBounds: nil innerBounds: nil updating: true viewReference: a WeakArray(a BlWellPanel) BlViewBoundsCache>>bounds Receiver: a BlViewBoundsCache Arguments and temporary variables: Receiver's instance variables: bounds: nil extent: (50@50) dirty: true drawingBounds: nil innerBounds: nil updating: true viewReference: a WeakArray(a BlWellPanel) BlWellPanel(BlProtoView)>>bounds Receiver: a BlWellPanel Arguments and temporary variables: Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BrLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: an Array(a BlDragWell) layoutStrategy: a BrHorizontalLinearLayout zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... BrHorizontalLinearLayout(BrLinearLayout)>>layoutOf:changedFrom: Receiver: a BrHorizontalLinearLayout Arguments and temporary variables: aView: a BlWellPanel aSubView: a BlWellPanel Receiver's instance variables: layouting: true plugged: true [ :ls | ls layoutOf: self changedFrom: aView ] in BlWellPanel(BlProtoView)>>layoutChangedFrom: Receiver: a BlWellPanel Arguments and temporary variables: aView: a BlWellPanel ls: a BrHorizontalLinearLayout Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BrLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: an Array(a BlDragWell) layoutStrategy: a BrHorizontalLinearLayout zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... BlockClosure>>cull: Receiver: [ :ls | ls layoutOf: self changedFrom: aView ] Arguments and temporary variables: anArg: a BrHorizontalLinearLayout Receiver's instance variables: outerContext: BlWellPanel(BlProtoView)>>layoutChangedFrom: startpc: 27 numArgs: 1 BlWellPanel(BlProtoView)>>layoutStrategyDo: Receiver: a BlWellPanel Arguments and temporary variables: aBlock: [ :ls | ls layoutOf: self changedFrom: aView ] ls: a BrHorizontalLinearLayout Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BrLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: an Array(a BlDragWell) layoutStrategy: a BrHorizontalLinearLayout zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... BlWellPanel(BlProtoView)>>layoutChangedFrom: Receiver: a BlWellPanel Arguments and temporary variables: aView: a BlWellPanel Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BrLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: an Array(a BlDragWell) layoutStrategy: a BrHorizontalLinearLayout zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... BlWellPanel(BlProtoView)>>layoutChanged Receiver: a BlWellPanel Arguments and temporary variables: Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BrLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: an Array(a BlDragWell) layoutStrategy: a BrHorizontalLinearLayout zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... BlWellPanel(BlMorph)>>privateAddedMorph: Receiver: a BlWellPanel Arguments and temporary variables: aMorph: a BlDragWell Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BrLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: an Array(a BlDragWell) layoutStrategy: a BrHorizontalLinearLayout zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... BlWellPanel(BlMorph)>>privateAddMorph:atIndex: Receiver: a BlWellPanel Arguments and temporary variables: aMorph: a BlDragWell index: 1 Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BrLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: an Array(a BlDragWell) layoutStrategy: a BrHorizontalLinearLayout zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... BlWellPanel(BlMorph)>>addMorphBack: Receiver: a BlWellPanel Arguments and temporary variables: aMorph: a BlDragWell Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BrLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: an Array(a BlDragWell) layoutStrategy: a BrHorizontalLinearLayout zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... [ :value | self addMorphBack: ((self wellClass on: value) panel: self; yourself) ] in BlWellPanel>>addDefaultWellsAndPlus Receiver: a BlWellPanel Arguments and temporary variables: value: Color lightYellow Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BrLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: an Array(a BlDragWell) layoutStrategy: a BrHorizontalLinearLayout zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... Array(SequenceableCollection)>>do: Receiver: {Color lightYellow. Color lightGreen. Color lightBlue. Color white. Color veryVeryLightGra...etc... Arguments and temporary variables: aBlock: [ :value | self addMorphBack: ((self wellClass on: value) panel:...etc... index: 1 Receiver's instance variables: {Color lightYellow. Color lightGreen. Color lightBlue. Color white. Color veryVeryLightGra...etc... BlWellPanel>>addDefaultWellsAndPlus Receiver: a BlWellPanel Arguments and temporary variables: Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BrLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: an Array(a BlDragWell) layoutStrategy: a BrHorizontalLinearLayout zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... --- The full stack --- BlLayoutProperties(Object)>>doesNotUnderstand: #hasFloating [ :origin :each | | result | result := origin + (each layoutProperties hasFloating ifFalse: [ aBlock cull: origin cull: each ] ifTrue: [ self float: each ]). self align: each. BrServiceLocator uniqueInstance layouter layoutDone: each -> aRectangle. result ] in BrHorizontalLinearLayout(BrLinearLayout)>>layout:in:inject:into: [ :each | nextValue := binaryBlock value: nextValue value: each ] in Array(Collection)>>inject:into: Array(SequenceableCollection)>>do: Array(Collection)>>inject:into: BrHorizontalLinearLayout(BrLinearLayout)>>layout:in:inject:into: BrHorizontalLinearLayout>>layout:in: BlBrickHeightTraverser(BlBrickLayoutTraverser)>>layoutComponents: BlBrickHeightTraverser(BlBrickLayoutTraverser)>>layoutAround:inContext: BlBrickLayouter>>layout: BlBrickLayouter>>privateLayoutIn: [ BrServiceLocator uniqueInstance layouter layoutDone: aBrick -> aBrick bounds. self privateLayoutIn: aBrick ] in [ self privateForbidLayoutingWhile: [ BrServiceLocator uniqueInstance layouter layoutDone: aBrick -> aBrick bounds. self privateLayoutIn: aBrick ] ] in BlBrickLayouter>>layoutIn: BlockClosure>>ensure: BlBrickLayouter>>privateForbidLayoutingWhile: [ self privateForbidLayoutingWhile: [ BrServiceLocator uniqueInstance layouter layoutDone: aBrick -> aBrick bounds. self privateLayoutIn: aBrick ] ] in BlBrickLayouter>>layoutIn: BlockClosure>>ensure: BlBrickLayouter>>layoutIn: [ "Compute the layout for the given morph based on the new bounds" aView aboutToDoLayoutIn: newBounds. BrServiceLocator uniqueInstance layouter layoutIn: aView ] in BrHorizontalLinearLayout(BrLinearLayout)>>doLayout:in: BlockClosure>>ensure: BrHorizontalLinearLayout(BlLayoutStrategy)>>privateForbidLayoutingWhile: BrHorizontalLinearLayout(BrLinearLayout)>>doLayout:in: BlWellPanel(BlProtoView)>>doLayoutIn: BlWellPanel(BlProtoView)>>doLayout BlViewBoundsCache>>updateBounds BlViewBoundsCache>>upToDate BlViewBoundsCache>>bounds BlWellPanel(BlProtoView)>>bounds BrHorizontalLinearLayout(BrLinearLayout)>>layoutOf:changedFrom: [ :ls | ls layoutOf: self changedFrom: aView ] in BlWellPanel(BlProtoView)>>layoutChangedFrom: BlockClosure>>cull: BlWellPanel(BlProtoView)>>layoutStrategyDo: BlWellPanel(BlProtoView)>>layoutChangedFrom: BlWellPanel(BlProtoView)>>layoutChanged BlWellPanel(BlMorph)>>privateAddedMorph: BlWellPanel(BlMorph)>>privateAddMorph:atIndex: BlWellPanel(BlMorph)>>addMorphBack: [ :value | self addMorphBack: ((self wellClass on: value) panel: self; yourself) ] in BlWellPanel>>addDefaultWellsAndPlus Array(SequenceableCollection)>>do: BlWellPanel>>addDefaultWellsAndPlus - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BlWellPanel>>defaultValues: BlWellPanel class>>withSevenPaleColors UndefinedObject>>DoIt OpalCompiler>>evaluate RubSmalltalkEditor>>evaluate:andDo: RubSmalltalkEditor>>highlightEvaluateAndDo: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] in [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: RubEditingArea(RubAbstractTextArea)>>handleEdit: [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>runDeferredActions BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: WeakMessageSend>>value: WeakMessageSend>>cull: WeakMessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: BlockClosure>>on:do: [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE MessageNotUnderstood: BrHorizontalLinearLayout>>hFloating: 14 July 2015 6:03:24.473608 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] BrHorizontalLinearLayout(Object)>>doesNotUnderstand: #hFloating: Receiver: a BrHorizontalLinearLayout Arguments and temporary variables: aMessage: hFloating: false exception: MessageNotUnderstood: BrHorizontalLinearLayout>>hFloating: resumeValue: nil Receiver's instance variables: layouting: false plugged: true BlWellPanel>>initialize Receiver: a BlWellPanel Arguments and temporary variables: Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BlLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: #() layoutStrategy: a BlDummyLayoutStrategy zIndex: nil style: a BlUINullStyle title: nil defaultValues: nil BlWellPanel class(Behavior)>>new Receiver: BlWellPanel Arguments and temporary variables: Receiver's instance variables: superclass: BlMorph methodDict: a MethodDictionary(#addDefaultWellsAndPlus->BlWellPanel>>#addDefaul...etc... format: 172 layout: a FixedLayout instanceVariables: #(#title #defaultValues) organization: a ClassOrganization subclasses: nil name: #BlWellPanel classPool: a Dictionary() sharedPools: an OrderedCollection() environment: a SystemDictionary(lots of globals) category: #'Bloc-DragPanels' traitComposition: {} localSelectors: nil BlWellPanel class>>withSevenPaleColors Receiver: BlWellPanel Arguments and temporary variables: Receiver's instance variables: superclass: BlMorph methodDict: a MethodDictionary(#addDefaultWellsAndPlus->BlWellPanel>>#addDefaul...etc... format: 172 layout: a FixedLayout instanceVariables: #(#title #defaultValues) organization: a ClassOrganization subclasses: nil name: #BlWellPanel classPool: a Dictionary() sharedPools: an OrderedCollection() environment: a SystemDictionary(lots of globals) category: #'Bloc-DragPanels' traitComposition: {} localSelectors: nil UndefinedObject>>DoIt Receiver: nil Arguments and temporary variables: Receiver's instance variables: nil OpalCompiler>>evaluate Receiver: an OpalCompiler Arguments and temporary variables: value: nil selectedSource: a ReadStream itsSelection: a Text for '' itsSelectionString: '' Receiver's instance variables: ast: DoIt ^ BlWellPanel withSevenPaleColors openInWorld source: a ReadStream context: nil receiver: nil compilationContext: a CompilationContext compilationContextClass: nil useFaultyForParsing: false RubSmalltalkEditor>>evaluate:andDo: Receiver: a RubSmalltalkEditor Arguments and temporary variables: aStream: a ReadStream aBlock: [ :result | aBlock value: result ] result: nil rcvr: nil ctxt: nil Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(204472320) selectorChooser: nil notificationStrategy: a GLMPopperNotificationStrategy RubSmalltalkEditor>>highlightEvaluateAndDo: Receiver: a RubSmalltalkEditor Arguments and temporary variables: aBlock: [ :result | ] Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(204472320) selectorChooser: nil notificationStrategy: a GLMPopperNotificationStrategy [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] in [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: Receiver: a GLMMorphicPharoPlaygroundRenderer Arguments and temporary variables: ann: a GLMHighlightAndEvaluate Receiver's instance variables: renderer: a GLMMorphicRenderer textMorph: a RubScrolledTextMorph(654049280) textModel: a GLMRubricSmalltalkTextModel RubEditingArea(RubAbstractTextArea)>>handleEdit: Receiver: a RubEditingArea(204472320) Arguments and temporary variables: editBlock: [ textMorph textArea editor highlightEvaluateAndDo: ann action. tex...etc... Receiver's instance variables: bounds: (0@0) corner: (580@69) owner: a TransformWithLayoutMorph(782237696) submorphs: an Array(a RubCursor(650379264) a RubPrimarySelectionMorph(797704192...etc... fullBounds: nil color: Color transparent extension: a MorphExtension (676069376) [other: (announcer -> an Announcer) (k...etc... model: a GLMRubricSmalltalkTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(743702528) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkScriptingMode cursor: a RubCursor(650379264) segments: an OrderedCollection(a RubHighlightSegmentMorph(940834816)) getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: Receiver: a GLMMorphicPharoPlaygroundRenderer Arguments and temporary variables: ann: a GLMHighlightAndEvaluate Receiver's instance variables: renderer: a GLMMorphicRenderer textMorph: a RubScrolledTextMorph(654049280) textModel: a GLMRubricSmalltalkTextModel BlMorphicCompatibleBlocSpace(BlBlocSpace)>>runDeferredActions Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: nextInQueue: [ textMorph textArea handleEdit: [ textMorph textArea editor ...etc... Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: a BlTickEvent Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlHaloGlobalEventListener deferredActions: WaitfreeQueue with 0 items WeakMessageSend>>value: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: anObject: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull:cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg1: a BlTickEvent arg2: an Announcer Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: Receiver: a WeakAnnouncementSubscription Arguments and temporary variables: anAnnouncement: a BlTickEvent Receiver's instance variables: list: a WeakFinalizationList next: nil announcer: an Announcer announcementClass: BlTickEvent action: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSp...etc... BlockClosure>>on:do: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: on: exception fork: handlerAction "Activate the receiver. In ca...etc... Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: nil ex: UnhandledError copy: nil onDoCtx: nil process: nil handler: nil bottom: nil thisCtx: nil Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 --- The full stack --- BrHorizontalLinearLayout(Object)>>doesNotUnderstand: #hFloating: BlWellPanel>>initialize BlWellPanel class(Behavior)>>new BlWellPanel class>>withSevenPaleColors UndefinedObject>>DoIt OpalCompiler>>evaluate RubSmalltalkEditor>>evaluate:andDo: RubSmalltalkEditor>>highlightEvaluateAndDo: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] in [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: RubEditingArea(RubAbstractTextArea)>>handleEdit: [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>runDeferredActions BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: WeakMessageSend>>value: WeakMessageSend>>cull: WeakMessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: BlockClosure>>on:do: [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE SubscriptOutOfBounds: 11 14 July 2015 6:05:01.907607 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] OrderedCollection(Object)>>errorSubscriptBounds: Receiver: an OrderedCollection(a RubTextLine 1 to: 11 a RubTextLine 12 to: 30 a RubTextLine 31 to: 6...etc... Arguments and temporary variables: index: 11 Receiver's instance variables: array: an Array(a RubTextLine 1 to: 11 a RubTextLine 12 to: 30 a RubTextLine 31...etc... firstIndex: 1 lastIndex: 10 OrderedCollection>>at: Receiver: an OrderedCollection(a RubTextLine 1 to: 11 a RubTextLine 12 to: 30 a RubTextLine 31 to: 6...etc... Arguments and temporary variables: anInteger: 11 index: 11 Receiver's instance variables: array: an Array(a RubTextLine 1 to: 11 a RubTextLine 12 to: 30 a RubTextLine 31...etc... firstIndex: 1 lastIndex: 10 RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeStraightVertices Receiver: a RubPrimarySelectionMorph(653524992) Arguments and temporary variables: firstCB: a CharacterBlock with index 292 and surface (240.60008239746094@177) c...etc... lastCB: a CharacterBlock with index 261 and surface (69.00001525878906@139) cor...etc... firstLineIndex: 10 lastLineIndex: 8 firstLine: a RubTextLine 264 to: 291 lastLine: a RubTextLine 255 to: 262 verts: an OrderedCollection() secondLine: nil thirdLine: nil Receiver's instance variables: bounds: (0@0) corner: (20@20) owner: nil submorphs: #() fullBounds: (0@0) corner: (20@20) color: (Color r: 0.686 g: 0.835 b: 0.979 alpha: 1.0) extension: nil vertices: {(5@0). (20@10). (0@20)} filledForm: nil smoothCurve: false curveState: nil borderForm: nil borderColor: nil borderWidth: nil textArea: a RubEditingArea(556531712) firstIndex: 292 lastIndex: 261 icon: nil iconBlock: nil label: nil changeable: false RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeVertices Receiver: a RubPrimarySelectionMorph(653524992) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (20@20) owner: nil submorphs: #() fullBounds: (0@0) corner: (20@20) color: (Color r: 0.686 g: 0.835 b: 0.979 alpha: 1.0) extension: nil vertices: {(5@0). (20@10). (0@20)} filledForm: nil smoothCurve: false curveState: nil borderForm: nil borderColor: nil borderWidth: nil textArea: a RubEditingArea(556531712) firstIndex: 292 lastIndex: 261 icon: nil iconBlock: nil label: nil changeable: false RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea: Receiver: a RubPrimarySelectionMorph(653524992) Arguments and temporary variables: aTextArea: a RubEditingArea(556531712) Receiver's instance variables: bounds: (0@0) corner: (20@20) owner: nil submorphs: #() fullBounds: (0@0) corner: (20@20) color: (Color r: 0.686 g: 0.835 b: 0.979 alpha: 1.0) extension: nil vertices: {(5@0). (20@10). (0@20)} filledForm: nil smoothCurve: false curveState: nil borderForm: nil borderColor: nil borderWidth: nil textArea: a RubEditingArea(556531712) firstIndex: 292 lastIndex: 261 icon: nil iconBlock: nil label: nil changeable: false RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea:from:to: Receiver: a RubPrimarySelectionMorph(653524992) Arguments and temporary variables: aTextArea: a RubEditingArea(556531712) aFirstCharIndex: 292 aLastCharIndex: 261 Receiver's instance variables: bounds: (0@0) corner: (20@20) owner: nil submorphs: #() fullBounds: (0@0) corner: (20@20) color: (Color r: 0.686 g: 0.835 b: 0.979 alpha: 1.0) extension: nil vertices: {(5@0). (20@10). (0@20)} filledForm: nil smoothCurve: false curveState: nil borderForm: nil borderColor: nil borderWidth: nil textArea: a RubEditingArea(556531712) firstIndex: 292 lastIndex: 261 icon: nil iconBlock: nil label: nil changeable: false RubPrimarySelectionMorph class(RubTextSegmentMorph class)>>inTextArea:from:to: Receiver: RubPrimarySelectionMorph Arguments and temporary variables: aTextArea: a RubEditingArea(556531712) aFirstCharIndex: 292 aLastCharIndex: 261 Receiver's instance variables: superclass: RubPlainSegmentMorph methodDict: a MethodDictionary(#defaultBorderColor->RubPrimarySelectionMorph>>#...etc... format: 170 layout: a FixedLayout instanceVariables: #() organization: a ClassOrganization subclasses: nil name: #RubPrimarySelectionMorph classPool: a Dictionary() sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Rubric-Editing-Core' traitComposition: {} localSelectors: nil announcer: nil RubEditingArea(RubAbstractTextArea)>>newPrimarySelection Receiver: a RubEditingArea(556531712) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: nil color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>addPrimarySelection Receiver: a RubEditingArea(556531712) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: nil color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>handleSelectionChange: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aBlock: [ self editingState markIndex: markIndex pointIndex: pointIndex ] prevMarkBlock: nil prevPointBlock: nil Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: nil color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>markIndex:pointIndex: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: markIndex: 261 pointIndex: 262 Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: nil color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubSmalltalkEditor(RubTextEditor)>>markIndex:pointIndex: Receiver: a RubSmalltalkEditor Arguments and temporary variables: markIndex: 261 pointIndex: 262 Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>zapSelectionWith: Receiver: a RubSmalltalkEditor Arguments and temporary variables: aText: a Text for 'u' start: 261 stop: 347 Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>addString: Receiver: a RubSmalltalkEditor Arguments and temporary variables: aString: 'u' Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>normalCharacter: Receiver: a RubSmalltalkEditor Arguments and temporary variables: aKeyboardEvent: BlKeystrokeEvent('u') Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>dispatch: Receiver: a RubSmalltalkEditor Arguments and temporary variables: aKeyboardEvent: BlKeystrokeEvent('u') return: [ :val | ^ val ] Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>keystroke: Receiver: a RubSmalltalkEditor Arguments and temporary variables: aKeyboardEvent: BlKeystrokeEvent('u') Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy [ (self selectorChooserHandlesKeyboard: aKeyboardEvent) ifFalse: [ super keystroke: aKeyboardEvent ]. self selectorChooserKeystroke: aKeyboardEvent ] in RubSmalltalkEditor>>keystroke: Receiver: a RubSmalltalkEditor Arguments and temporary variables: aKeyboardEvent: BlKeystrokeEvent('u') Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy NECController class>>codeCompletionAround:textMorph:keyStroke: Receiver: NECController Arguments and temporary variables: aBlock: [ (self selectorChooserHandlesKeyboard: aKeyboardEvent) ifFalse: [ su...etc... aTextMorph: a RubEditingArea(556531712) evt: BlKeystrokeEvent('u') editor: a RubSmalltalkEditor stringHolder: a RubScrolledTextModel completionAllowed: true controller: a NECController Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#additionals->NECController>>#additionals #captu...etc... format: 142 layout: a FixedLayout instanceVariables: #('model' 'menuMorph' 'editor' 'context' 'inverseMapping' 'c...etc... organization: a ClassOrganization subclasses: {NECWorkspaceController. NOCController} name: #NECController classPool: a Dictionary() sharedPools: an OrderedCollection() environment: a SystemDictionary(lots of globals) category: #'NECompletion-View' traitComposition: {} localSelectors: nil uniqueInstance: a NECController PharoCommonTools(ToolRegistry)>>codeCompletionAround:textMorph:keyStroke: Receiver: a PharoCommonTools Arguments and temporary variables: aBlock: [ (self selectorChooserHandlesKeyboard: aKeyboardEvent) ifFalse: [ su...etc... aTextMorph: a RubEditingArea(556531712) evt: BlKeystrokeEvent('u') Receiver's instance variables: tools: an IdentityDictionary(#basicInspector->EyeInspector #browser->Nautilus #...etc... recentTools: a Dictionary(#basicInspector->a Set(EyeInspector) #browser->a Set(...etc... RubSmalltalkEditor>>completionAround:keyStroke: Receiver: a RubSmalltalkEditor Arguments and temporary variables: aBlock: [ (self selectorChooserHandlesKeyboard: aKeyboardEvent) ifFalse: [ su...etc... anEvent: BlKeystrokeEvent('u') Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor>>keystroke: Receiver: a RubSmalltalkEditor Arguments and temporary variables: aKeyboardEvent: BlKeystrokeEvent('u') Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy [ self editor keystroke: anEvent ] in RubEditingArea(RubAbstractTextArea)>>keyStroke: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: anEvent: BlKeystrokeEvent('u') Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: nil color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>handleEdit: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: editBlock: [ self editor keystroke: anEvent ] Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: nil color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>keyStroke: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: anEvent: BlKeystrokeEvent('u') Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: nil color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>handleKeystroke: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: anEvent: BlKeystrokeEvent('u') Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: nil color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor BlKeystrokeEvent>>sentTo: Receiver: BlKeystrokeEvent('u') Arguments and temporary variables: anObject: a RubEditingArea(556531712) Receiver's instance variables: timeStamp: 16733739 source: a BlHandMorph windowIndex: 0 handler: nil wasHandled: false buttons: 0 position: (72.0@162.0) keyValue: 117 charCode: 117 scanCode: 117 RubEditingArea(Morph)>>handleEvent: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: anEvent: BlKeystrokeEvent('u') Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: nil color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(Morph)>>handleFocusEvent: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: anEvent: BlKeystrokeEvent('u') Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: nil color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor BlSpaceEventListener>>sendFocusEvent:to:clear: Receiver: a BlSpaceEventListener Arguments and temporary variables: anEvent: BlKeystrokeEvent('u') focusHolder: a RubEditingArea(556531712) aBlock: [ self keyboardFocus: nil ] w: a BlWorldMorph transformedEvent: BlKeystrokeEvent('u') Receiver's instance variables: started: true spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) keyboardFocus: a RubEditingArea(556531712) mouseFocus: nil lastMouseEvent: BlMouseMoveEvent((1486.0@1382.0) (1484@1384) 16732409 0) mouseOverHandler: a BlMouseOverHandler tickSubscribers: a WeakArray() startSlideOccured: false BlSpaceEventListener>>sendEvent:focus:clear: Receiver: a BlSpaceEventListener Arguments and temporary variables: anEvent: BlKeystrokeEvent('u') focusHolder: a RubEditingArea(556531712) aBlock: [ self keyboardFocus: nil ] Receiver's instance variables: started: true spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) keyboardFocus: a RubEditingArea(556531712) mouseFocus: nil lastMouseEvent: BlMouseMoveEvent((1486.0@1382.0) (1484@1384) 16732409 0) mouseOverHandler: a BlMouseOverHandler tickSubscribers: a WeakArray() startSlideOccured: false BlSpaceEventListener>>sendEventToKeyboardFocus: Receiver: a BlSpaceEventListener Arguments and temporary variables: anEvent: BlKeystrokeEvent('u') Receiver's instance variables: started: true spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) keyboardFocus: a RubEditingArea(556531712) mouseFocus: nil lastMouseEvent: BlMouseMoveEvent((1486.0@1382.0) (1484@1384) 16732409 0) mouseOverHandler: a BlMouseOverHandler tickSubscribers: a WeakArray() startSlideOccured: false BlSpaceEventListener>>keystroke: Receiver: a BlSpaceEventListener Arguments and temporary variables: anEvent: BlKeystrokeEvent('u') Receiver's instance variables: started: true spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) keyboardFocus: a RubEditingArea(556531712) mouseFocus: nil lastMouseEvent: BlMouseMoveEvent((1486.0@1382.0) (1484@1384) 16732409 0) mouseOverHandler: a BlMouseOverHandler tickSubscribers: a WeakArray() startSlideOccured: false BlMorphicCompatibilitySpaceEventListener(BlEventListener)>>keystroke: Receiver: a BlMorphicCompatibilitySpaceEventListener Arguments and temporary variables: anEvent: BlKeystrokeEvent('u') Receiver's instance variables: next: a BlSpaceEventListener BlHaloGlobalEventListener(BlEventListener)>>keystroke: Receiver: a BlHaloGlobalEventListener Arguments and temporary variables: anEvent: BlKeystrokeEvent('u') Receiver's instance variables: next: a BlMorphicCompatibilitySpaceEventListener BlKeystrokeEvent>>sentToNext: Receiver: BlKeystrokeEvent('u') Arguments and temporary variables: anObject: a BlHaloGlobalEventListener Receiver's instance variables: timeStamp: 16733739 source: a BlHandMorph windowIndex: 0 handler: nil wasHandled: false buttons: 0 position: (1484.0@1384.0) keyValue: 117 charCode: 117 scanCode: 117 [ :listener | anEvent sentToNext: listener ] in BlSpaceEventListener>>handleEvent: Receiver: a BlSpaceEventListener Arguments and temporary variables: anEvent: BlKeystrokeEvent('u') listener: a BlHaloGlobalEventListener Receiver's instance variables: started: true spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) keyboardFocus: a RubEditingArea(556531712) mouseFocus: nil lastMouseEvent: BlMouseMoveEvent((1486.0@1382.0) (1484@1384) 16732409 0) mouseOverHandler: a BlMouseOverHandler tickSubscribers: a WeakArray() startSlideOccured: false BlockClosure>>cull: Receiver: [ :listener | anEvent sentToNext: listener ] Arguments and temporary variables: anArg: a BlHaloGlobalEventListener Receiver's instance variables: outerContext: BlSpaceEventListener>>handleEvent: startpc: 27 numArgs: 1 [ :el | aBlock cull: el ] in BlSpaceEventListener>>privateReinjectEvent: Receiver: a BlSpaceEventListener Arguments and temporary variables: aBlock: [ :listener | anEvent sentToNext: listener ] el: a BlHaloGlobalEventListener Receiver's instance variables: started: true spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) keyboardFocus: a RubEditingArea(556531712) mouseFocus: nil lastMouseEvent: BlMouseMoveEvent((1486.0@1382.0) (1484@1384) 16732409 0) mouseOverHandler: a BlMouseOverHandler tickSubscribers: a WeakArray() startSlideOccured: false --- The full stack --- OrderedCollection(Object)>>errorSubscriptBounds: OrderedCollection>>at: RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeStraightVertices RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeVertices RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea: RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea:from:to: RubPrimarySelectionMorph class(RubTextSegmentMorph class)>>inTextArea:from:to: RubEditingArea(RubAbstractTextArea)>>newPrimarySelection RubEditingArea(RubAbstractTextArea)>>addPrimarySelection RubEditingArea(RubAbstractTextArea)>>handleSelectionChange: RubEditingArea(RubAbstractTextArea)>>markIndex:pointIndex: RubSmalltalkEditor(RubTextEditor)>>markIndex:pointIndex: RubSmalltalkEditor(RubTextEditor)>>zapSelectionWith: RubSmalltalkEditor(RubTextEditor)>>addString: RubSmalltalkEditor(RubTextEditor)>>normalCharacter: RubSmalltalkEditor(RubTextEditor)>>dispatch: RubSmalltalkEditor(RubTextEditor)>>keystroke: [ (self selectorChooserHandlesKeyboard: aKeyboardEvent) ifFalse: [ super keystroke: aKeyboardEvent ]. self selectorChooserKeystroke: aKeyboardEvent ] in RubSmalltalkEditor>>keystroke: NECController class>>codeCompletionAround:textMorph:keyStroke: PharoCommonTools(ToolRegistry)>>codeCompletionAround:textMorph:keyStroke: RubSmalltalkEditor>>completionAround:keyStroke: RubSmalltalkEditor>>keystroke: [ self editor keystroke: anEvent ] in RubEditingArea(RubAbstractTextArea)>>keyStroke: RubEditingArea(RubAbstractTextArea)>>handleEdit: RubEditingArea(RubAbstractTextArea)>>keyStroke: RubEditingArea(RubAbstractTextArea)>>handleKeystroke: BlKeystrokeEvent>>sentTo: RubEditingArea(Morph)>>handleEvent: RubEditingArea(Morph)>>handleFocusEvent: BlSpaceEventListener>>sendFocusEvent:to:clear: BlSpaceEventListener>>sendEvent:focus:clear: BlSpaceEventListener>>sendEventToKeyboardFocus: BlSpaceEventListener>>keystroke: BlMorphicCompatibilitySpaceEventListener(BlEventListener)>>keystroke: BlHaloGlobalEventListener(BlEventListener)>>keystroke: BlKeystrokeEvent>>sentToNext: [ :listener | anEvent sentToNext: listener ] in BlSpaceEventListener>>handleEvent: BlockClosure>>cull: [ :el | aBlock cull: el ] in BlSpaceEventListener>>privateReinjectEvent: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BlockClosure>>cull: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>eventListenerDo: BlSpaceEventListener>>privateReinjectEvent: BlSpaceEventListener>>handleEvent: BlMorphicCompatibilitySpaceEventListener(BlEventListener)>>handleEvent: BlHaloGlobalEventListener(BlEventListener)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: [ :event | self handleEvent: event ] in BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents BlVMEventFetcher>>fetchedEventDo: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: WeakMessageSend>>value: WeakMessageSend>>cull: WeakMessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: BlockClosure>>on:do: [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE SubscriptOutOfBounds: 11 14 July 2015 6:05:01.941608 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] OrderedCollection(Object)>>errorSubscriptBounds: Receiver: an OrderedCollection(a RubTextLine 1 to: 11 a RubTextLine 12 to: 30 a RubTextLine 31 to: 6...etc... Arguments and temporary variables: index: 11 Receiver's instance variables: array: an Array(a RubTextLine 1 to: 11 a RubTextLine 12 to: 30 a RubTextLine 31...etc... firstIndex: 1 lastIndex: 10 OrderedCollection>>at: Receiver: an OrderedCollection(a RubTextLine 1 to: 11 a RubTextLine 12 to: 30 a RubTextLine 31 to: 6...etc... Arguments and temporary variables: anInteger: 11 index: 11 Receiver's instance variables: array: an Array(a RubTextLine 1 to: 11 a RubTextLine 12 to: 30 a RubTextLine 31...etc... firstIndex: 1 lastIndex: 10 RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeStraightVertices Receiver: a RubPrimarySelectionMorph(201064448) Arguments and temporary variables: firstCB: a CharacterBlock with index 292 and surface (240.60008239746094@177) c...etc... lastCB: a CharacterBlock with index 261 and surface (69.00001525878906@139) cor...etc... firstLineIndex: 10 lastLineIndex: 8 firstLine: a RubTextLine 264 to: 291 lastLine: a RubTextLine 255 to: 262 verts: an OrderedCollection() secondLine: nil thirdLine: nil Receiver's instance variables: bounds: (0@0) corner: (20@20) owner: nil submorphs: #() fullBounds: (0@0) corner: (20@20) color: (Color r: 0.686 g: 0.835 b: 0.979 alpha: 1.0) extension: nil vertices: {(5@0). (20@10). (0@20)} filledForm: nil smoothCurve: false curveState: nil borderForm: nil borderColor: nil borderWidth: nil textArea: a RubEditingArea(556531712) firstIndex: 292 lastIndex: 261 icon: nil iconBlock: nil label: nil changeable: false RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeVertices Receiver: a RubPrimarySelectionMorph(201064448) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (20@20) owner: nil submorphs: #() fullBounds: (0@0) corner: (20@20) color: (Color r: 0.686 g: 0.835 b: 0.979 alpha: 1.0) extension: nil vertices: {(5@0). (20@10). (0@20)} filledForm: nil smoothCurve: false curveState: nil borderForm: nil borderColor: nil borderWidth: nil textArea: a RubEditingArea(556531712) firstIndex: 292 lastIndex: 261 icon: nil iconBlock: nil label: nil changeable: false RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea: Receiver: a RubPrimarySelectionMorph(201064448) Arguments and temporary variables: aTextArea: a RubEditingArea(556531712) Receiver's instance variables: bounds: (0@0) corner: (20@20) owner: nil submorphs: #() fullBounds: (0@0) corner: (20@20) color: (Color r: 0.686 g: 0.835 b: 0.979 alpha: 1.0) extension: nil vertices: {(5@0). (20@10). (0@20)} filledForm: nil smoothCurve: false curveState: nil borderForm: nil borderColor: nil borderWidth: nil textArea: a RubEditingArea(556531712) firstIndex: 292 lastIndex: 261 icon: nil iconBlock: nil label: nil changeable: false RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea:from:to: Receiver: a RubPrimarySelectionMorph(201064448) Arguments and temporary variables: aTextArea: a RubEditingArea(556531712) aFirstCharIndex: 292 aLastCharIndex: 261 Receiver's instance variables: bounds: (0@0) corner: (20@20) owner: nil submorphs: #() fullBounds: (0@0) corner: (20@20) color: (Color r: 0.686 g: 0.835 b: 0.979 alpha: 1.0) extension: nil vertices: {(5@0). (20@10). (0@20)} filledForm: nil smoothCurve: false curveState: nil borderForm: nil borderColor: nil borderWidth: nil textArea: a RubEditingArea(556531712) firstIndex: 292 lastIndex: 261 icon: nil iconBlock: nil label: nil changeable: false RubPrimarySelectionMorph class(RubTextSegmentMorph class)>>inTextArea:from:to: Receiver: RubPrimarySelectionMorph Arguments and temporary variables: aTextArea: a RubEditingArea(556531712) aFirstCharIndex: 292 aLastCharIndex: 261 Receiver's instance variables: superclass: RubPlainSegmentMorph methodDict: a MethodDictionary(#defaultBorderColor->RubPrimarySelectionMorph>>#...etc... format: 170 layout: a FixedLayout instanceVariables: #() organization: a ClassOrganization subclasses: nil name: #RubPrimarySelectionMorph classPool: a Dictionary() sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Rubric-Editing-Core' traitComposition: {} localSelectors: nil announcer: nil RubEditingArea(RubAbstractTextArea)>>newPrimarySelection Receiver: a RubEditingArea(556531712) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: nil color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>addPrimarySelection Receiver: a RubEditingArea(556531712) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: nil color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>handleSelectionChange: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aBlock: [ self editingState markIndex: markIndex pointIndex: pointIndex ] prevMarkBlock: nil prevPointBlock: nil Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: nil color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>markIndex:pointIndex: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: markIndex: 292 pointIndex: 261 Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: nil color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>recomputeSelection Receiver: a RubEditingArea(556531712) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: nil color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubShoutStylerDecorator>>stylerStyled: Receiver: a RubShoutStylerDecorator Arguments and temporary variables: styledCopyOfText: a Text for 'initialize super initialize. self withRectangle...etc... Receiver's instance variables: next: a RubCurrentLineBarDecorator canvas: an AthensCairoCanvas displayScanner: nil position: (0@0) styler: a RubSHTextStylerST80 shoutIsAvailable: true text: a Text for 'initialize super initialize. self withRectangleViewDo: [ :v...etc... replaceStart: 261 replaceStop: 346 RubShoutStylerDecorator>>stylerStyledInBackground: Receiver: a RubShoutStylerDecorator Arguments and temporary variables: styledCopyOfText: a Text for 'initialize super initialize. self withRectangle...etc... Receiver's instance variables: next: a RubCurrentLineBarDecorator canvas: an AthensCairoCanvas displayScanner: nil position: (0@0) styler: a RubSHTextStylerST80 shoutIsAvailable: true text: a Text for 'initialize super initialize. self withRectangleViewDo: [ :v...etc... replaceStart: 261 replaceStop: 346 [ view ifNotNil: [ view stylerStyledInBackground: text ] ] in [ sem notNil ifTrue: [ sem waitTimeoutSeconds: 5 onCompletion: [ view ifNotNil: [ view stylerStyledInBackground: text ] ] onTimeout: [ "do nothing if the styling has not finished or the process turned into a zombie." ] ] ] in [ sem := Semaphore new. [ sem notNil ifTrue: [ sem waitTimeoutSeconds: 5 onCompletion: [ view ifNotNil: [ view stylerStyledInBackground: text ] ] onTimeout: [ "do nothing if the styling has not finished or the process turned into a zombie." ] ] ] forkAt: Processor activePriority. backgroundProcess := [ self privateStyle: text. sem signal ] forkAt: Processor userBackgroundPriority ] in RubSHTextStylerST80(SHTextStyler)>>styleInBackgroundProcess: Receiver: a RubSHTextStylerST80 Arguments and temporary variables: aText: a Text for 'initialize super initialize. self withRectangleViewDo: [ :...etc... Receiver's instance variables: sem: a Semaphore() backgroundProcess: a Process in [ self privateStyle: text. sem signal ] in [ ...etc... text: a Text for 'initialize super initialize. self withRectangleViewDo: [ :v...etc... monitor: a Monitor view: a RubShoutStylerDecorator stylingEnabled: true classOrMetaClass: BlWellPanel workspace: nil font: nil parser: a SHParserST80 environment: nil pixelHeight: 13.333333333333334 DelayWaitTimeout>>waitOnCompletion:onTimeout: Receiver: a DelayWaitTimeout(5000 msecs) Arguments and temporary variables: completionBlock: [ view ifNotNil: [ view stylerStyledInBackground: text ] ] timeoutBlock: [ "do nothing if the styling has not finished or the process tur...etc... Receiver's instance variables: delaySemaphore: a Semaphore() beingWaitedOn: false millisecondDelayDuration: 5000 scheduler: a DelayMicrosecondScheduler schedulerResumptionTime: 3614342706895607 process: a Process in nil expired: false Semaphore>>waitTimeoutSeconds:onCompletion:onTimeout: Receiver: a Semaphore() Arguments and temporary variables: anInteger: 5 completionBlock: [ view ifNotNil: [ view stylerStyledInBackground: text ] ] timeoutBlock: [ "do nothing if the styling has not finished or the process tur...etc... d: a DelayWaitTimeout(5000 msecs) Receiver's instance variables: firstLink: nil lastLink: nil excessSignals: 0 [ sem notNil ifTrue: [ sem waitTimeoutSeconds: 5 onCompletion: [ view ifNotNil: [ view stylerStyledInBackground: text ] ] onTimeout: [ "do nothing if the styling has not finished or the process turned into a zombie." ] ] ] in [ sem := Semaphore new. [ sem notNil ifTrue: [ sem waitTimeoutSeconds: 5 onCompletion: [ view ifNotNil: [ view stylerStyledInBackground: text ] ] onTimeout: [ "do nothing if the styling has not finished or the process turned into a zombie." ] ] ] forkAt: Processor activePriority. backgroundProcess := [ self privateStyle: text. sem signal ] forkAt: Processor userBackgroundPriority ] in RubSHTextStylerST80(SHTextStyler)>>styleInBackgroundProcess: Receiver: a RubSHTextStylerST80 Arguments and temporary variables: aText: a Text for 'initialize super initialize. self withRectangleViewDo: [ :...etc... Receiver's instance variables: sem: a Semaphore() backgroundProcess: a Process in [ self privateStyle: text. sem signal ] in [ ...etc... text: a Text for 'initialize super initialize. self withRectangleViewDo: [ :v...etc... monitor: a Monitor view: a RubShoutStylerDecorator stylingEnabled: true classOrMetaClass: BlWellPanel workspace: nil font: nil parser: a SHParserST80 environment: nil pixelHeight: 13.333333333333334 [ self value. Processor terminateActive ] in BlockClosure>>newProcess Receiver: [ sem notNil ifTrue: [ sem waitTimeoutSeconds: 5 onCompletion: [ view ifNotNil:...etc... Arguments and temporary variables: Receiver's instance variables: outerContext: [ sem := Semaphore new. [ sem notNil ifTrue: [ sem waitT...etc... startpc: 108 numArgs: 0 --- The full stack --- OrderedCollection(Object)>>errorSubscriptBounds: OrderedCollection>>at: RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeStraightVertices RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeVertices RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea: RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea:from:to: RubPrimarySelectionMorph class(RubTextSegmentMorph class)>>inTextArea:from:to: RubEditingArea(RubAbstractTextArea)>>newPrimarySelection RubEditingArea(RubAbstractTextArea)>>addPrimarySelection RubEditingArea(RubAbstractTextArea)>>handleSelectionChange: RubEditingArea(RubAbstractTextArea)>>markIndex:pointIndex: RubEditingArea(RubAbstractTextArea)>>recomputeSelection RubShoutStylerDecorator>>stylerStyled: RubShoutStylerDecorator>>stylerStyledInBackground: [ view ifNotNil: [ view stylerStyledInBackground: text ] ] in [ sem notNil ifTrue: [ sem waitTimeoutSeconds: 5 onCompletion: [ view ifNotNil: [ view stylerStyledInBackground: text ] ] onTimeout: [ "do nothing if the styling has not finished or the process turned into a zombie." ] ] ] in [ sem := Semaphore new. [ sem notNil ifTrue: [ sem waitTimeoutSeconds: 5 onCompletion: [ view ifNotNil: [ view stylerStyledInBackground: text ] ] onTimeout: [ "do nothing if the styling has not finished or the process turned into a zombie." ] ] ] forkAt: Processor activePriority. backgroundProcess := [ self privateStyle: text. sem signal ] forkAt: Processor userBackgroundPriority ] in RubSHTextStylerST80(SHTextStyler)>>styleInBackgroundProcess: DelayWaitTimeout>>waitOnCompletion:onTimeout: Semaphore>>waitTimeoutSeconds:onCompletion:onTimeout: [ sem notNil ifTrue: [ sem waitTimeoutSeconds: 5 onCompletion: [ view ifNotNil: [ view stylerStyledInBackground: text ] ] onTimeout: [ "do nothing if the styling has not finished or the process turned into a zombie." ] ] ] in [ sem := Semaphore new. [ sem notNil ifTrue: [ sem waitTimeoutSeconds: 5 onCompletion: [ view ifNotNil: [ view stylerStyledInBackground: text ] ] onTimeout: [ "do nothing if the styling has not finished or the process turned into a zombie." ] ] ] forkAt: Processor activePriority. backgroundProcess := [ self privateStyle: text. sem signal ] forkAt: Processor userBackgroundPriority ] in RubSHTextStylerST80(SHTextStyler)>>styleInBackgroundProcess: [ self value. Processor terminateActive ] in BlockClosure>>newProcess ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE SubscriptOutOfBounds: 11 14 July 2015 6:05:09.767607 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] OrderedCollection(Object)>>errorSubscriptBounds: Receiver: an OrderedCollection(a RubTextLine 1 to: 11 a RubTextLine 12 to: 30 a RubTextLine 31 to: 6...etc... Arguments and temporary variables: index: 11 Receiver's instance variables: array: an Array(a RubTextLine 1 to: 11 a RubTextLine 12 to: 30 a RubTextLine 31...etc... firstIndex: 1 lastIndex: 10 OrderedCollection>>at: Receiver: an OrderedCollection(a RubTextLine 1 to: 11 a RubTextLine 12 to: 30 a RubTextLine 31 to: 6...etc... Arguments and temporary variables: anInteger: 11 index: 11 Receiver's instance variables: array: an Array(a RubTextLine 1 to: 11 a RubTextLine 12 to: 30 a RubTextLine 31...etc... firstIndex: 1 lastIndex: 10 RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeStraightVertices Receiver: a RubPrimarySelectionMorph(947388416) Arguments and temporary variables: firstCB: a CharacterBlock with index 292 and surface (240.60008239746094@177) c...etc... lastCB: a CharacterBlock with index 261 and surface (69.00001525878906@139) cor...etc... firstLineIndex: 10 lastLineIndex: 8 firstLine: a RubTextLine 264 to: 291 lastLine: a RubTextLine 255 to: 262 verts: an OrderedCollection() secondLine: nil thirdLine: nil Receiver's instance variables: bounds: (0@0) corner: (20@20) owner: nil submorphs: #() fullBounds: (0@0) corner: (20@20) color: (Color r: 0.686 g: 0.835 b: 0.979 alpha: 1.0) extension: nil vertices: {(5@0). (20@10). (0@20)} filledForm: nil smoothCurve: false curveState: nil borderForm: nil borderColor: nil borderWidth: nil textArea: a RubEditingArea(556531712) firstIndex: 292 lastIndex: 261 icon: nil iconBlock: nil label: nil changeable: false RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeVertices Receiver: a RubPrimarySelectionMorph(947388416) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (20@20) owner: nil submorphs: #() fullBounds: (0@0) corner: (20@20) color: (Color r: 0.686 g: 0.835 b: 0.979 alpha: 1.0) extension: nil vertices: {(5@0). (20@10). (0@20)} filledForm: nil smoothCurve: false curveState: nil borderForm: nil borderColor: nil borderWidth: nil textArea: a RubEditingArea(556531712) firstIndex: 292 lastIndex: 261 icon: nil iconBlock: nil label: nil changeable: false RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea: Receiver: a RubPrimarySelectionMorph(947388416) Arguments and temporary variables: aTextArea: a RubEditingArea(556531712) Receiver's instance variables: bounds: (0@0) corner: (20@20) owner: nil submorphs: #() fullBounds: (0@0) corner: (20@20) color: (Color r: 0.686 g: 0.835 b: 0.979 alpha: 1.0) extension: nil vertices: {(5@0). (20@10). (0@20)} filledForm: nil smoothCurve: false curveState: nil borderForm: nil borderColor: nil borderWidth: nil textArea: a RubEditingArea(556531712) firstIndex: 292 lastIndex: 261 icon: nil iconBlock: nil label: nil changeable: false RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea:from:to: Receiver: a RubPrimarySelectionMorph(947388416) Arguments and temporary variables: aTextArea: a RubEditingArea(556531712) aFirstCharIndex: 292 aLastCharIndex: 261 Receiver's instance variables: bounds: (0@0) corner: (20@20) owner: nil submorphs: #() fullBounds: (0@0) corner: (20@20) color: (Color r: 0.686 g: 0.835 b: 0.979 alpha: 1.0) extension: nil vertices: {(5@0). (20@10). (0@20)} filledForm: nil smoothCurve: false curveState: nil borderForm: nil borderColor: nil borderWidth: nil textArea: a RubEditingArea(556531712) firstIndex: 292 lastIndex: 261 icon: nil iconBlock: nil label: nil changeable: false RubPrimarySelectionMorph class(RubTextSegmentMorph class)>>inTextArea:from:to: Receiver: RubPrimarySelectionMorph Arguments and temporary variables: aTextArea: a RubEditingArea(556531712) aFirstCharIndex: 292 aLastCharIndex: 261 Receiver's instance variables: superclass: RubPlainSegmentMorph methodDict: a MethodDictionary(#defaultBorderColor->RubPrimarySelectionMorph>>#...etc... format: 170 layout: a FixedLayout instanceVariables: #() organization: a ClassOrganization subclasses: nil name: #RubPrimarySelectionMorph classPool: a Dictionary() sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Rubric-Editing-Core' traitComposition: {} localSelectors: nil announcer: nil RubEditingArea(RubAbstractTextArea)>>newPrimarySelection Receiver: a RubEditingArea(556531712) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>addPrimarySelection Receiver: a RubEditingArea(556531712) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>handleSelectionChange: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aBlock: [ self editingState markBlock: markCharacterBlock pointBlock: pointChar...etc... prevMarkBlock: nil prevPointBlock: nil Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>markBlock:pointBlock: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: markCharacterBlock: a CharacterBlock with index 262 and surface (76.80001831054...etc... pointCharacterBlock: a CharacterBlock with index 262 and surface (76.8000183105...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubSmalltalkEditor(RubTextEditor)>>click: Receiver: a RubSmalltalkEditor Arguments and temporary variables: event: BlMouseDownEvent((102@150) red 16741489 0) p: a CharacterBlock with index 262 and surface (76.80001831054688@139) corner: ...etc... Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor>>click: Receiver: a RubSmalltalkEditor Arguments and temporary variables: anEvent: BlMouseDownEvent((102@150) red 16741489 0) Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy [ self editor click: anEvent. self scrollSelectionIntoView: nil ] in RubEditingArea(RubAbstractTextArea)>>click: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: anEvent: BlMouseDownEvent((102@150) red 16741489 0) Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>handleEdit: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: editBlock: [ self editor click: anEvent. self scrollSelectionIntoView: nil ] Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>click: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: anEvent: BlMouseDownEvent((102@150) red 16741489 0) Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor MouseClickState>>click Receiver: a MouseClickState[#firstClickUp] Arguments and temporary variables: Receiver's instance variables: clickClient: a RubEditingArea(556531712) clickState: #firstClickUp firstClickDown: BlMouseDownEvent((102@150) red 16741489 0) firstClickUp: BlMouseUpEvent((1514@1372) 16741617 0) firstClickTime: 16741489 clickSelector: #click: dblClickSelector: #doubleClick: dblClickTime: 500 dblClickTimeoutSelector: nil dragSelector: nil dragThreshold: 5 MouseClickState>>handleEvent:from: Receiver: a MouseClickState[#firstClickUp] Arguments and temporary variables: evt: BlMouseUpEvent((1514@1372) 16741617 0) aHand: a BlHandMorph localEvt: BlMouseUpEvent((102@150) 16741617 0) timedOut: false isDrag: false Receiver's instance variables: clickClient: a RubEditingArea(556531712) clickState: #firstClickUp firstClickDown: BlMouseDownEvent((102@150) red 16741489 0) firstClickUp: BlMouseUpEvent((1514@1372) 16741617 0) firstClickTime: 16741489 clickSelector: #click: dblClickSelector: #doubleClick: dblClickTime: 500 dblClickTimeoutSelector: nil dragSelector: nil dragThreshold: 5 MouseClickState>>handleEvent: Receiver: a MouseClickState[#firstClickUp] Arguments and temporary variables: evt: BlMouseUpEvent((1514@1372) 16741617 0) Receiver's instance variables: clickClient: a RubEditingArea(556531712) clickState: #firstClickUp firstClickDown: BlMouseDownEvent((102@150) red 16741489 0) firstClickUp: BlMouseUpEvent((1514@1372) 16741617 0) firstClickTime: 16741489 clickSelector: #click: dblClickSelector: #doubleClick: dblClickTime: 500 dblClickTimeoutSelector: nil dragSelector: nil dragThreshold: 5 BlMorphicDoubleClickOrDragEventListener>>handleEvent: Receiver: a BlMorphicDoubleClickOrDragEventListener Arguments and temporary variables: anEvent: BlMouseUpEvent((1514@1372) 16741617 0) Receiver's instance variables: next: a BlHaloGlobalEventListener state: a MouseClickState[#firstClickUp] BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: BlMouseUpEvent((1514@1372) 16741617 0) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicDoubleClickOrDragEventListener deferredActions: WaitfreeQueue with 0 items [ :event | self handleEvent: event ] in BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: event: BlMouseUpEvent((1514@1372) 16741617 0) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicDoubleClickOrDragEventListener deferredActions: WaitfreeQueue with 0 items BlVMEventFetcher>>fetchedEventDo: Receiver: a BlVMEventFetcher Arguments and temporary variables: aBlock: [ :event | self handleEvent: event ] evtBuf: #(1 16741617 1514 1372 0 0 0 1) evt: BlMouseUpEvent((1514@1372) 16741617 0) type: 1 Receiver's instance variables: space: a BlMorphicCompatibleBlocSpace [Bloc-1] sensor: an InputEventSensor lastEventBuffer: #(1 16741617 1514 1372 0 0 0 1) lastKeyScanCode: 101 combinedChar: nil recentModifiers: 0 BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicDoubleClickOrDragEventListener deferredActions: WaitfreeQueue with 0 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: a BlTickEvent Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicDoubleClickOrDragEventListener deferredActions: WaitfreeQueue with 0 items WeakMessageSend>>value: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: anObject: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull:cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg1: a BlTickEvent arg2: an Announcer Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: Receiver: a WeakAnnouncementSubscription Arguments and temporary variables: anAnnouncement: a BlTickEvent Receiver's instance variables: list: a WeakFinalizationList next: nil announcer: an Announcer announcementClass: BlTickEvent action: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSp...etc... BlockClosure>>on:do: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: on: exception fork: handlerAction "Activate the receiver. In ca...etc... Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: nil ex: UnhandledError copy: nil onDoCtx: nil process: nil handler: nil bottom: nil thisCtx: nil Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 --- The full stack --- OrderedCollection(Object)>>errorSubscriptBounds: OrderedCollection>>at: RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeStraightVertices RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeVertices RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea: RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea:from:to: RubPrimarySelectionMorph class(RubTextSegmentMorph class)>>inTextArea:from:to: RubEditingArea(RubAbstractTextArea)>>newPrimarySelection RubEditingArea(RubAbstractTextArea)>>addPrimarySelection RubEditingArea(RubAbstractTextArea)>>handleSelectionChange: RubEditingArea(RubAbstractTextArea)>>markBlock:pointBlock: RubSmalltalkEditor(RubTextEditor)>>click: RubSmalltalkEditor>>click: [ self editor click: anEvent. self scrollSelectionIntoView: nil ] in RubEditingArea(RubAbstractTextArea)>>click: RubEditingArea(RubAbstractTextArea)>>handleEdit: RubEditingArea(RubAbstractTextArea)>>click: MouseClickState>>click MouseClickState>>handleEvent:from: MouseClickState>>handleEvent: BlMorphicDoubleClickOrDragEventListener>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: [ :event | self handleEvent: event ] in BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents BlVMEventFetcher>>fetchedEventDo: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: WeakMessageSend>>value: WeakMessageSend>>cull: WeakMessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: BlockClosure>>on:do: [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE SubscriptOutOfBounds: 11 14 July 2015 6:05:15.405607 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] OrderedCollection(Object)>>errorSubscriptBounds: Receiver: an OrderedCollection(a RubTextLine 1 to: 11 a RubTextLine 12 to: 30 a RubTextLine 31 to: 6...etc... Arguments and temporary variables: index: 11 Receiver's instance variables: array: an Array(a RubTextLine 1 to: 11 a RubTextLine 12 to: 30 a RubTextLine 31...etc... firstIndex: 1 lastIndex: 10 OrderedCollection>>at: Receiver: an OrderedCollection(a RubTextLine 1 to: 11 a RubTextLine 12 to: 30 a RubTextLine 31 to: 6...etc... Arguments and temporary variables: anInteger: 11 index: 11 Receiver's instance variables: array: an Array(a RubTextLine 1 to: 11 a RubTextLine 12 to: 30 a RubTextLine 31...etc... firstIndex: 1 lastIndex: 10 RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeStraightVertices Receiver: a RubPrimarySelectionMorph(7077888) Arguments and temporary variables: firstCB: a CharacterBlock with index 292 and surface (240.60008239746094@177) c...etc... lastCB: a CharacterBlock with index 261 and surface (69.00001525878906@139) cor...etc... firstLineIndex: 10 lastLineIndex: 8 firstLine: a RubTextLine 264 to: 291 lastLine: a RubTextLine 255 to: 262 verts: an OrderedCollection() secondLine: nil thirdLine: nil Receiver's instance variables: bounds: (0@0) corner: (20@20) owner: nil submorphs: #() fullBounds: (0@0) corner: (20@20) color: (Color r: 0.686 g: 0.835 b: 0.979 alpha: 1.0) extension: nil vertices: {(5@0). (20@10). (0@20)} filledForm: nil smoothCurve: false curveState: nil borderForm: nil borderColor: nil borderWidth: nil textArea: a RubEditingArea(556531712) firstIndex: 292 lastIndex: 261 icon: nil iconBlock: nil label: nil changeable: false RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeVertices Receiver: a RubPrimarySelectionMorph(7077888) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (20@20) owner: nil submorphs: #() fullBounds: (0@0) corner: (20@20) color: (Color r: 0.686 g: 0.835 b: 0.979 alpha: 1.0) extension: nil vertices: {(5@0). (20@10). (0@20)} filledForm: nil smoothCurve: false curveState: nil borderForm: nil borderColor: nil borderWidth: nil textArea: a RubEditingArea(556531712) firstIndex: 292 lastIndex: 261 icon: nil iconBlock: nil label: nil changeable: false RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea: Receiver: a RubPrimarySelectionMorph(7077888) Arguments and temporary variables: aTextArea: a RubEditingArea(556531712) Receiver's instance variables: bounds: (0@0) corner: (20@20) owner: nil submorphs: #() fullBounds: (0@0) corner: (20@20) color: (Color r: 0.686 g: 0.835 b: 0.979 alpha: 1.0) extension: nil vertices: {(5@0). (20@10). (0@20)} filledForm: nil smoothCurve: false curveState: nil borderForm: nil borderColor: nil borderWidth: nil textArea: a RubEditingArea(556531712) firstIndex: 292 lastIndex: 261 icon: nil iconBlock: nil label: nil changeable: false RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea:from:to: Receiver: a RubPrimarySelectionMorph(7077888) Arguments and temporary variables: aTextArea: a RubEditingArea(556531712) aFirstCharIndex: 292 aLastCharIndex: 261 Receiver's instance variables: bounds: (0@0) corner: (20@20) owner: nil submorphs: #() fullBounds: (0@0) corner: (20@20) color: (Color r: 0.686 g: 0.835 b: 0.979 alpha: 1.0) extension: nil vertices: {(5@0). (20@10). (0@20)} filledForm: nil smoothCurve: false curveState: nil borderForm: nil borderColor: nil borderWidth: nil textArea: a RubEditingArea(556531712) firstIndex: 292 lastIndex: 261 icon: nil iconBlock: nil label: nil changeable: false RubPrimarySelectionMorph class(RubTextSegmentMorph class)>>inTextArea:from:to: Receiver: RubPrimarySelectionMorph Arguments and temporary variables: aTextArea: a RubEditingArea(556531712) aFirstCharIndex: 292 aLastCharIndex: 261 Receiver's instance variables: superclass: RubPlainSegmentMorph methodDict: a MethodDictionary(#defaultBorderColor->RubPrimarySelectionMorph>>#...etc... format: 170 layout: a FixedLayout instanceVariables: #() organization: a ClassOrganization subclasses: nil name: #RubPrimarySelectionMorph classPool: a Dictionary() sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Rubric-Editing-Core' traitComposition: {} localSelectors: nil announcer: nil RubEditingArea(RubAbstractTextArea)>>newPrimarySelection Receiver: a RubEditingArea(556531712) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>addPrimarySelection Receiver: a RubEditingArea(556531712) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>handleSelectionChange: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aBlock: [ self editingState markBlock: markCharacterBlock pointBlock: pointChar...etc... prevMarkBlock: nil prevPointBlock: nil Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>markBlock:pointBlock: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: markCharacterBlock: a CharacterBlock with index 262 and surface (76.80001831054...etc... pointCharacterBlock: a CharacterBlock with index 262 and surface (76.8000183105...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubSmalltalkEditor(RubTextEditor)>>click: Receiver: a RubSmalltalkEditor Arguments and temporary variables: event: BlMouseDownEvent((92@149) red 16747129 0) p: a CharacterBlock with index 262 and surface (76.80001831054688@139) corner: ...etc... Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor>>click: Receiver: a RubSmalltalkEditor Arguments and temporary variables: anEvent: BlMouseDownEvent((92@149) red 16747129 0) Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy [ self editor click: anEvent. self scrollSelectionIntoView: nil ] in RubEditingArea(RubAbstractTextArea)>>click: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: anEvent: BlMouseDownEvent((92@149) red 16747129 0) Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>handleEdit: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: editBlock: [ self editor click: anEvent. self scrollSelectionIntoView: nil ] Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>click: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: anEvent: BlMouseDownEvent((92@149) red 16747129 0) Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor MouseClickState>>click Receiver: a MouseClickState[#firstClickUp] Arguments and temporary variables: Receiver's instance variables: clickClient: a RubEditingArea(556531712) clickState: #firstClickUp firstClickDown: BlMouseDownEvent((92@149) red 16747129 0) firstClickUp: BlMouseUpEvent((1504@1371) 16747257 0) firstClickTime: 16747129 clickSelector: #click: dblClickSelector: #doubleClick: dblClickTime: 500 dblClickTimeoutSelector: nil dragSelector: nil dragThreshold: 5 MouseClickState>>handleEvent:from: Receiver: a MouseClickState[#firstClickUp] Arguments and temporary variables: evt: BlMouseUpEvent((1504@1371) 16747257 0) aHand: a BlHandMorph localEvt: BlMouseUpEvent((92@149) 16747257 0) timedOut: false isDrag: false Receiver's instance variables: clickClient: a RubEditingArea(556531712) clickState: #firstClickUp firstClickDown: BlMouseDownEvent((92@149) red 16747129 0) firstClickUp: BlMouseUpEvent((1504@1371) 16747257 0) firstClickTime: 16747129 clickSelector: #click: dblClickSelector: #doubleClick: dblClickTime: 500 dblClickTimeoutSelector: nil dragSelector: nil dragThreshold: 5 MouseClickState>>handleEvent: Receiver: a MouseClickState[#firstClickUp] Arguments and temporary variables: evt: BlMouseUpEvent((1504@1371) 16747257 0) Receiver's instance variables: clickClient: a RubEditingArea(556531712) clickState: #firstClickUp firstClickDown: BlMouseDownEvent((92@149) red 16747129 0) firstClickUp: BlMouseUpEvent((1504@1371) 16747257 0) firstClickTime: 16747129 clickSelector: #click: dblClickSelector: #doubleClick: dblClickTime: 500 dblClickTimeoutSelector: nil dragSelector: nil dragThreshold: 5 BlMorphicDoubleClickOrDragEventListener>>handleEvent: Receiver: a BlMorphicDoubleClickOrDragEventListener Arguments and temporary variables: anEvent: BlMouseUpEvent((1504@1371) 16747257 0) Receiver's instance variables: next: a BlHaloGlobalEventListener state: a MouseClickState[#firstClickUp] BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: BlMouseUpEvent((1504@1371) 16747257 0) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicDoubleClickOrDragEventListener deferredActions: WaitfreeQueue with 0 items [ :event | self handleEvent: event ] in BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: event: BlMouseUpEvent((1504@1371) 16747257 0) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicDoubleClickOrDragEventListener deferredActions: WaitfreeQueue with 0 items BlVMEventFetcher>>fetchedEventDo: Receiver: a BlVMEventFetcher Arguments and temporary variables: aBlock: [ :event | self handleEvent: event ] evtBuf: #(1 16747257 1504 1371 0 0 0 1) evt: BlMouseUpEvent((1504@1371) 16747257 0) type: 1 Receiver's instance variables: space: a BlMorphicCompatibleBlocSpace [Bloc-1] sensor: an InputEventSensor lastEventBuffer: #(1 16747257 1504 1371 0 0 0 1) lastKeyScanCode: 101 combinedChar: nil recentModifiers: 0 BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicDoubleClickOrDragEventListener deferredActions: WaitfreeQueue with 0 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: a BlTickEvent Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicDoubleClickOrDragEventListener deferredActions: WaitfreeQueue with 0 items WeakMessageSend>>value: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: anObject: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg: a BlTickEvent Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull:cull: Receiver: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSpace [Bloc-1] ) Arguments and temporary variables: arg1: a BlTickEvent arg2: an Announcer Receiver's instance variables: selector: #handlePrimaryTickEvent: shouldBeNil: #() arguments: a WeakArray() [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: Receiver: a WeakAnnouncementSubscription Arguments and temporary variables: anAnnouncement: a BlTickEvent Receiver's instance variables: list: a WeakFinalizationList next: nil announcer: an Announcer announcementClass: BlTickEvent action: WeakMessageSend(#handlePrimaryTickEvent: -> a BlMorphicCompatibleBlocSp...etc... BlockClosure>>on:do: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: on: exception fork: handlerAction "Activate the receiver. In ca...etc... Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: nil ex: UnhandledError copy: nil onDoCtx: nil process: nil handler: nil bottom: nil thisCtx: nil Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 --- The full stack --- OrderedCollection(Object)>>errorSubscriptBounds: OrderedCollection>>at: RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeStraightVertices RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeVertices RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea: RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea:from:to: RubPrimarySelectionMorph class(RubTextSegmentMorph class)>>inTextArea:from:to: RubEditingArea(RubAbstractTextArea)>>newPrimarySelection RubEditingArea(RubAbstractTextArea)>>addPrimarySelection RubEditingArea(RubAbstractTextArea)>>handleSelectionChange: RubEditingArea(RubAbstractTextArea)>>markBlock:pointBlock: RubSmalltalkEditor(RubTextEditor)>>click: RubSmalltalkEditor>>click: [ self editor click: anEvent. self scrollSelectionIntoView: nil ] in RubEditingArea(RubAbstractTextArea)>>click: RubEditingArea(RubAbstractTextArea)>>handleEdit: RubEditingArea(RubAbstractTextArea)>>click: MouseClickState>>click MouseClickState>>handleEvent:from: MouseClickState>>handleEvent: BlMorphicDoubleClickOrDragEventListener>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: [ :event | self handleEvent: event ] in BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents BlVMEventFetcher>>fetchedEventDo: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>processEvents BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: WeakMessageSend>>value: WeakMessageSend>>cull: WeakMessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: BlockClosure>>on:do: [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE SubscriptOutOfBounds: 11 14 July 2015 6:05:21.007607 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] OrderedCollection(Object)>>errorSubscriptBounds: Receiver: an OrderedCollection(a RubTextLine 1 to: 11 a RubTextLine 12 to: 30 a RubTextLine 31 to: 6...etc... Arguments and temporary variables: index: 11 Receiver's instance variables: array: an Array(a RubTextLine 1 to: 11 a RubTextLine 12 to: 30 a RubTextLine 31...etc... firstIndex: 1 lastIndex: 10 OrderedCollection>>at: Receiver: an OrderedCollection(a RubTextLine 1 to: 11 a RubTextLine 12 to: 30 a RubTextLine 31 to: 6...etc... Arguments and temporary variables: anInteger: 11 index: 11 Receiver's instance variables: array: an Array(a RubTextLine 1 to: 11 a RubTextLine 12 to: 30 a RubTextLine 31...etc... firstIndex: 1 lastIndex: 10 RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeStraightVertices Receiver: a RubPrimarySelectionMorph(501481472) Arguments and temporary variables: firstCB: a CharacterBlock with index 292 and surface (240.60008239746094@177) c...etc... lastCB: a CharacterBlock with index 261 and surface (69.00001525878906@139) cor...etc... firstLineIndex: 10 lastLineIndex: 8 firstLine: a RubTextLine 264 to: 291 lastLine: a RubTextLine 255 to: 262 verts: an OrderedCollection() secondLine: nil thirdLine: nil Receiver's instance variables: bounds: (0@0) corner: (20@20) owner: nil submorphs: #() fullBounds: (0@0) corner: (20@20) color: (Color r: 0.686 g: 0.835 b: 0.979 alpha: 1.0) extension: nil vertices: {(5@0). (20@10). (0@20)} filledForm: nil smoothCurve: false curveState: nil borderForm: nil borderColor: nil borderWidth: nil textArea: a RubEditingArea(556531712) firstIndex: 292 lastIndex: 261 icon: nil iconBlock: nil label: nil changeable: false RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeVertices Receiver: a RubPrimarySelectionMorph(501481472) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (20@20) owner: nil submorphs: #() fullBounds: (0@0) corner: (20@20) color: (Color r: 0.686 g: 0.835 b: 0.979 alpha: 1.0) extension: nil vertices: {(5@0). (20@10). (0@20)} filledForm: nil smoothCurve: false curveState: nil borderForm: nil borderColor: nil borderWidth: nil textArea: a RubEditingArea(556531712) firstIndex: 292 lastIndex: 261 icon: nil iconBlock: nil label: nil changeable: false RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea: Receiver: a RubPrimarySelectionMorph(501481472) Arguments and temporary variables: aTextArea: a RubEditingArea(556531712) Receiver's instance variables: bounds: (0@0) corner: (20@20) owner: nil submorphs: #() fullBounds: (0@0) corner: (20@20) color: (Color r: 0.686 g: 0.835 b: 0.979 alpha: 1.0) extension: nil vertices: {(5@0). (20@10). (0@20)} filledForm: nil smoothCurve: false curveState: nil borderForm: nil borderColor: nil borderWidth: nil textArea: a RubEditingArea(556531712) firstIndex: 292 lastIndex: 261 icon: nil iconBlock: nil label: nil changeable: false RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea:from:to: Receiver: a RubPrimarySelectionMorph(501481472) Arguments and temporary variables: aTextArea: a RubEditingArea(556531712) aFirstCharIndex: 292 aLastCharIndex: 261 Receiver's instance variables: bounds: (0@0) corner: (20@20) owner: nil submorphs: #() fullBounds: (0@0) corner: (20@20) color: (Color r: 0.686 g: 0.835 b: 0.979 alpha: 1.0) extension: nil vertices: {(5@0). (20@10). (0@20)} filledForm: nil smoothCurve: false curveState: nil borderForm: nil borderColor: nil borderWidth: nil textArea: a RubEditingArea(556531712) firstIndex: 292 lastIndex: 261 icon: nil iconBlock: nil label: nil changeable: false RubPrimarySelectionMorph class(RubTextSegmentMorph class)>>inTextArea:from:to: Receiver: RubPrimarySelectionMorph Arguments and temporary variables: aTextArea: a RubEditingArea(556531712) aFirstCharIndex: 292 aLastCharIndex: 261 Receiver's instance variables: superclass: RubPlainSegmentMorph methodDict: a MethodDictionary(#defaultBorderColor->RubPrimarySelectionMorph>>#...etc... format: 170 layout: a FixedLayout instanceVariables: #() organization: a ClassOrganization subclasses: nil name: #RubPrimarySelectionMorph classPool: a Dictionary() sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Rubric-Editing-Core' traitComposition: {} localSelectors: nil announcer: nil RubEditingArea(RubAbstractTextArea)>>newPrimarySelection Receiver: a RubEditingArea(556531712) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>addPrimarySelection Receiver: a RubEditingArea(556531712) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>handleSelectionChange: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aBlock: [ self editingState markIndex: markIndex pointIndex: pointIndex ] prevMarkBlock: nil prevPointBlock: nil Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>markIndex:pointIndex: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: markIndex: 1 pointIndex: 292 Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubSmalltalkEditor(RubTextEditor)>>markIndex:pointIndex: Receiver: a RubSmalltalkEditor Arguments and temporary variables: markIndex: 1 pointIndex: 292 Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>selectInvisiblyFrom:to: Receiver: a RubSmalltalkEditor Arguments and temporary variables: start: 1 stop: 291 Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>selectFrom:to: Receiver: a RubSmalltalkEditor Arguments and temporary variables: start: 1 stop: 291 Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>selectAll Receiver: a RubSmalltalkEditor Arguments and temporary variables: Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubEditingArea(RubAbstractTextArea)>>selectAll Receiver: a RubEditingArea(556531712) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] in [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aStringOrText: a Text for 'initialize super initialize. self withRectangleVie...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor BlockClosure>>ensure: Receiver: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelection...etc... Arguments and temporary variables: aBlock: [ self readOnly: wasEditable ] complete: nil returnValue: nil Receiver's instance variables: outerContext: [ self beEditableWhile: [ aStringOrText = self text ifFal...etc... startpc: 57 numArgs: 0 RubEditingArea(RubAbstractTextArea)>>beEditableWhile: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aBlock: [ aStringOrText = self text ifFalse: [ self selectAll. self edit...etc... wasEditable: false Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aStringOrText: a Text for 'initialize super initialize. self withRectangleVie...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>handleEdit: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: editBlock: [ self beEditableWhile: [ aStringOrText = self text ifFalse:...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>updateTextWith: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aStringOrText: a Text for 'initialize super initialize. self withRectangleVie...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubTextScrollPane>>updateTextWith: Receiver: a RubTextScrollPane(200540160) Arguments and temporary variables: stringOrText: a Text for 'initialize super initialize. self withRectangleView...etc... Receiver's instance variables: bounds: (1412.0@1222.0) corner: (2252.0@1478.0) owner: a RubScrolledTextMorph(110886912) submorphs: an Array(a TransformWithLayoutMorph(220987392)) fullBounds: (1412@1222) corner: (2252@1478) color: Color transparent extension: a MorphExtension (855900160) [other: (announcer -> an Announcer) (k...etc... scroller: a TransformWithLayoutMorph(220987392) hScrollbar: a RubScrollBar(286261248) vScrollbar: a RubScrollBar(915668992) drawFocusBorder: true RubScrolledTextMorph>>updateTextWith: Receiver: a RubScrolledTextMorph(110886912) Arguments and temporary variables: stringOrText: a Text for 'initialize super initialize. self withRectangleView...etc... Receiver's instance variables: bounds: (1412.0@1222.0) corner: (2252.0@1499.0) owner: a PanelMorph(893386752) submorphs: an Array(a RubTextScrollPane(200540160) a RubAdornmentDisplayer(8931...etc... fullBounds: (1412@1222) corner: (2252@1499) color: Color white extension: a MorphExtension (184549376) [other: (announcer -> an Announcer) (k...etc... hasEditingConflicts: false hasUnacceptedEdits: false alwaysAccept: nil setTextSelector: #setText:from: getTextSelector: #getText getSelectionSelector: #primarySelectionInterval autoAccept: false scrollPane: a RubTextScrollPane(200540160) rulers: a SortedCollection(a RubCodeSizeFeedback(926416896) a NautilusAnnotatio...etc... enabled: true RubScrolledTextMorph>>cancel Receiver: a RubScrolledTextMorph(110886912) Arguments and temporary variables: Receiver's instance variables: bounds: (1412.0@1222.0) corner: (2252.0@1499.0) owner: a PanelMorph(893386752) submorphs: an Array(a RubTextScrollPane(200540160) a RubAdornmentDisplayer(8931...etc... fullBounds: (1412@1222) corner: (2252@1499) color: Color white extension: a MorphExtension (184549376) [other: (announcer -> an Announcer) (k...etc... hasEditingConflicts: false hasUnacceptedEdits: false alwaysAccept: nil setTextSelector: #setText:from: getTextSelector: #getText getSelectionSelector: #primarySelectionInterval autoAccept: false scrollPane: a RubTextScrollPane(200540160) rulers: a SortedCollection(a RubCodeSizeFeedback(926416896) a NautilusAnnotatio...etc... enabled: true RubScrolledTextMorph>>whenCanceEditRequestedInModel: Receiver: a RubScrolledTextMorph(110886912) Arguments and temporary variables: anAnnoucement: a RubCanceEditRequestedInModel Receiver's instance variables: bounds: (1412.0@1222.0) corner: (2252.0@1499.0) owner: a PanelMorph(893386752) submorphs: an Array(a RubTextScrollPane(200540160) a RubAdornmentDisplayer(8931...etc... fullBounds: (1412@1222) corner: (2252@1499) color: Color white extension: a MorphExtension (184549376) [other: (announcer -> an Announcer) (k...etc... hasEditingConflicts: false hasUnacceptedEdits: false alwaysAccept: nil setTextSelector: #setText:from: getTextSelector: #getText getSelectionSelector: #primarySelectionInterval autoAccept: false scrollPane: a RubTextScrollPane(200540160) rulers: a SortedCollection(a RubCodeSizeFeedback(926416896) a NautilusAnnotatio...etc... enabled: true MessageSend>>value: Receiver: MessageSend(#whenCanceEditRequestedInModel: -> a RubScrolledTextMorph(110886912)) Arguments and temporary variables: anObject: a RubCanceEditRequestedInModel Receiver's instance variables: receiver: a RubScrolledTextMorph(110886912) selector: #whenCanceEditRequestedInModel: arguments: #() MessageSend>>cull: Receiver: MessageSend(#whenCanceEditRequestedInModel: -> a RubScrolledTextMorph(110886912)) Arguments and temporary variables: arg: a RubCanceEditRequestedInModel Receiver's instance variables: receiver: a RubScrolledTextMorph(110886912) selector: #whenCanceEditRequestedInModel: arguments: #() MessageSend>>cull:cull: Receiver: MessageSend(#whenCanceEditRequestedInModel: -> a RubScrolledTextMorph(110886912)) Arguments and temporary variables: arg1: a RubCanceEditRequestedInModel arg2: an Announcer Receiver's instance variables: receiver: a RubScrolledTextMorph(110886912) selector: #whenCanceEditRequestedInModel: arguments: #() [ action cull: anAnnouncement cull: announcer ] in AnnouncementSubscription>>deliver: Receiver: an AnnouncementSubscription Arguments and temporary variables: anAnnouncement: a RubCanceEditRequestedInModel Receiver's instance variables: announcer: an Announcer announcementClass: RubCanceEditRequestedInModel subscriber: a RubScrolledTextMorph(110886912) action: MessageSend(#whenCanceEditRequestedInModel: -> a RubScrolledTextMorph(1...etc... BlockClosure>>on:do: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: on: exception fork: handlerAction "Activate the receiver. In ca...etc... Receiver's instance variables: outerContext: AnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: nil ex: UnhandledError copy: nil onDoCtx: nil process: nil handler: nil bottom: nil thisCtx: nil Receiver's instance variables: outerContext: AnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 --- The full stack --- OrderedCollection(Object)>>errorSubscriptBounds: OrderedCollection>>at: RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeStraightVertices RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeVertices RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea: RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea:from:to: RubPrimarySelectionMorph class(RubTextSegmentMorph class)>>inTextArea:from:to: RubEditingArea(RubAbstractTextArea)>>newPrimarySelection RubEditingArea(RubAbstractTextArea)>>addPrimarySelection RubEditingArea(RubAbstractTextArea)>>handleSelectionChange: RubEditingArea(RubAbstractTextArea)>>markIndex:pointIndex: RubSmalltalkEditor(RubTextEditor)>>markIndex:pointIndex: RubSmalltalkEditor(RubTextEditor)>>selectInvisiblyFrom:to: RubSmalltalkEditor(RubTextEditor)>>selectFrom:to: RubSmalltalkEditor(RubTextEditor)>>selectAll RubEditingArea(RubAbstractTextArea)>>selectAll [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] in [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: BlockClosure>>ensure: RubEditingArea(RubAbstractTextArea)>>beEditableWhile: [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: RubEditingArea(RubAbstractTextArea)>>handleEdit: RubEditingArea(RubAbstractTextArea)>>updateTextWith: RubTextScrollPane>>updateTextWith: RubScrolledTextMorph>>updateTextWith: RubScrolledTextMorph>>cancel RubScrolledTextMorph>>whenCanceEditRequestedInModel: MessageSend>>value: MessageSend>>cull: MessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in AnnouncementSubscription>>deliver: BlockClosure>>on:do: [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: ------------------------------------------------------------------------------- thLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>addPrimarySelection Receiver: a RubEditingArea(556531712) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>handleSelectionChange: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aBlock: [ self editingState markIndex: markIndex pointIndex: pointIndex ] prevMarkBlock: nil prevPointBlock: nil Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>markIndex:pointIndex: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: markIndex: 1 pointIndex: 292 Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubSmalltalkEditor(RubTextEditor)>>markIndex:pointIndex: Receiver: a RubSmalltalkEditor Arguments and temporary variables: markIndex: 1 pointIndex: 292 Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>selectInvisiblyFrom:to: Receiver: a RubSmalltalkEditor Arguments and temporary variables: start: 1 stop: 291 Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>selectFrom:to: Receiver: a RubSmalltalkEditor Arguments and temporary variables: start: 1 stop: 291 Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>selectAll Receiver: a RubSmalltalkEditor Arguments and temporary variables: Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubEditingArea(RubAbstractTextArea)>>selectAll Receiver: a RubEditingArea(556531712) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] in [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aStringOrText: a Text for 'initialize super initialize. self withRectangleVie...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor BlockClosure>>ensure: Receiver: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelection...etc... Arguments and temporary variables: aBlock: [ self readOnly: wasEditable ] complete: nil returnValue: nil Receiver's instance variables: outerContext: [ self beEditableWhile: [ aStringOrText = self text ifFal...etc... startpc: 57 numArgs: 0 RubEditingArea(RubAbstractTextArea)>>beEditableWhile: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aBlock: [ aStringOrText = self text ifFalse: [ self selectAll. self edit...etc... wasEditable: false Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aStringOrText: a Text for 'initialize super initialize. self withRectangleVie...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>handleEdit: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: editBlock: [ self beEditableWhile: [ aStringOrText = self text ifFalse:...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>updateTextWith: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aStringOrText: a Text for 'initialize super initialize. self withRectangleVie...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubTextScrollPane>>updateTextWith: Receiver: a RubTextScrollPane(200540160) Arguments and temporary variables: stringOrText: a Text for 'initialize super initialize. self withRectangleView...etc... Receiver's instance variables: bounds: (1412.0@1222.0) corner: (2252.0@1478.0) owner: a RubScrolledTextMorph(110886912) submorphs: an Array(a TransformWithLayoutMorph(220987392)) fullBounds: (1412@1222) corner: (2252@1478) color: Color transparent extension: a MorphExtension (855900160) [other: (announcer -> an Announcer) (k...etc... scroller: a TransformWithLayoutMorph(220987392) hScrollbar: a RubScrollBar(286261248) vScrollbar: a RubScrollBar(915668992) drawFocusBorder: true RubScrolledTextMorph>>updateTextWith: Receiver: a RubScrolledTextMorph(110886912) Arguments and temporary variables: stringOrText: a Text for 'initialize super initialize. self withRectangleView...etc... Receiver's instance variables: bounds: (1412.0@1222.0) corner: (2252.0@1499.0) owner: a PanelMorph(893386752) submorphs: an Array(a RubTextScrollPane(200540160) a RubAdornmentDisplayer(8931...etc... fullBounds: (1412@1222) corner: (2252@1499) color: Color white extension: a MorphExtension (184549376) [other: (announcer -> an Announcer) (k...etc... hasEditingConflicts: false hasUnacceptedEdits: false alwaysAccept: nil setTextSelector: #setText:from: getTextSelector: #getText getSelectionSelector: #primarySelectionInterval autoAccept: false scrollPane: a RubTextScrollPane(200540160) rulers: a SortedCollection(a RubCodeSizeFeedback(926416896) a NautilusAnnotatio...etc... enabled: true RubScrolledTextMorph>>whenTextUpdatedInModel: Receiver: a RubScrolledTextMorph(110886912) Arguments and temporary variables: anAnnouncement: a RubTextUpdatedInModel Receiver's instance variables: bounds: (1412.0@1222.0) corner: (2252.0@1499.0) owner: a PanelMorph(893386752) submorphs: an Array(a RubTextScrollPane(200540160) a RubAdornmentDisplayer(8931...etc... fullBounds: (1412@1222) corner: (2252@1499) color: Color white extension: a MorphExtension (184549376) [other: (announcer -> an Announcer) (k...etc... hasEditingConflicts: false hasUnacceptedEdits: false alwaysAccept: nil setTextSelector: #setText:from: getTextSelector: #getText getSelectionSelector: #primarySelectionInterval autoAccept: false scrollPane: a RubTextScrollPane(200540160) rulers: a SortedCollection(a RubCodeSizeFeedback(926416896) a NautilusAnnotatio...etc... enabled: true MessageSend>>value: Receiver: MessageSend(#whenTextUpdatedInModel: -> a RubScrolledTextMorph(110886912)) Arguments and temporary variables: anObject: a RubTextUpdatedInModel Receiver's instance variables: receiver: a RubScrolledTextMorph(110886912) selector: #whenTextUpdatedInModel: arguments: #() MessageSend>>cull: Receiver: MessageSend(#whenTextUpdatedInModel: -> a RubScrolledTextMorph(110886912)) Arguments and temporary variables: arg: a RubTextUpdatedInModel Receiver's instance variables: receiver: a RubScrolledTextMorph(110886912) selector: #whenTextUpdatedInModel: arguments: #() MessageSend>>cull:cull: Receiver: MessageSend(#whenTextUpdatedInModel: -> a RubScrolledTextMorph(110886912)) Arguments and temporary variables: arg1: a RubTextUpdatedInModel arg2: an Announcer Receiver's instance variables: receiver: a RubScrolledTextMorph(110886912) selector: #whenTextUpdatedInModel: arguments: #() [ action cull: anAnnouncement cull: announcer ] in AnnouncementSubscription>>deliver: Receiver: an AnnouncementSubscription Arguments and temporary variables: anAnnouncement: a RubTextUpdatedInModel Receiver's instance variables: announcer: an Announcer announcementClass: RubTextUpdatedInModel subscriber: a RubScrolledTextMorph(110886912) action: MessageSend(#whenTextUpdatedInModel: -> a RubScrolledTextMorph(11088691...etc... BlockClosure>>on:do: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: on: exception fork: handlerAction "Activate the receiver. In ca...etc... Receiver's instance variables: outerContext: AnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: nil ex: UnhandledError copy: nil onDoCtx: nil process: nil handler: nil bottom: nil thisCtx: nil Receiver's instance variables: outerContext: AnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 --- The full stack --- OrderedCollection(Object)>>errorSubscriptBounds: OrderedCollection>>at: RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeStraightVertices RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeVertices RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea: RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea:from:to: RubPrimarySelectionMorph class(RubTextSegmentMorph class)>>inTextArea:from:to: RubEditingArea(RubAbstractTextArea)>>newPrimarySelection RubEditingArea(RubAbstractTextArea)>>addPrimarySelection RubEditingArea(RubAbstractTextArea)>>handleSelectionChange: RubEditingArea(RubAbstractTextArea)>>markIndex:pointIndex: RubSmalltalkEditor(RubTextEditor)>>markIndex:pointIndex: RubSmalltalkEditor(RubTextEditor)>>selectInvisiblyFrom:to: RubSmalltalkEditor(RubTextEditor)>>selectFrom:to: RubSmalltalkEditor(RubTextEditor)>>selectAll RubEditingArea(RubAbstractTextArea)>>selectAll [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] in [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: BlockClosure>>ensure: RubEditingArea(RubAbstractTextArea)>>beEditableWhile: [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: RubEditingArea(RubAbstractTextArea)>>handleEdit: RubEditingArea(RubAbstractTextArea)>>updateTextWith: RubTextScrollPane>>updateTextWith: RubScrolledTextMorph>>updateTextWith: RubScrolledTextMorph>>whenTextUpdatedInModel: MessageSend>>value: MessageSend>>cull: MessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in AnnouncementSubscription>>deliver: BlockClosure>>on:do: [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: ------------------------------------------------------------------------------- dex: markIndex pointIndex: pointIndex ] prevMarkBlock: nil prevPointBlock: nil Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>markIndex:pointIndex: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: markIndex: 1 pointIndex: 292 Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubSmalltalkEditor(RubTextEditor)>>markIndex:pointIndex: Receiver: a RubSmalltalkEditor Arguments and temporary variables: markIndex: 1 pointIndex: 292 Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>selectInvisiblyFrom:to: Receiver: a RubSmalltalkEditor Arguments and temporary variables: start: 1 stop: 291 Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>selectFrom:to: Receiver: a RubSmalltalkEditor Arguments and temporary variables: start: 1 stop: 291 Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>selectAll Receiver: a RubSmalltalkEditor Arguments and temporary variables: Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubEditingArea(RubAbstractTextArea)>>selectAll Receiver: a RubEditingArea(556531712) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] in [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aStringOrText: a Text for 'BlMorph subclass: #BlWellPanel instanceVariableName...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor BlockClosure>>ensure: Receiver: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelection...etc... Arguments and temporary variables: aBlock: [ self readOnly: wasEditable ] complete: nil returnValue: nil Receiver's instance variables: outerContext: [ self beEditableWhile: [ aStringOrText = self text ifFal...etc... startpc: 57 numArgs: 0 RubEditingArea(RubAbstractTextArea)>>beEditableWhile: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aBlock: [ aStringOrText = self text ifFalse: [ self selectAll. self edit...etc... wasEditable: false Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aStringOrText: a Text for 'BlMorph subclass: #BlWellPanel instanceVariableName...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>handleEdit: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: editBlock: [ self beEditableWhile: [ aStringOrText = self text ifFalse:...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>updateTextWith: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aStringOrText: a Text for 'BlMorph subclass: #BlWellPanel instanceVariableName...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubTextScrollPane>>updateTextWith: Receiver: a RubTextScrollPane(200540160) Arguments and temporary variables: stringOrText: a Text for 'BlMorph subclass: #BlWellPanel instanceVariableNames...etc... Receiver's instance variables: bounds: (1412.0@1222.0) corner: (2252.0@1478.0) owner: a RubScrolledTextMorph(110886912) submorphs: an Array(a TransformWithLayoutMorph(220987392)) fullBounds: (1412@1222) corner: (2252@1478) color: Color transparent extension: a MorphExtension (855900160) [other: (announcer -> an Announcer) (k...etc... scroller: a TransformWithLayoutMorph(220987392) hScrollbar: a RubScrollBar(286261248) vScrollbar: a RubScrollBar(915668992) drawFocusBorder: true RubScrolledTextMorph>>updateTextWith: Receiver: a RubScrolledTextMorph(110886912) Arguments and temporary variables: stringOrText: a Text for 'BlMorph subclass: #BlWellPanel instanceVariableNames...etc... Receiver's instance variables: bounds: (1412.0@1222.0) corner: (2252.0@1499.0) owner: a PanelMorph(893386752) submorphs: an Array(a RubTextScrollPane(200540160) a RubAdornmentDisplayer(8931...etc... fullBounds: (1412@1222) corner: (2252@1499) color: Color white extension: a MorphExtension (184549376) [other: (announcer -> an Announcer) (k...etc... hasEditingConflicts: false hasUnacceptedEdits: false alwaysAccept: nil setTextSelector: #setText:from: getTextSelector: #getText getSelectionSelector: #primarySelectionInterval autoAccept: false scrollPane: a RubTextScrollPane(200540160) rulers: a SortedCollection(a RubCodeSizeFeedback(926416896) a NautilusAnnotatio...etc... enabled: true RubScrolledTextMorph>>whenTextUpdatedInModel: Receiver: a RubScrolledTextMorph(110886912) Arguments and temporary variables: anAnnouncement: a RubTextUpdatedInModel Receiver's instance variables: bounds: (1412.0@1222.0) corner: (2252.0@1499.0) owner: a PanelMorph(893386752) submorphs: an Array(a RubTextScrollPane(200540160) a RubAdornmentDisplayer(8931...etc... fullBounds: (1412@1222) corner: (2252@1499) color: Color white extension: a MorphExtension (184549376) [other: (announcer -> an Announcer) (k...etc... hasEditingConflicts: false hasUnacceptedEdits: false alwaysAccept: nil setTextSelector: #setText:from: getTextSelector: #getText getSelectionSelector: #primarySelectionInterval autoAccept: false scrollPane: a RubTextScrollPane(200540160) rulers: a SortedCollection(a RubCodeSizeFeedback(926416896) a NautilusAnnotatio...etc... enabled: true MessageSend>>value: Receiver: MessageSend(#whenTextUpdatedInModel: -> a RubScrolledTextMorph(110886912)) Arguments and temporary variables: anObject: a RubTextUpdatedInModel Receiver's instance variables: receiver: a RubScrolledTextMorph(110886912) selector: #whenTextUpdatedInModel: arguments: #() MessageSend>>cull: Receiver: MessageSend(#whenTextUpdatedInModel: -> a RubScrolledTextMorph(110886912)) Arguments and temporary variables: arg: a RubTextUpdatedInModel Receiver's instance variables: receiver: a RubScrolledTextMorph(110886912) selector: #whenTextUpdatedInModel: arguments: #() MessageSend>>cull:cull: Receiver: MessageSend(#whenTextUpdatedInModel: -> a RubScrolledTextMorph(110886912)) Arguments and temporary variables: arg1: a RubTextUpdatedInModel arg2: an Announcer Receiver's instance variables: receiver: a RubScrolledTextMorph(110886912) selector: #whenTextUpdatedInModel: arguments: #() [ action cull: anAnnouncement cull: announcer ] in AnnouncementSubscription>>deliver: Receiver: an AnnouncementSubscription Arguments and temporary variables: anAnnouncement: a RubTextUpdatedInModel Receiver's instance variables: announcer: an Announcer announcementClass: RubTextUpdatedInModel subscriber: a RubScrolledTextMorph(110886912) action: MessageSend(#whenTextUpdatedInModel: -> a RubScrolledTextMorph(11088691...etc... BlockClosure>>on:do: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: on: exception fork: handlerAction "Activate the receiver. In ca...etc... Receiver's instance variables: outerContext: AnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: nil ex: UnhandledError copy: nil onDoCtx: nil process: nil handler: nil bottom: nil thisCtx: nil Receiver's instance variables: outerContext: AnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 --- The full stack --- OrderedCollection(Object)>>errorSubscriptBounds: OrderedCollection>>at: RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeStraightVertices RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeVertices RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea: RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea:from:to: RubPrimarySelectionMorph class(RubTextSegmentMorph class)>>inTextArea:from:to: RubEditingArea(RubAbstractTextArea)>>newPrimarySelection RubEditingArea(RubAbstractTextArea)>>addPrimarySelection RubEditingArea(RubAbstractTextArea)>>handleSelectionChange: RubEditingArea(RubAbstractTextArea)>>markIndex:pointIndex: RubSmalltalkEditor(RubTextEditor)>>markIndex:pointIndex: RubSmalltalkEditor(RubTextEditor)>>selectInvisiblyFrom:to: RubSmalltalkEditor(RubTextEditor)>>selectFrom:to: RubSmalltalkEditor(RubTextEditor)>>selectAll RubEditingArea(RubAbstractTextArea)>>selectAll [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] in [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: BlockClosure>>ensure: RubEditingArea(RubAbstractTextArea)>>beEditableWhile: [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: RubEditingArea(RubAbstractTextArea)>>handleEdit: RubEditingArea(RubAbstractTextArea)>>updateTextWith: RubTextScrollPane>>updateTextWith: RubScrolledTextMorph>>updateTextWith: RubScrolledTextMorph>>whenTextUpdatedInModel: MessageSend>>value: MessageSend>>cull: MessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in AnnouncementSubscription>>deliver: BlockClosure>>on:do: [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: ------------------------------------------------------------------------------- markIndex pointIndex: pointIndex ] prevMarkBlock: nil prevPointBlock: nil Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>markIndex:pointIndex: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: markIndex: 1 pointIndex: 292 Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubSmalltalkEditor(RubTextEditor)>>markIndex:pointIndex: Receiver: a RubSmalltalkEditor Arguments and temporary variables: markIndex: 1 pointIndex: 292 Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>selectInvisiblyFrom:to: Receiver: a RubSmalltalkEditor Arguments and temporary variables: start: 1 stop: 291 Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>selectFrom:to: Receiver: a RubSmalltalkEditor Arguments and temporary variables: start: 1 stop: 291 Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>selectAll Receiver: a RubSmalltalkEditor Arguments and temporary variables: Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubEditingArea(RubAbstractTextArea)>>selectAll Receiver: a RubEditingArea(556531712) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] in [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aStringOrText: a Text for 'BlMorph subclass: #BlWellPanel instanceVariableName...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor BlockClosure>>ensure: Receiver: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelection...etc... Arguments and temporary variables: aBlock: [ self readOnly: wasEditable ] complete: nil returnValue: nil Receiver's instance variables: outerContext: [ self beEditableWhile: [ aStringOrText = self text ifFal...etc... startpc: 57 numArgs: 0 RubEditingArea(RubAbstractTextArea)>>beEditableWhile: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aBlock: [ aStringOrText = self text ifFalse: [ self selectAll. self edit...etc... wasEditable: false Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aStringOrText: a Text for 'BlMorph subclass: #BlWellPanel instanceVariableName...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>handleEdit: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: editBlock: [ self beEditableWhile: [ aStringOrText = self text ifFalse:...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>updateTextWith: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aStringOrText: a Text for 'BlMorph subclass: #BlWellPanel instanceVariableName...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubTextScrollPane>>updateTextWith: Receiver: a RubTextScrollPane(200540160) Arguments and temporary variables: stringOrText: a Text for 'BlMorph subclass: #BlWellPanel instanceVariableNames...etc... Receiver's instance variables: bounds: (1412.0@1222.0) corner: (2252.0@1478.0) owner: a RubScrolledTextMorph(110886912) submorphs: an Array(a TransformWithLayoutMorph(220987392)) fullBounds: (1412@1222) corner: (2252@1478) color: Color transparent extension: a MorphExtension (855900160) [other: (announcer -> an Announcer) (k...etc... scroller: a TransformWithLayoutMorph(220987392) hScrollbar: a RubScrollBar(286261248) vScrollbar: a RubScrollBar(915668992) drawFocusBorder: true RubScrolledTextMorph>>updateTextWith: Receiver: a RubScrolledTextMorph(110886912) Arguments and temporary variables: stringOrText: a Text for 'BlMorph subclass: #BlWellPanel instanceVariableNames...etc... Receiver's instance variables: bounds: (1412.0@1222.0) corner: (2252.0@1499.0) owner: a PanelMorph(893386752) submorphs: an Array(a RubTextScrollPane(200540160) a RubAdornmentDisplayer(8931...etc... fullBounds: (1412@1222) corner: (2252@1499) color: Color white extension: a MorphExtension (184549376) [other: (announcer -> an Announcer) (k...etc... hasEditingConflicts: false hasUnacceptedEdits: false alwaysAccept: nil setTextSelector: #setText:from: getTextSelector: #getText getSelectionSelector: #primarySelectionInterval autoAccept: false scrollPane: a RubTextScrollPane(200540160) rulers: a SortedCollection(a RubCodeSizeFeedback(926416896) a NautilusAnnotatio...etc... enabled: true RubScrolledTextMorph>>whenTextUpdatedInModel: Receiver: a RubScrolledTextMorph(110886912) Arguments and temporary variables: anAnnouncement: a RubTextUpdatedInModel Receiver's instance variables: bounds: (1412.0@1222.0) corner: (2252.0@1499.0) owner: a PanelMorph(893386752) submorphs: an Array(a RubTextScrollPane(200540160) a RubAdornmentDisplayer(8931...etc... fullBounds: (1412@1222) corner: (2252@1499) color: Color white extension: a MorphExtension (184549376) [other: (announcer -> an Announcer) (k...etc... hasEditingConflicts: false hasUnacceptedEdits: false alwaysAccept: nil setTextSelector: #setText:from: getTextSelector: #getText getSelectionSelector: #primarySelectionInterval autoAccept: false scrollPane: a RubTextScrollPane(200540160) rulers: a SortedCollection(a RubCodeSizeFeedback(926416896) a NautilusAnnotatio...etc... enabled: true MessageSend>>value: Receiver: MessageSend(#whenTextUpdatedInModel: -> a RubScrolledTextMorph(110886912)) Arguments and temporary variables: anObject: a RubTextUpdatedInModel Receiver's instance variables: receiver: a RubScrolledTextMorph(110886912) selector: #whenTextUpdatedInModel: arguments: #() MessageSend>>cull: Receiver: MessageSend(#whenTextUpdatedInModel: -> a RubScrolledTextMorph(110886912)) Arguments and temporary variables: arg: a RubTextUpdatedInModel Receiver's instance variables: receiver: a RubScrolledTextMorph(110886912) selector: #whenTextUpdatedInModel: arguments: #() MessageSend>>cull:cull: Receiver: MessageSend(#whenTextUpdatedInModel: -> a RubScrolledTextMorph(110886912)) Arguments and temporary variables: arg1: a RubTextUpdatedInModel arg2: an Announcer Receiver's instance variables: receiver: a RubScrolledTextMorph(110886912) selector: #whenTextUpdatedInModel: arguments: #() [ action cull: anAnnouncement cull: announcer ] in AnnouncementSubscription>>deliver: Receiver: an AnnouncementSubscription Arguments and temporary variables: anAnnouncement: a RubTextUpdatedInModel Receiver's instance variables: announcer: an Announcer announcementClass: RubTextUpdatedInModel subscriber: a RubScrolledTextMorph(110886912) action: MessageSend(#whenTextUpdatedInModel: -> a RubScrolledTextMorph(11088691...etc... BlockClosure>>on:do: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: on: exception fork: handlerAction "Activate the receiver. In ca...etc... Receiver's instance variables: outerContext: AnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: nil ex: UnhandledError copy: nil onDoCtx: nil process: nil handler: nil bottom: nil thisCtx: nil Receiver's instance variables: outerContext: AnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 --- The full stack --- OrderedCollection(Object)>>errorSubscriptBounds: OrderedCollection>>at: RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeStraightVertices RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeVertices RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea: RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea:from:to: RubPrimarySelectionMorph class(RubTextSegmentMorph class)>>inTextArea:from:to: RubEditingArea(RubAbstractTextArea)>>newPrimarySelection RubEditingArea(RubAbstractTextArea)>>addPrimarySelection RubEditingArea(RubAbstractTextArea)>>handleSelectionChange: RubEditingArea(RubAbstractTextArea)>>markIndex:pointIndex: RubSmalltalkEditor(RubTextEditor)>>markIndex:pointIndex: RubSmalltalkEditor(RubTextEditor)>>selectInvisiblyFrom:to: RubSmalltalkEditor(RubTextEditor)>>selectFrom:to: RubSmalltalkEditor(RubTextEditor)>>selectAll RubEditingArea(RubAbstractTextArea)>>selectAll [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] in [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: BlockClosure>>ensure: RubEditingArea(RubAbstractTextArea)>>beEditableWhile: [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: RubEditingArea(RubAbstractTextArea)>>handleEdit: RubEditingArea(RubAbstractTextArea)>>updateTextWith: RubTextScrollPane>>updateTextWith: RubScrolledTextMorph>>updateTextWith: RubScrolledTextMorph>>whenTextUpdatedInModel: MessageSend>>value: MessageSend>>cull: MessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in AnnouncementSubscription>>deliver: BlockClosure>>on:do: [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: ------------------------------------------------------------------------------- rkIndex: markIndex pointIndex: pointIndex ] prevMarkBlock: nil prevPointBlock: nil Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>markIndex:pointIndex: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: markIndex: 1 pointIndex: 292 Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubSmalltalkEditor(RubTextEditor)>>markIndex:pointIndex: Receiver: a RubSmalltalkEditor Arguments and temporary variables: markIndex: 1 pointIndex: 292 Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>selectInvisiblyFrom:to: Receiver: a RubSmalltalkEditor Arguments and temporary variables: start: 1 stop: 291 Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>selectFrom:to: Receiver: a RubSmalltalkEditor Arguments and temporary variables: start: 1 stop: 291 Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>selectAll Receiver: a RubSmalltalkEditor Arguments and temporary variables: Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubEditingArea(RubAbstractTextArea)>>selectAll Receiver: a RubEditingArea(556531712) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] in [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aStringOrText: a Text for 'BlMorph subclass: #BlWellPanel instanceVariableName...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor BlockClosure>>ensure: Receiver: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelection...etc... Arguments and temporary variables: aBlock: [ self readOnly: wasEditable ] complete: nil returnValue: nil Receiver's instance variables: outerContext: [ self beEditableWhile: [ aStringOrText = self text ifFal...etc... startpc: 57 numArgs: 0 RubEditingArea(RubAbstractTextArea)>>beEditableWhile: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aBlock: [ aStringOrText = self text ifFalse: [ self selectAll. self edit...etc... wasEditable: false Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aStringOrText: a Text for 'BlMorph subclass: #BlWellPanel instanceVariableName...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>handleEdit: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: editBlock: [ self beEditableWhile: [ aStringOrText = self text ifFalse:...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>updateTextWith: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aStringOrText: a Text for 'BlMorph subclass: #BlWellPanel instanceVariableName...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubTextScrollPane>>updateTextWith: Receiver: a RubTextScrollPane(200540160) Arguments and temporary variables: stringOrText: a Text for 'BlMorph subclass: #BlWellPanel instanceVariableNames...etc... Receiver's instance variables: bounds: (1412.0@1222.0) corner: (2252.0@1478.0) owner: a RubScrolledTextMorph(110886912) submorphs: an Array(a TransformWithLayoutMorph(220987392)) fullBounds: (1412@1222) corner: (2252@1478) color: Color transparent extension: a MorphExtension (855900160) [other: (announcer -> an Announcer) (k...etc... scroller: a TransformWithLayoutMorph(220987392) hScrollbar: a RubScrollBar(286261248) vScrollbar: a RubScrollBar(915668992) drawFocusBorder: true RubScrolledTextMorph>>updateTextWith: Receiver: a RubScrolledTextMorph(110886912) Arguments and temporary variables: stringOrText: a Text for 'BlMorph subclass: #BlWellPanel instanceVariableNames...etc... Receiver's instance variables: bounds: (1412.0@1222.0) corner: (2252.0@1499.0) owner: a PanelMorph(893386752) submorphs: an Array(a RubTextScrollPane(200540160) a RubAdornmentDisplayer(8931...etc... fullBounds: (1412@1222) corner: (2252@1499) color: Color white extension: a MorphExtension (184549376) [other: (announcer -> an Announcer) (k...etc... hasEditingConflicts: false hasUnacceptedEdits: false alwaysAccept: nil setTextSelector: #setText:from: getTextSelector: #getText getSelectionSelector: #primarySelectionInterval autoAccept: false scrollPane: a RubTextScrollPane(200540160) rulers: a SortedCollection(a RubCodeSizeFeedback(926416896) a NautilusAnnotatio...etc... enabled: true RubScrolledTextMorph>>whenTextUpdatedInModel: Receiver: a RubScrolledTextMorph(110886912) Arguments and temporary variables: anAnnouncement: a RubTextUpdatedInModel Receiver's instance variables: bounds: (1412.0@1222.0) corner: (2252.0@1499.0) owner: a PanelMorph(893386752) submorphs: an Array(a RubTextScrollPane(200540160) a RubAdornmentDisplayer(8931...etc... fullBounds: (1412@1222) corner: (2252@1499) color: Color white extension: a MorphExtension (184549376) [other: (announcer -> an Announcer) (k...etc... hasEditingConflicts: false hasUnacceptedEdits: false alwaysAccept: nil setTextSelector: #setText:from: getTextSelector: #getText getSelectionSelector: #primarySelectionInterval autoAccept: false scrollPane: a RubTextScrollPane(200540160) rulers: a SortedCollection(a RubCodeSizeFeedback(926416896) a NautilusAnnotatio...etc... enabled: true MessageSend>>value: Receiver: MessageSend(#whenTextUpdatedInModel: -> a RubScrolledTextMorph(110886912)) Arguments and temporary variables: anObject: a RubTextUpdatedInModel Receiver's instance variables: receiver: a RubScrolledTextMorph(110886912) selector: #whenTextUpdatedInModel: arguments: #() MessageSend>>cull: Receiver: MessageSend(#whenTextUpdatedInModel: -> a RubScrolledTextMorph(110886912)) Arguments and temporary variables: arg: a RubTextUpdatedInModel Receiver's instance variables: receiver: a RubScrolledTextMorph(110886912) selector: #whenTextUpdatedInModel: arguments: #() MessageSend>>cull:cull: Receiver: MessageSend(#whenTextUpdatedInModel: -> a RubScrolledTextMorph(110886912)) Arguments and temporary variables: arg1: a RubTextUpdatedInModel arg2: an Announcer Receiver's instance variables: receiver: a RubScrolledTextMorph(110886912) selector: #whenTextUpdatedInModel: arguments: #() [ action cull: anAnnouncement cull: announcer ] in AnnouncementSubscription>>deliver: Receiver: an AnnouncementSubscription Arguments and temporary variables: anAnnouncement: a RubTextUpdatedInModel Receiver's instance variables: announcer: an Announcer announcementClass: RubTextUpdatedInModel subscriber: a RubScrolledTextMorph(110886912) action: MessageSend(#whenTextUpdatedInModel: -> a RubScrolledTextMorph(11088691...etc... BlockClosure>>on:do: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: on: exception fork: handlerAction "Activate the receiver. In ca...etc... Receiver's instance variables: outerContext: AnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: nil ex: UnhandledError copy: nil onDoCtx: nil process: nil handler: nil bottom: nil thisCtx: nil Receiver's instance variables: outerContext: AnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 --- The full stack --- OrderedCollection(Object)>>errorSubscriptBounds: OrderedCollection>>at: RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeStraightVertices RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeVertices RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea: RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea:from:to: RubPrimarySelectionMorph class(RubTextSegmentMorph class)>>inTextArea:from:to: RubEditingArea(RubAbstractTextArea)>>newPrimarySelection RubEditingArea(RubAbstractTextArea)>>addPrimarySelection RubEditingArea(RubAbstractTextArea)>>handleSelectionChange: RubEditingArea(RubAbstractTextArea)>>markIndex:pointIndex: RubSmalltalkEditor(RubTextEditor)>>markIndex:pointIndex: RubSmalltalkEditor(RubTextEditor)>>selectInvisiblyFrom:to: RubSmalltalkEditor(RubTextEditor)>>selectFrom:to: RubSmalltalkEditor(RubTextEditor)>>selectAll RubEditingArea(RubAbstractTextArea)>>selectAll [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] in [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: BlockClosure>>ensure: RubEditingArea(RubAbstractTextArea)>>beEditableWhile: [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: RubEditingArea(RubAbstractTextArea)>>handleEdit: RubEditingArea(RubAbstractTextArea)>>updateTextWith: RubTextScrollPane>>updateTextWith: RubScrolledTextMorph>>updateTextWith: RubScrolledTextMorph>>whenTextUpdatedInModel: MessageSend>>value: MessageSend>>cull: MessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in AnnouncementSubscription>>deliver: BlockClosure>>on:do: [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: ------------------------------------------------------------------------------- dex: markIndex pointIndex: pointIndex ] prevMarkBlock: nil prevPointBlock: nil Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>markIndex:pointIndex: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: markIndex: 1 pointIndex: 292 Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubSmalltalkEditor(RubTextEditor)>>markIndex:pointIndex: Receiver: a RubSmalltalkEditor Arguments and temporary variables: markIndex: 1 pointIndex: 292 Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>selectInvisiblyFrom:to: Receiver: a RubSmalltalkEditor Arguments and temporary variables: start: 1 stop: 291 Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>selectFrom:to: Receiver: a RubSmalltalkEditor Arguments and temporary variables: start: 1 stop: 291 Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>selectAll Receiver: a RubSmalltalkEditor Arguments and temporary variables: Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubEditingArea(RubAbstractTextArea)>>selectAll Receiver: a RubEditingArea(556531712) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] in [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aStringOrText: a Text for 'BlMorph subclass: #BlWellPanel instanceVariableName...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor BlockClosure>>ensure: Receiver: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelection...etc... Arguments and temporary variables: aBlock: [ self readOnly: wasEditable ] complete: nil returnValue: nil Receiver's instance variables: outerContext: [ self beEditableWhile: [ aStringOrText = self text ifFal...etc... startpc: 57 numArgs: 0 RubEditingArea(RubAbstractTextArea)>>beEditableWhile: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aBlock: [ aStringOrText = self text ifFalse: [ self selectAll. self edit...etc... wasEditable: false Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aStringOrText: a Text for 'BlMorph subclass: #BlWellPanel instanceVariableName...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>handleEdit: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: editBlock: [ self beEditableWhile: [ aStringOrText = self text ifFalse:...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>updateTextWith: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aStringOrText: a Text for 'BlMorph subclass: #BlWellPanel instanceVariableName...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubTextScrollPane>>updateTextWith: Receiver: a RubTextScrollPane(200540160) Arguments and temporary variables: stringOrText: a Text for 'BlMorph subclass: #BlWellPanel instanceVariableNames...etc... Receiver's instance variables: bounds: (1412.0@1222.0) corner: (2252.0@1478.0) owner: a RubScrolledTextMorph(110886912) submorphs: an Array(a TransformWithLayoutMorph(220987392)) fullBounds: (1412@1222) corner: (2252@1478) color: Color transparent extension: a MorphExtension (855900160) [other: (announcer -> an Announcer) (k...etc... scroller: a TransformWithLayoutMorph(220987392) hScrollbar: a RubScrollBar(286261248) vScrollbar: a RubScrollBar(915668992) drawFocusBorder: true RubScrolledTextMorph>>updateTextWith: Receiver: a RubScrolledTextMorph(110886912) Arguments and temporary variables: stringOrText: a Text for 'BlMorph subclass: #BlWellPanel instanceVariableNames...etc... Receiver's instance variables: bounds: (1412.0@1222.0) corner: (2252.0@1499.0) owner: a PanelMorph(893386752) submorphs: an Array(a RubTextScrollPane(200540160) a RubAdornmentDisplayer(8931...etc... fullBounds: (1412@1222) corner: (2252@1499) color: Color white extension: a MorphExtension (184549376) [other: (announcer -> an Announcer) (k...etc... hasEditingConflicts: false hasUnacceptedEdits: false alwaysAccept: nil setTextSelector: #setText:from: getTextSelector: #getText getSelectionSelector: #primarySelectionInterval autoAccept: false scrollPane: a RubTextScrollPane(200540160) rulers: a SortedCollection(a RubCodeSizeFeedback(926416896) a NautilusAnnotatio...etc... enabled: true RubScrolledTextMorph>>whenTextUpdatedInModel: Receiver: a RubScrolledTextMorph(110886912) Arguments and temporary variables: anAnnouncement: a RubTextUpdatedInModel Receiver's instance variables: bounds: (1412.0@1222.0) corner: (2252.0@1499.0) owner: a PanelMorph(893386752) submorphs: an Array(a RubTextScrollPane(200540160) a RubAdornmentDisplayer(8931...etc... fullBounds: (1412@1222) corner: (2252@1499) color: Color white extension: a MorphExtension (184549376) [other: (announcer -> an Announcer) (k...etc... hasEditingConflicts: false hasUnacceptedEdits: false alwaysAccept: nil setTextSelector: #setText:from: getTextSelector: #getText getSelectionSelector: #primarySelectionInterval autoAccept: false scrollPane: a RubTextScrollPane(200540160) rulers: a SortedCollection(a RubCodeSizeFeedback(926416896) a NautilusAnnotatio...etc... enabled: true MessageSend>>value: Receiver: MessageSend(#whenTextUpdatedInModel: -> a RubScrolledTextMorph(110886912)) Arguments and temporary variables: anObject: a RubTextUpdatedInModel Receiver's instance variables: receiver: a RubScrolledTextMorph(110886912) selector: #whenTextUpdatedInModel: arguments: #() MessageSend>>cull: Receiver: MessageSend(#whenTextUpdatedInModel: -> a RubScrolledTextMorph(110886912)) Arguments and temporary variables: arg: a RubTextUpdatedInModel Receiver's instance variables: receiver: a RubScrolledTextMorph(110886912) selector: #whenTextUpdatedInModel: arguments: #() MessageSend>>cull:cull: Receiver: MessageSend(#whenTextUpdatedInModel: -> a RubScrolledTextMorph(110886912)) Arguments and temporary variables: arg1: a RubTextUpdatedInModel arg2: an Announcer Receiver's instance variables: receiver: a RubScrolledTextMorph(110886912) selector: #whenTextUpdatedInModel: arguments: #() [ action cull: anAnnouncement cull: announcer ] in AnnouncementSubscription>>deliver: Receiver: an AnnouncementSubscription Arguments and temporary variables: anAnnouncement: a RubTextUpdatedInModel Receiver's instance variables: announcer: an Announcer announcementClass: RubTextUpdatedInModel subscriber: a RubScrolledTextMorph(110886912) action: MessageSend(#whenTextUpdatedInModel: -> a RubScrolledTextMorph(11088691...etc... BlockClosure>>on:do: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: on: exception fork: handlerAction "Activate the receiver. In ca...etc... Receiver's instance variables: outerContext: AnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: nil ex: UnhandledError copy: nil onDoCtx: nil process: nil handler: nil bottom: nil thisCtx: nil Receiver's instance variables: outerContext: AnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 --- The full stack --- OrderedCollection(Object)>>errorSubscriptBounds: OrderedCollection>>at: RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeStraightVertices RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeVertices RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea: RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea:from:to: RubPrimarySelectionMorph class(RubTextSegmentMorph class)>>inTextArea:from:to: RubEditingArea(RubAbstractTextArea)>>newPrimarySelection RubEditingArea(RubAbstractTextArea)>>addPrimarySelection RubEditingArea(RubAbstractTextArea)>>handleSelectionChange: RubEditingArea(RubAbstractTextArea)>>markIndex:pointIndex: RubSmalltalkEditor(RubTextEditor)>>markIndex:pointIndex: RubSmalltalkEditor(RubTextEditor)>>selectInvisiblyFrom:to: RubSmalltalkEditor(RubTextEditor)>>selectFrom:to: RubSmalltalkEditor(RubTextEditor)>>selectAll RubEditingArea(RubAbstractTextArea)>>selectAll [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] in [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: BlockClosure>>ensure: RubEditingArea(RubAbstractTextArea)>>beEditableWhile: [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: RubEditingArea(RubAbstractTextArea)>>handleEdit: RubEditingArea(RubAbstractTextArea)>>updateTextWith: RubTextScrollPane>>updateTextWith: RubScrolledTextMorph>>updateTextWith: RubScrolledTextMorph>>whenTextUpdatedInModel: MessageSend>>value: MessageSend>>cull: MessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in AnnouncementSubscription>>deliver: BlockClosure>>on:do: [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: ------------------------------------------------------------------------------- dex: markIndex pointIndex: pointIndex ] prevMarkBlock: nil prevPointBlock: nil Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>markIndex:pointIndex: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: markIndex: 1 pointIndex: 292 Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubSmalltalkEditor(RubTextEditor)>>markIndex:pointIndex: Receiver: a RubSmalltalkEditor Arguments and temporary variables: markIndex: 1 pointIndex: 292 Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>selectInvisiblyFrom:to: Receiver: a RubSmalltalkEditor Arguments and temporary variables: start: 1 stop: 291 Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>selectFrom:to: Receiver: a RubSmalltalkEditor Arguments and temporary variables: start: 1 stop: 291 Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>selectAll Receiver: a RubSmalltalkEditor Arguments and temporary variables: Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubEditingArea(RubAbstractTextArea)>>selectAll Receiver: a RubEditingArea(556531712) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] in [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aStringOrText: a Text for 'BlMorph subclass: #BlWellPanel instanceVariableName...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor BlockClosure>>ensure: Receiver: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelection...etc... Arguments and temporary variables: aBlock: [ self readOnly: wasEditable ] complete: nil returnValue: nil Receiver's instance variables: outerContext: [ self beEditableWhile: [ aStringOrText = self text ifFal...etc... startpc: 57 numArgs: 0 RubEditingArea(RubAbstractTextArea)>>beEditableWhile: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aBlock: [ aStringOrText = self text ifFalse: [ self selectAll. self edit...etc... wasEditable: false Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aStringOrText: a Text for 'BlMorph subclass: #BlWellPanel instanceVariableName...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>handleEdit: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: editBlock: [ self beEditableWhile: [ aStringOrText = self text ifFalse:...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>updateTextWith: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aStringOrText: a Text for 'BlMorph subclass: #BlWellPanel instanceVariableName...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubTextScrollPane>>updateTextWith: Receiver: a RubTextScrollPane(200540160) Arguments and temporary variables: stringOrText: a Text for 'BlMorph subclass: #BlWellPanel instanceVariableNames...etc... Receiver's instance variables: bounds: (1412.0@1222.0) corner: (2252.0@1478.0) owner: a RubScrolledTextMorph(110886912) submorphs: an Array(a TransformWithLayoutMorph(220987392)) fullBounds: (1412@1222) corner: (2252@1478) color: Color transparent extension: a MorphExtension (855900160) [other: (announcer -> an Announcer) (k...etc... scroller: a TransformWithLayoutMorph(220987392) hScrollbar: a RubScrollBar(286261248) vScrollbar: a RubScrollBar(915668992) drawFocusBorder: true RubScrolledTextMorph>>updateTextWith: Receiver: a RubScrolledTextMorph(110886912) Arguments and temporary variables: stringOrText: a Text for 'BlMorph subclass: #BlWellPanel instanceVariableNames...etc... Receiver's instance variables: bounds: (1412.0@1222.0) corner: (2252.0@1499.0) owner: a PanelMorph(893386752) submorphs: an Array(a RubTextScrollPane(200540160) a RubAdornmentDisplayer(8931...etc... fullBounds: (1412@1222) corner: (2252@1499) color: Color white extension: a MorphExtension (184549376) [other: (announcer -> an Announcer) (k...etc... hasEditingConflicts: false hasUnacceptedEdits: false alwaysAccept: nil setTextSelector: #setText:from: getTextSelector: #getText getSelectionSelector: #primarySelectionInterval autoAccept: false scrollPane: a RubTextScrollPane(200540160) rulers: a SortedCollection(a RubCodeSizeFeedback(926416896) a NautilusAnnotatio...etc... enabled: true RubScrolledTextMorph>>whenTextUpdatedInModel: Receiver: a RubScrolledTextMorph(110886912) Arguments and temporary variables: anAnnouncement: a RubTextUpdatedInModel Receiver's instance variables: bounds: (1412.0@1222.0) corner: (2252.0@1499.0) owner: a PanelMorph(893386752) submorphs: an Array(a RubTextScrollPane(200540160) a RubAdornmentDisplayer(8931...etc... fullBounds: (1412@1222) corner: (2252@1499) color: Color white extension: a MorphExtension (184549376) [other: (announcer -> an Announcer) (k...etc... hasEditingConflicts: false hasUnacceptedEdits: false alwaysAccept: nil setTextSelector: #setText:from: getTextSelector: #getText getSelectionSelector: #primarySelectionInterval autoAccept: false scrollPane: a RubTextScrollPane(200540160) rulers: a SortedCollection(a RubCodeSizeFeedback(926416896) a NautilusAnnotatio...etc... enabled: true MessageSend>>value: Receiver: MessageSend(#whenTextUpdatedInModel: -> a RubScrolledTextMorph(110886912)) Arguments and temporary variables: anObject: a RubTextUpdatedInModel Receiver's instance variables: receiver: a RubScrolledTextMorph(110886912) selector: #whenTextUpdatedInModel: arguments: #() MessageSend>>cull: Receiver: MessageSend(#whenTextUpdatedInModel: -> a RubScrolledTextMorph(110886912)) Arguments and temporary variables: arg: a RubTextUpdatedInModel Receiver's instance variables: receiver: a RubScrolledTextMorph(110886912) selector: #whenTextUpdatedInModel: arguments: #() MessageSend>>cull:cull: Receiver: MessageSend(#whenTextUpdatedInModel: -> a RubScrolledTextMorph(110886912)) Arguments and temporary variables: arg1: a RubTextUpdatedInModel arg2: an Announcer Receiver's instance variables: receiver: a RubScrolledTextMorph(110886912) selector: #whenTextUpdatedInModel: arguments: #() [ action cull: anAnnouncement cull: announcer ] in AnnouncementSubscription>>deliver: Receiver: an AnnouncementSubscription Arguments and temporary variables: anAnnouncement: a RubTextUpdatedInModel Receiver's instance variables: announcer: an Announcer announcementClass: RubTextUpdatedInModel subscriber: a RubScrolledTextMorph(110886912) action: MessageSend(#whenTextUpdatedInModel: -> a RubScrolledTextMorph(11088691...etc... BlockClosure>>on:do: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: on: exception fork: handlerAction "Activate the receiver. In ca...etc... Receiver's instance variables: outerContext: AnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: nil ex: UnhandledError copy: nil onDoCtx: nil process: nil handler: nil bottom: nil thisCtx: nil Receiver's instance variables: outerContext: AnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 --- The full stack --- OrderedCollection(Object)>>errorSubscriptBounds: OrderedCollection>>at: RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeStraightVertices RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeVertices RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea: RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea:from:to: RubPrimarySelectionMorph class(RubTextSegmentMorph class)>>inTextArea:from:to: RubEditingArea(RubAbstractTextArea)>>newPrimarySelection RubEditingArea(RubAbstractTextArea)>>addPrimarySelection RubEditingArea(RubAbstractTextArea)>>handleSelectionChange: RubEditingArea(RubAbstractTextArea)>>markIndex:pointIndex: RubSmalltalkEditor(RubTextEditor)>>markIndex:pointIndex: RubSmalltalkEditor(RubTextEditor)>>selectInvisiblyFrom:to: RubSmalltalkEditor(RubTextEditor)>>selectFrom:to: RubSmalltalkEditor(RubTextEditor)>>selectAll RubEditingArea(RubAbstractTextArea)>>selectAll [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] in [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: BlockClosure>>ensure: RubEditingArea(RubAbstractTextArea)>>beEditableWhile: [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: RubEditingArea(RubAbstractTextArea)>>handleEdit: RubEditingArea(RubAbstractTextArea)>>updateTextWith: RubTextScrollPane>>updateTextWith: RubScrolledTextMorph>>updateTextWith: RubScrolledTextMorph>>whenTextUpdatedInModel: MessageSend>>value: MessageSend>>cull: MessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in AnnouncementSubscription>>deliver: BlockClosure>>on:do: [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: ------------------------------------------------------------------------------- dex: markIndex pointIndex: pointIndex ] prevMarkBlock: nil prevPointBlock: nil Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>markIndex:pointIndex: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: markIndex: 1 pointIndex: 292 Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubSmalltalkEditor(RubTextEditor)>>markIndex:pointIndex: Receiver: a RubSmalltalkEditor Arguments and temporary variables: markIndex: 1 pointIndex: 292 Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>selectInvisiblyFrom:to: Receiver: a RubSmalltalkEditor Arguments and temporary variables: start: 1 stop: 291 Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>selectFrom:to: Receiver: a RubSmalltalkEditor Arguments and temporary variables: start: 1 stop: 291 Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubSmalltalkEditor(RubTextEditor)>>selectAll Receiver: a RubSmalltalkEditor Arguments and temporary variables: Receiver's instance variables: defaultKeymappingIndex: an IdentityDictionary(#command->#(#noop: #cursorHome: #...etc... textArea: a RubEditingArea(556531712) selectorChooser: nil notificationStrategy: a RubTextInsertionStrategy RubEditingArea(RubAbstractTextArea)>>selectAll Receiver: a RubEditingArea(556531712) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] in [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aStringOrText: a Text for 'defaultExtent ^ 98 @ 60' Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor BlockClosure>>ensure: Receiver: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelection...etc... Arguments and temporary variables: aBlock: [ self readOnly: wasEditable ] complete: nil returnValue: nil Receiver's instance variables: outerContext: [ self beEditableWhile: [ aStringOrText = self text ifFal...etc... startpc: 57 numArgs: 0 RubEditingArea(RubAbstractTextArea)>>beEditableWhile: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aBlock: [ aStringOrText = self text ifFalse: [ self selectAll. self edit...etc... wasEditable: false Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aStringOrText: a Text for 'defaultExtent ^ 98 @ 60' Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>handleEdit: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: editBlock: [ self beEditableWhile: [ aStringOrText = self text ifFalse:...etc... Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubEditingArea(RubAbstractTextArea)>>updateTextWith: Receiver: a RubEditingArea(556531712) Arguments and temporary variables: aStringOrText: a Text for 'defaultExtent ^ 98 @ 60' Receiver's instance variables: bounds: (0@0) corner: (840@202) owner: a TransformWithLayoutMorph(220987392) submorphs: an Array(a RubCursor(70254592)) fullBounds: (0@0) corner: (840@202) color: Color transparent extension: a MorphExtension (1073217536) [other: (announcer -> an Announcer) (...etc... model: a RubScrolledTextModel paragraph: a RubShoutStylerDecorator editor: a RubSmalltalkEditor scrollPane: a RubTextScrollPane(200540160) editingState: a RubEditingState textStyle: a TextStyle Source Code Pro textColor: Color black margins: (6@6) corner: (6@6) readOnly: false menuAllowed: nil editingMode: a RubSmalltalkCodeMode cursor: a RubCursor(70254592) segments: an OrderedCollection() getMenuPolicy: nil wrapped: true editorClass: RubSmalltalkEditor RubTextScrollPane>>updateTextWith: Receiver: a RubTextScrollPane(200540160) Arguments and temporary variables: stringOrText: a Text for 'defaultExtent ^ 98 @ 60' Receiver's instance variables: bounds: (1412.0@1222.0) corner: (2252.0@1478.0) owner: a RubScrolledTextMorph(110886912) submorphs: an Array(a TransformWithLayoutMorph(220987392)) fullBounds: (1412@1222) corner: (2252@1478) color: Color transparent extension: a MorphExtension (855900160) [other: (announcer -> an Announcer) (k...etc... scroller: a TransformWithLayoutMorph(220987392) hScrollbar: a RubScrollBar(286261248) vScrollbar: a RubScrollBar(915668992) drawFocusBorder: true RubScrolledTextMorph>>updateTextWith: Receiver: a RubScrolledTextMorph(110886912) Arguments and temporary variables: stringOrText: a Text for 'defaultExtent ^ 98 @ 60' Receiver's instance variables: bounds: (1412.0@1222.0) corner: (2252.0@1499.0) owner: a PanelMorph(893386752) submorphs: an Array(a RubTextScrollPane(200540160) a RubAdornmentDisplayer(8931...etc... fullBounds: (1412@1222) corner: (2252@1499) color: Color white extension: a MorphExtension (184549376) [other: (announcer -> an Announcer) (k...etc... hasEditingConflicts: false hasUnacceptedEdits: false alwaysAccept: nil setTextSelector: #setText:from: getTextSelector: #getText getSelectionSelector: #primarySelectionInterval autoAccept: false scrollPane: a RubTextScrollPane(200540160) rulers: a SortedCollection(a RubCodeSizeFeedback(926416896) a NautilusAnnotatio...etc... enabled: true RubScrolledTextMorph>>whenTextUpdatedInModel: Receiver: a RubScrolledTextMorph(110886912) Arguments and temporary variables: anAnnouncement: a RubTextUpdatedInModel Receiver's instance variables: bounds: (1412.0@1222.0) corner: (2252.0@1499.0) owner: a PanelMorph(893386752) submorphs: an Array(a RubTextScrollPane(200540160) a RubAdornmentDisplayer(8931...etc... fullBounds: (1412@1222) corner: (2252@1499) color: Color white extension: a MorphExtension (184549376) [other: (announcer -> an Announcer) (k...etc... hasEditingConflicts: false hasUnacceptedEdits: false alwaysAccept: nil setTextSelector: #setText:from: getTextSelector: #getText getSelectionSelector: #primarySelectionInterval autoAccept: false scrollPane: a RubTextScrollPane(200540160) rulers: a SortedCollection(a RubCodeSizeFeedback(926416896) a NautilusAnnotatio...etc... enabled: true MessageSend>>value: Receiver: MessageSend(#whenTextUpdatedInModel: -> a RubScrolledTextMorph(110886912)) Arguments and temporary variables: anObject: a RubTextUpdatedInModel Receiver's instance variables: receiver: a RubScrolledTextMorph(110886912) selector: #whenTextUpdatedInModel: arguments: #() MessageSend>>cull: Receiver: MessageSend(#whenTextUpdatedInModel: -> a RubScrolledTextMorph(110886912)) Arguments and temporary variables: arg: a RubTextUpdatedInModel Receiver's instance variables: receiver: a RubScrolledTextMorph(110886912) selector: #whenTextUpdatedInModel: arguments: #() MessageSend>>cull:cull: Receiver: MessageSend(#whenTextUpdatedInModel: -> a RubScrolledTextMorph(110886912)) Arguments and temporary variables: arg1: a RubTextUpdatedInModel arg2: an Announcer Receiver's instance variables: receiver: a RubScrolledTextMorph(110886912) selector: #whenTextUpdatedInModel: arguments: #() [ action cull: anAnnouncement cull: announcer ] in AnnouncementSubscription>>deliver: Receiver: an AnnouncementSubscription Arguments and temporary variables: anAnnouncement: a RubTextUpdatedInModel Receiver's instance variables: announcer: an Announcer announcementClass: RubTextUpdatedInModel subscriber: a RubScrolledTextMorph(110886912) action: MessageSend(#whenTextUpdatedInModel: -> a RubScrolledTextMorph(11088691...etc... BlockClosure>>on:do: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: on: exception fork: handlerAction "Activate the receiver. In ca...etc... Receiver's instance variables: outerContext: AnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: nil ex: UnhandledError copy: nil onDoCtx: nil process: nil handler: nil bottom: nil thisCtx: nil Receiver's instance variables: outerContext: AnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 --- The full stack --- OrderedCollection(Object)>>errorSubscriptBounds: OrderedCollection>>at: RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeStraightVertices RubPrimarySelectionMorph(RubTextSegmentMorph)>>computeVertices RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea: RubPrimarySelectionMorph(RubTextSegmentMorph)>>inTextArea:from:to: RubPrimarySelectionMorph class(RubTextSegmentMorph class)>>inTextArea:from:to: RubEditingArea(RubAbstractTextArea)>>newPrimarySelection RubEditingArea(RubAbstractTextArea)>>addPrimarySelection RubEditingArea(RubAbstractTextArea)>>handleSelectionChange: RubEditingArea(RubAbstractTextArea)>>markIndex:pointIndex: RubSmalltalkEditor(RubTextEditor)>>markIndex:pointIndex: RubSmalltalkEditor(RubTextEditor)>>selectInvisiblyFrom:to: RubSmalltalkEditor(RubTextEditor)>>selectFrom:to: RubSmalltalkEditor(RubTextEditor)>>selectAll RubEditingArea(RubAbstractTextArea)>>selectAll [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] in [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: BlockClosure>>ensure: RubEditingArea(RubAbstractTextArea)>>beEditableWhile: [ self beEditableWhile: [ aStringOrText = self text ifFalse: [ self selectAll. self editor replaceSelectionWith: aStringOrText. self deselect ] ] ] in RubEditingArea(RubAbstractTextArea)>>updateTextWith: RubEditingArea(RubAbstractTextArea)>>handleEdit: RubEditingArea(RubAbstractTextArea)>>updateTextWith: RubTextScrollPane>>updateTextWith: RubScrolledTextMorph>>updateTextWith: RubScrolledTextMorph>>whenTextUpdatedInModel: MessageSend>>value: MessageSend>>cull: MessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in AnnouncementSubscription>>deliver: BlockClosure>>on:do: [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE MessageNotUnderstood: BlLayoutProperties>>hasFloating 14 July 2015 6:06:45.437607 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] BlLayoutProperties(Object)>>doesNotUnderstand: #hasFloating Receiver: a BlLayoutProperties Arguments and temporary variables: aMessage: hasFloating exception: MessageNotUnderstood: BlLayoutProperties>>hasFloating resumeValue: nil Receiver's instance variables: positioning: #top resizing: #rigid anchors: nil extentRestriction: nil secondAxisProperties: a BlSecondAxisLayoutProperties [ :origin :each | | result | result := origin + (each layoutProperties hasFloating ifFalse: [ aBlock cull: origin cull: each ] ifTrue: [ self float: each ]). self align: each. BrServiceLocator uniqueInstance layouter layoutDone: each -> aRectangle. result ] in BrHorizontalLinearLayout(BrLinearLayout)>>layout:in:inject:into: Receiver: a BrHorizontalLinearLayout Arguments and temporary variables: aBrick: a BlWellPanel aRectangle: (1@1) corner: (49@49) anInteger: (0@0) aBlock: [ :origin :each | each privatePosition: (origin x + each marginLeft) @...etc... origin: (0@0) each: a BlDragWell result: nil Receiver's instance variables: layouting: true plugged: true [ :each | nextValue := binaryBlock value: nextValue value: each ] in Array(Collection)>>inject:into: Receiver: an Array(a BlDragWell) Arguments and temporary variables: thisValue: (0@0) binaryBlock: [ :origin :each | | result | result := origin + (each layoutPr...etc... nextValue: (0@0) each: a BlDragWell Receiver's instance variables: an Array(a BlDragWell) Array(SequenceableCollection)>>do: Receiver: an Array(a BlDragWell) Arguments and temporary variables: aBlock: [ :each | nextValue := binaryBlock value: nextValue value: each ] index: 1 Receiver's instance variables: an Array(a BlDragWell) Array(Collection)>>inject:into: Receiver: an Array(a BlDragWell) Arguments and temporary variables: nextValue: (0@0) thisValue: (0@0) binaryBlock: [ :origin :each | | result | result := origin + (each layoutPr...etc... Receiver's instance variables: an Array(a BlDragWell) BrHorizontalLinearLayout(BrLinearLayout)>>layout:in:inject:into: Receiver: a BrHorizontalLinearLayout Arguments and temporary variables: aBrick: a BlWellPanel aRectangle: (1@1) corner: (49@49) anInteger: (0@0) aBlock: [ :origin :each | each privatePosition: (origin x + each marginLeft) @...etc... Receiver's instance variables: layouting: true plugged: true BrHorizontalLinearLayout>>layout:in: Receiver: a BrHorizontalLinearLayout Arguments and temporary variables: aBrick: a BlWellPanel newBounds: (1@1) corner: (49@49) Receiver's instance variables: layouting: true plugged: true BlBrickHeightTraverser(BlBrickLayoutTraverser)>>layoutComponents: Receiver: a BlBrickHeightTraverser Arguments and temporary variables: aView: a BlWellPanel Receiver's instance variables: isTraversing: nil BlBrickHeightTraverser(BlBrickLayoutTraverser)>>layoutAround:inContext: Receiver: a BlBrickHeightTraverser Arguments and temporary variables: aView: a BlWellPanel aContextView: nil shoudBeDamaged: true Receiver's instance variables: isTraversing: nil BlBrickLayouter>>layout: Receiver: a BlBrickLayouter Arguments and temporary variables: aMorph: a BlWellPanel Receiver's instance variables: layouting: true layoutDoneStack: a LinkedList(a BlWellPanel->(0@0) corner: (50@50)) BlBrickLayouter>>privateLayoutIn: Receiver: a BlBrickLayouter Arguments and temporary variables: aBrick: a BlWellPanel Receiver's instance variables: layouting: true layoutDoneStack: a LinkedList(a BlWellPanel->(0@0) corner: (50@50)) [ BrServiceLocator uniqueInstance layouter layoutDone: aBrick -> aBrick bounds. self privateLayoutIn: aBrick ] in [ self privateForbidLayoutingWhile: [ BrServiceLocator uniqueInstance layouter layoutDone: aBrick -> aBrick bounds. self privateLayoutIn: aBrick ] ] in BlBrickLayouter>>layoutIn: Receiver: a BlBrickLayouter Arguments and temporary variables: aBrick: a BlWellPanel Receiver's instance variables: layouting: true layoutDoneStack: a LinkedList(a BlWellPanel->(0@0) corner: (50@50)) BlockClosure>>ensure: Receiver: [ BrServiceLocator uniqueInstance layouter layoutDone: aBrick -> aBrick bounds. self priv...etc... Arguments and temporary variables: aBlock: [ layouting := false ] complete: nil returnValue: nil Receiver's instance variables: outerContext: [ self privateForbidLayoutingWhile: [ BrServiceLocator uniqu...etc... startpc: 83 numArgs: 0 BlBrickLayouter>>privateForbidLayoutingWhile: Receiver: a BlBrickLayouter Arguments and temporary variables: aBlock: [ BrServiceLocator uniqueInstance layouter layoutDone: aBrick -> aBric...etc... Receiver's instance variables: layouting: true layoutDoneStack: a LinkedList(a BlWellPanel->(0@0) corner: (50@50)) [ self privateForbidLayoutingWhile: [ BrServiceLocator uniqueInstance layouter layoutDone: aBrick -> aBrick bounds. self privateLayoutIn: aBrick ] ] in BlBrickLayouter>>layoutIn: Receiver: a BlBrickLayouter Arguments and temporary variables: aBrick: a BlWellPanel Receiver's instance variables: layouting: true layoutDoneStack: a LinkedList(a BlWellPanel->(0@0) corner: (50@50)) BlockClosure>>ensure: Receiver: [ self privateForbidLayoutingWhile: [ BrServiceLocator uniqueInstance layouter layout...etc... Arguments and temporary variables: aBlock: [ layouting ifFalse: [ BrServiceLocator uniqueInstance layouter retri...etc... complete: nil returnValue: nil Receiver's instance variables: outerContext: BlBrickLayouter>>layoutIn: startpc: 77 numArgs: 0 BlBrickLayouter>>layoutIn: Receiver: a BlBrickLayouter Arguments and temporary variables: aBrick: a BlWellPanel Receiver's instance variables: layouting: true layoutDoneStack: a LinkedList(a BlWellPanel->(0@0) corner: (50@50)) [ "Compute the layout for the given morph based on the new bounds" aView aboutToDoLayoutIn: newBounds. BrServiceLocator uniqueInstance layouter layoutIn: aView ] in BrHorizontalLinearLayout(BrLinearLayout)>>doLayout:in: Receiver: a BrHorizontalLinearLayout Arguments and temporary variables: aView: a BlWellPanel newBounds: (1@1) corner: (49@49) Receiver's instance variables: layouting: true plugged: true BlockClosure>>ensure: Receiver: [ "Compute the layout for the given morph based on the new bounds" aView aboutToDoLayoutI...etc... Arguments and temporary variables: aBlock: [ layouting := false ] complete: nil returnValue: nil Receiver's instance variables: outerContext: BrHorizontalLinearLayout(BrLinearLayout)>>doLayout:in: startpc: 52 numArgs: 0 BrHorizontalLinearLayout(BlLayoutStrategy)>>privateForbidLayoutingWhile: Receiver: a BrHorizontalLinearLayout Arguments and temporary variables: aBlock: [ "Compute the layout for the given morph based on the new bounds" aVi...etc... Receiver's instance variables: layouting: true plugged: true BrHorizontalLinearLayout(BrLinearLayout)>>doLayout:in: Receiver: a BrHorizontalLinearLayout Arguments and temporary variables: aView: a BlWellPanel newBounds: (1@1) corner: (49@49) Receiver's instance variables: layouting: true plugged: true BlWellPanel(BlProtoView)>>doLayoutIn: Receiver: a BlWellPanel Arguments and temporary variables: newInnerBounds: (1@1) corner: (49@49) Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BrLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: an Array(a BlDragWell) layoutStrategy: a BrHorizontalLinearLayout zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... BlWellPanel(BlProtoView)>>doLayout Receiver: a BlWellPanel Arguments and temporary variables: Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BrLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: an Array(a BlDragWell) layoutStrategy: a BrHorizontalLinearLayout zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... BlViewBoundsCache>>updateBounds Receiver: a BlViewBoundsCache Arguments and temporary variables: Receiver's instance variables: bounds: nil extent: (50@50) dirty: true drawingBounds: nil innerBounds: nil updating: true viewReference: a WeakArray(a BlWellPanel) BlViewBoundsCache>>upToDate Receiver: a BlViewBoundsCache Arguments and temporary variables: Receiver's instance variables: bounds: nil extent: (50@50) dirty: true drawingBounds: nil innerBounds: nil updating: true viewReference: a WeakArray(a BlWellPanel) BlViewBoundsCache>>bounds Receiver: a BlViewBoundsCache Arguments and temporary variables: Receiver's instance variables: bounds: nil extent: (50@50) dirty: true drawingBounds: nil innerBounds: nil updating: true viewReference: a WeakArray(a BlWellPanel) BlWellPanel(BlProtoView)>>bounds Receiver: a BlWellPanel Arguments and temporary variables: Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BrLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: an Array(a BlDragWell) layoutStrategy: a BrHorizontalLinearLayout zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... BrHorizontalLinearLayout(BrLinearLayout)>>layoutOf:changedFrom: Receiver: a BrHorizontalLinearLayout Arguments and temporary variables: aView: a BlWellPanel aSubView: a BlWellPanel Receiver's instance variables: layouting: true plugged: true [ :ls | ls layoutOf: self changedFrom: aView ] in BlWellPanel(BlProtoView)>>layoutChangedFrom: Receiver: a BlWellPanel Arguments and temporary variables: aView: a BlWellPanel ls: a BrHorizontalLinearLayout Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BrLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: an Array(a BlDragWell) layoutStrategy: a BrHorizontalLinearLayout zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... BlockClosure>>cull: Receiver: [ :ls | ls layoutOf: self changedFrom: aView ] Arguments and temporary variables: anArg: a BrHorizontalLinearLayout Receiver's instance variables: outerContext: BlWellPanel(BlProtoView)>>layoutChangedFrom: startpc: 27 numArgs: 1 BlWellPanel(BlProtoView)>>layoutStrategyDo: Receiver: a BlWellPanel Arguments and temporary variables: aBlock: [ :ls | ls layoutOf: self changedFrom: aView ] ls: a BrHorizontalLinearLayout Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BrLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: an Array(a BlDragWell) layoutStrategy: a BrHorizontalLinearLayout zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... BlWellPanel(BlProtoView)>>layoutChangedFrom: Receiver: a BlWellPanel Arguments and temporary variables: aView: a BlWellPanel Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BrLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: an Array(a BlDragWell) layoutStrategy: a BrHorizontalLinearLayout zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... BlWellPanel(BlProtoView)>>layoutChanged Receiver: a BlWellPanel Arguments and temporary variables: Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BrLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: an Array(a BlDragWell) layoutStrategy: a BrHorizontalLinearLayout zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... BlWellPanel(BlMorph)>>privateAddedMorph: Receiver: a BlWellPanel Arguments and temporary variables: aMorph: a BlDragWell Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BrLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: an Array(a BlDragWell) layoutStrategy: a BrHorizontalLinearLayout zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... BlWellPanel(BlMorph)>>privateAddMorph:atIndex: Receiver: a BlWellPanel Arguments and temporary variables: aMorph: a BlDragWell index: 1 Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BrLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: an Array(a BlDragWell) layoutStrategy: a BrHorizontalLinearLayout zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... BlWellPanel(BlMorph)>>addMorphBack: Receiver: a BlWellPanel Arguments and temporary variables: aMorph: a BlDragWell Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BrLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: an Array(a BlDragWell) layoutStrategy: a BrHorizontalLinearLayout zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... [ :value | self addMorphBack: ((self wellClass on: value) panel: self; yourself) ] in BlWellPanel>>addDefaultWellsAndPlus Receiver: a BlWellPanel Arguments and temporary variables: value: Color lightYellow Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BrLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: an Array(a BlDragWell) layoutStrategy: a BrHorizontalLinearLayout zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... Array(SequenceableCollection)>>do: Receiver: {Color lightYellow. Color lightGreen. Color lightBlue. Color white. Color veryVeryLightGra...etc... Arguments and temporary variables: aBlock: [ :value | self addMorphBack: ((self wellClass on: value) panel:...etc... index: 1 Receiver's instance variables: {Color lightYellow. Color lightGreen. Color lightBlue. Color white. Color veryVeryLightGra...etc... BlWellPanel>>addDefaultWellsAndPlus Receiver: a BlWellPanel Arguments and temporary variables: Receiver's instance variables: transform: an AthensAffineTransform ownerReference: nil visible: true properties: an IdentityDictionary() layoutProperties: a BrLayoutProperties boundsCache: a BlViewBoundsCache theme: nil nextSiblingReference: nil previousSiblingReference: nil spaceReference: a WeakArray(a BlMorphicCompatibleBlocSpace [Bloc-1] ) eventListener: a BlMorphEventListener errorOnDraw: false locked: false view: a BlRectangleView announcer: an Announcer submorphs: an Array(a BlDragWell) layoutStrategy: a BrHorizontalLinearLayout zIndex: nil style: a BlUINullStyle title: nil defaultValues: {Color lightYellow. Color lightGreen. Color lightBlue. Color whi...etc... --- The full stack --- BlLayoutProperties(Object)>>doesNotUnderstand: #hasFloating [ :origin :each | | result | result := origin + (each layoutProperties hasFloating ifFalse: [ aBlock cull: origin cull: each ] ifTrue: [ self float: each ]). self align: each. BrServiceLocator uniqueInstance layouter layoutDone: each -> aRectangle. result ] in BrHorizontalLinearLayout(BrLinearLayout)>>layout:in:inject:into: [ :each | nextValue := binaryBlock value: nextValue value: each ] in Array(Collection)>>inject:into: Array(SequenceableCollection)>>do: Array(Collection)>>inject:into: BrHorizontalLinearLayout(BrLinearLayout)>>layout:in:inject:into: BrHorizontalLinearLayout>>layout:in: BlBrickHeightTraverser(BlBrickLayoutTraverser)>>layoutComponents: BlBrickHeightTraverser(BlBrickLayoutTraverser)>>layoutAround:inContext: BlBrickLayouter>>layout: BlBrickLayouter>>privateLayoutIn: [ BrServiceLocator uniqueInstance layouter layoutDone: aBrick -> aBrick bounds. self privateLayoutIn: aBrick ] in [ self privateForbidLayoutingWhile: [ BrServiceLocator uniqueInstance layouter layoutDone: aBrick -> aBrick bounds. self privateLayoutIn: aBrick ] ] in BlBrickLayouter>>layoutIn: BlockClosure>>ensure: BlBrickLayouter>>privateForbidLayoutingWhile: [ self privateForbidLayoutingWhile: [ BrServiceLocator uniqueInstance layouter layoutDone: aBrick -> aBrick bounds. self privateLayoutIn: aBrick ] ] in BlBrickLayouter>>layoutIn: BlockClosure>>ensure: BlBrickLayouter>>layoutIn: [ "Compute the layout for the given morph based on the new bounds" aView aboutToDoLayoutIn: newBounds. BrServiceLocator uniqueInstance layouter layoutIn: aView ] in BrHorizontalLinearLayout(BrLinearLayout)>>doLayout:in: BlockClosure>>ensure: BrHorizontalLinearLayout(BlLayoutStrategy)>>privateForbidLayoutingWhile: BrHorizontalLinearLayout(BrLinearLayout)>>doLayout:in: BlWellPanel(BlProtoView)>>doLayoutIn: BlWellPanel(BlProtoView)>>doLayout BlViewBoundsCache>>updateBounds BlViewBoundsCache>>upToDate BlViewBoundsCache>>bounds BlWellPanel(BlProtoView)>>bounds BrHorizontalLinearLayout(BrLinearLayout)>>layoutOf:changedFrom: [ :ls | ls layoutOf: self changedFrom: aView ] in BlWellPanel(BlProtoView)>>layoutChangedFrom: BlockClosure>>cull: BlWellPanel(BlProtoView)>>layoutStrategyDo: BlWellPanel(BlProtoView)>>layoutChangedFrom: BlWellPanel(BlProtoView)>>layoutChanged BlWellPanel(BlMorph)>>privateAddedMorph: BlWellPanel(BlMorph)>>privateAddMorph:atIndex: BlWellPanel(BlMorph)>>addMorphBack: [ :value | self addMorphBack: ((self wellClass on: value) panel: self; yourself) ] in BlWellPanel>>addDefaultWellsAndPlus Array(SequenceableCollection)>>do: BlWellPanel>>addDefaultWellsAndPlus - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BlWellPanel>>defaultValues: BlWellPanel class>>withSevenPaleColors UndefinedObject>>DoIt OpalCompiler>>evaluate RubSmalltalkEditor>>evaluate:andDo: RubSmalltalkEditor>>highlightEvaluateAndDo: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] in [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: RubEditingArea(RubAbstractTextArea)>>handleEdit: [ textMorph textArea handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action. textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoPlaygroundRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>runDeferredActions BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handlePrimaryTickEvent: WeakMessageSend>>value: WeakMessageSend>>cull: WeakMessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: BlockClosure>>on:do: [ Processor terminateActive ] in on: exception fork: handlerAction "Activate the receiver. In case of exception, fork a new process, which will handle an error. An original process will continue running as if receiver evaluation finished and answered nil, i.e., an expression like: [ self error: 'some error'] on: Error fork: [:ex | 123 ] will always answer nil for original process, not 123. The context stack , starting from context which sent this message to receiver and up to the top of the stack will be transferred to forked process, with handlerAction on top. (so when the forked process will be resuming, it will enter the handlerAction) " ^ self on: exception do: [ :ex | | copy onDoCtx process 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 BlockClosure>>on:fork: ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE User Interrupt 14 July 2015 8:34:05.708422 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] BlMorphicEventListenerRecord(BlGlobalEventListener)>>space Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: aBlock: [ :sp | sp removeEventListener: self ] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord>>handleEvent: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 0 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEventListener: a BlMorphicEventListenerRecord Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 0 items [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: sp: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlockClosure>>cull: Receiver: [ :sp | sp removeEventListener: self ] Arguments and temporary variables: anArg: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: outerContext: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug startpc: 26 numArgs: 1 BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: aBlock: [ :sp | sp removeEventListener: self ] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord>>handleEvent: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 0 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEventListener: a BlMorphicEventListenerRecord Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 0 items [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: sp: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlockClosure>>cull: Receiver: [ :sp | sp removeEventListener: self ] Arguments and temporary variables: anArg: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: outerContext: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug startpc: 26 numArgs: 1 BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: aBlock: [ :sp | sp removeEventListener: self ] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord>>handleEvent: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 0 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEventListener: a BlMorphicEventListenerRecord Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 0 items [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: sp: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlockClosure>>cull: Receiver: [ :sp | sp removeEventListener: self ] Arguments and temporary variables: anArg: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: outerContext: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug startpc: 26 numArgs: 1 BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: aBlock: [ :sp | sp removeEventListener: self ] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord>>handleEvent: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 0 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEventListener: a BlMorphicEventListenerRecord Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 0 items [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: sp: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlockClosure>>cull: Receiver: [ :sp | sp removeEventListener: self ] Arguments and temporary variables: anArg: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: outerContext: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug startpc: 26 numArgs: 1 BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: aBlock: [ :sp | sp removeEventListener: self ] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord>>handleEvent: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 0 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEventListener: a BlMorphicEventListenerRecord Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 0 items [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: sp: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlockClosure>>cull: Receiver: [ :sp | sp removeEventListener: self ] Arguments and temporary variables: anArg: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: outerContext: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug startpc: 26 numArgs: 1 BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: aBlock: [ :sp | sp removeEventListener: self ] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord>>handleEvent: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) --- The full stack --- BlMorphicEventListenerRecord(BlGlobalEventListener)>>space BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: -- and more not shown --------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE User Interrupt 14 July 2015 8:34:05.722422 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] [ self value. Processor terminateActive ] in BlockClosure>>newProcess Receiver: [ tickEvent := BlTickEvent new source: self. [ self doOneCycle. Processor yield ] repeat...etc... Arguments and temporary variables: Receiver's instance variables: outerContext: BlMainLoopManager>>loop startpc: 41 numArgs: 0 --- The full stack --- [ self value. Processor terminateActive ] in BlockClosure>>newProcess ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE User Interrupt 14 July 2015 8:34:12.684421 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] BlHaloGlobalEventListener(BlGlobalEventListener)>>space Receiver: a BlHaloGlobalEventListener Arguments and temporary variables: Receiver's instance variables: next: a BlMorphicCompatibilitySpaceEventListener BlMorphicEventListenerRecord(BlGlobalEventListener)>>space Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: Receiver's instance variables: next: a BlHaloGlobalEventListener morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord(BlGlobalEventListener)>>space Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: aBlock: [ :sp | sp removeEventListener: self ] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord>>handleEvent: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 6 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEventListener: a BlMorphicEventListenerRecord Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 6 items [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: sp: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlockClosure>>cull: Receiver: [ :sp | sp removeEventListener: self ] Arguments and temporary variables: anArg: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: outerContext: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug startpc: 26 numArgs: 1 BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: aBlock: [ :sp | sp removeEventListener: self ] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord>>handleEvent: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 6 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEventListener: a BlMorphicEventListenerRecord Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 6 items [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: sp: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlockClosure>>cull: Receiver: [ :sp | sp removeEventListener: self ] Arguments and temporary variables: anArg: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: outerContext: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug startpc: 26 numArgs: 1 BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: aBlock: [ :sp | sp removeEventListener: self ] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord>>handleEvent: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 6 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEventListener: a BlMorphicEventListenerRecord Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 6 items [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: sp: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlockClosure>>cull: Receiver: [ :sp | sp removeEventListener: self ] Arguments and temporary variables: anArg: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: outerContext: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug startpc: 26 numArgs: 1 BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: aBlock: [ :sp | sp removeEventListener: self ] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord>>handleEvent: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 6 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEventListener: a BlMorphicEventListenerRecord Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 6 items [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: sp: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlockClosure>>cull: Receiver: [ :sp | sp removeEventListener: self ] Arguments and temporary variables: anArg: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: outerContext: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug startpc: 26 numArgs: 1 BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: aBlock: [ :sp | sp removeEventListener: self ] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord>>handleEvent: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 6 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEventListener: a BlMorphicEventListenerRecord Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 6 items [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: sp: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlockClosure>>cull: Receiver: [ :sp | sp removeEventListener: self ] Arguments and temporary variables: anArg: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: outerContext: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug startpc: 26 numArgs: 1 BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: aBlock: [ :sp | sp removeEventListener: self ] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) --- The full stack --- BlHaloGlobalEventListener(BlGlobalEventListener)>>space BlMorphicEventListenerRecord(BlGlobalEventListener)>>space BlMorphicEventListenerRecord(BlGlobalEventListener)>>space BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug -- and more not shown --------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE User Interrupt 14 July 2015 8:34:12.690421 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] [ self value. Processor terminateActive ] in BlockClosure>>newProcess Receiver: [ tickEvent := BlTickEvent new source: self. [ self doOneCycle. Processor yield ] repeat...etc... Arguments and temporary variables: Receiver's instance variables: outerContext: BlMainLoopManager>>loop startpc: 41 numArgs: 0 --- The full stack --- [ self value. Processor terminateActive ] in BlockClosure>>newProcess ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE User Interrupt 14 July 2015 8:34:12.692421 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] [ self value. Processor terminateActive ] in BlockClosure>>newProcess Receiver: [ tickEvent := BlTickEvent new source: self. [ self doOneCycle. Processor yield ] repeat...etc... Arguments and temporary variables: Receiver's instance variables: outerContext: BlMainLoopManager>>loop startpc: 41 numArgs: 0 --- The full stack --- [ self value. Processor terminateActive ] in BlockClosure>>newProcess ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE User Interrupt 14 July 2015 8:34:12.694421 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] [ self value. Processor terminateActive ] in BlockClosure>>newProcess Receiver: [ tickEvent := BlTickEvent new source: self. [ self doOneCycle. Processor yield ] repeat...etc... Arguments and temporary variables: Receiver's instance variables: outerContext: BlMainLoopManager>>loop startpc: 41 numArgs: 0 --- The full stack --- [ self value. Processor terminateActive ] in BlockClosure>>newProcess ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE User Interrupt 14 July 2015 8:34:12.694421 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] [ self value. Processor terminateActive ] in BlockClosure>>newProcess Receiver: [ tickEvent := BlTickEvent new source: self. [ self doOneCycle. Processor yield ] repeat...etc... Arguments and temporary variables: Receiver's instance variables: outerContext: BlMainLoopManager>>loop startpc: 41 numArgs: 0 --- The full stack --- [ self value. Processor terminateActive ] in BlockClosure>>newProcess ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE User Interrupt 14 July 2015 8:34:12.696421 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] [ self value. Processor terminateActive ] in BlockClosure>>newProcess Receiver: [ tickEvent := BlTickEvent new source: self. [ self doOneCycle. Processor yield ] repeat...etc... Arguments and temporary variables: Receiver's instance variables: outerContext: BlMainLoopManager>>loop startpc: 41 numArgs: 0 --- The full stack --- [ self value. Processor terminateActive ] in BlockClosure>>newProcess ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE User Interrupt 14 July 2015 8:34:14.930422 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] BlMorphicCompatibilitySpaceEventListener(BlGlobalEventListener)>>space Receiver: a BlMorphicCompatibilitySpaceEventListener Arguments and temporary variables: Receiver's instance variables: next: a BlSpaceEventListener BlHaloGlobalEventListener(BlGlobalEventListener)>>space Receiver: a BlHaloGlobalEventListener Arguments and temporary variables: Receiver's instance variables: next: a BlMorphicCompatibilitySpaceEventListener BlMorphicEventListenerRecord(BlGlobalEventListener)>>space Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: Receiver's instance variables: next: a BlHaloGlobalEventListener morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord(BlGlobalEventListener)>>space Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: aBlock: [ :sp | sp removeEventListener: self ] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord>>handleEvent: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 16 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEventListener: a BlMorphicEventListenerRecord Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 16 items [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: sp: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlockClosure>>cull: Receiver: [ :sp | sp removeEventListener: self ] Arguments and temporary variables: anArg: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: outerContext: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug startpc: 26 numArgs: 1 BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: aBlock: [ :sp | sp removeEventListener: self ] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord>>handleEvent: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 16 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEventListener: a BlMorphicEventListenerRecord Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 16 items [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: sp: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlockClosure>>cull: Receiver: [ :sp | sp removeEventListener: self ] Arguments and temporary variables: anArg: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: outerContext: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug startpc: 26 numArgs: 1 BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: aBlock: [ :sp | sp removeEventListener: self ] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord>>handleEvent: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 16 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEventListener: a BlMorphicEventListenerRecord Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 16 items [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: sp: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlockClosure>>cull: Receiver: [ :sp | sp removeEventListener: self ] Arguments and temporary variables: anArg: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: outerContext: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug startpc: 26 numArgs: 1 BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: aBlock: [ :sp | sp removeEventListener: self ] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord>>handleEvent: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 16 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEventListener: a BlMorphicEventListenerRecord Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 16 items [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: sp: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlockClosure>>cull: Receiver: [ :sp | sp removeEventListener: self ] Arguments and temporary variables: anArg: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: outerContext: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug startpc: 26 numArgs: 1 BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: aBlock: [ :sp | sp removeEventListener: self ] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicEventListenerRecord>>handleEvent: Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEvent: BlEventListenerRemovedEvent(a BlMorphicCompatibleBlocSpace [Bloc-1] ) Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 16 items BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: Receiver: a BlMorphicCompatibleBlocSpace [Bloc-1] Arguments and temporary variables: anEventListener: a BlMorphicEventListenerRecord Receiver's instance variables: rootMorph: a BlSpaceMorph manager: a BlMorphicUIManager identifier: 'Bloc-1' announcer: an Announcer alarmQueue: a BlAlarmQueue fataDrawingError: false mainLoopManager: a BlMainLoopManager eventFetcher: a BlVMEventFetcher eventListener: a BlMorphicEventListenerRecord deferredActions: WaitfreeQueue with 16 items [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug Receiver: a BlMorphicEventListenerRecord Arguments and temporary variables: sp: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: next: a BlMorphicEventListenerRecord morphicListenerReference: a WeakArray(nil) BlockClosure>>cull: Receiver: [ :sp | sp removeEventListener: self ] Arguments and temporary variables: anArg: a BlMorphicCompatibleBlocSpace [Bloc-1] Receiver's instance variables: outerContext: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug startpc: 26 numArgs: 1 --- The full stack --- BlMorphicCompatibilitySpaceEventListener(BlGlobalEventListener)>>space BlHaloGlobalEventListener(BlGlobalEventListener)>>space BlMorphicEventListenerRecord(BlGlobalEventListener)>>space BlMorphicEventListenerRecord(BlGlobalEventListener)>>space BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlMorphicEventListenerRecord>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>handleEvent: BlMorphicCompatibleBlocSpace(BlBlocSpace)>>removeEventListener: [ :sp | sp removeEventListener: self ] in BlMorphicEventListenerRecord(BlGlobalEventListener)>>unplug BlockClosure>>cull: BlMorphicEventListenerRecord(BlGlobalEventListener)>>spaceDo: -- and more not shown --------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE User Interrupt 14 July 2015 8:34:14.936421 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] [ self value. Processor terminateActive ] in BlockClosure>>newProcess Receiver: [ tickEvent := BlTickEvent new source: self. [ self doOneCycle. Processor yield ] repeat...etc... Arguments and temporary variables: Receiver's instance variables: outerContext: BlMainLoopManager>>loop startpc: 41 numArgs: 0 --- The full stack --- [ self value. Processor terminateActive ] in BlockClosure>>newProcess ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE User Interrupt 14 July 2015 8:34:14.938421 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] [ self value. Processor terminateActive ] in BlockClosure>>newProcess Receiver: [ tickEvent := BlTickEvent new source: self. [ self doOneCycle. Processor yield ] repeat...etc... Arguments and temporary variables: Receiver's instance variables: outerContext: BlMainLoopManager>>loop startpc: 41 numArgs: 0 --- The full stack --- [ self value. Processor terminateActive ] in BlockClosure>>newProcess ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE User Interrupt 14 July 2015 8:34:14.938421 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] [ self value. Processor terminateActive ] in BlockClosure>>newProcess Receiver: [ tickEvent := BlTickEvent new source: self. [ self doOneCycle. Processor yield ] repeat...etc... Arguments and temporary variables: Receiver's instance variables: outerContext: BlMainLoopManager>>loop startpc: 41 numArgs: 0 --- The full stack --- [ self value. Processor terminateActive ] in BlockClosure>>newProcess ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE User Interrupt 14 July 2015 8:34:14.940422 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] [ self value. Processor terminateActive ] in BlockClosure>>newProcess Receiver: [ tickEvent := BlTickEvent new source: self. [ self doOneCycle. Processor yield ] repeat...etc... Arguments and temporary variables: Receiver's instance variables: outerContext: BlMainLoopManager>>loop startpc: 41 numArgs: 0 --- The full stack --- [ self value. Processor terminateActive ] in BlockClosure>>newProcess ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE User Interrupt 14 July 2015 8:34:14.940422 pm VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <[hidden email]> Jenkins build #14826 Image: Pharo5.0 [Latest update: #50170] [ self value. Processor terminateActive ] in BlockClosure>>newProcess Receiver: [ tickEvent := BlTickEvent new source: self. [ self doOneCycle. Processor yield ] repeat...etc... Arguments and temporary variables: Receiver's instance variables: outerContext: BlMainLoopManager>>loop startpc: 41 numArgs: 0 --- The full stack --- [ self value. Processor terminateActive ] in BlockClosure>>newProcess ------------------------------------------------------------------------------- |
That is with fasttable for nautilus disabled, as it didn't work for
Bloc. Switching to hierarchy view in Nautilus in Bloc also provided a hanging uninteruptable system. (now on Mac, earlier on Linux) Stephan |
Free forum by Nabble | Edit this page |