=============================================================================== Notice: Cannot read stored value of #notExistingClassStoredSettingSTONString. Exception: KeyNotFound: key #MockNotExistingClass not found in SystemDictionary =============================================================================== *** Warning: PotentialOutDatedDependencyWarning: Collections-Tests: Kernel-Chronology-Extras dependency declared in the package Manifest as manuallyResolvedDependencies not detected as a dependency! =============================================================================== Notice: There are references to, 'RPackageNewStubClass' from Undeclared. Check them after this change. =============================================================================== =============================================================================== Notice: There are references to, 'RPackageNewStubClass' from Undeclared. Check them after this change. =============================================================================== =============================================================================== Notice: There are references to, 'RPackageNewStubClass' from Undeclared. Check them after this change. =============================================================================== =============================================================================== Notice: There are references to, 'RPackageNewStubClass' from Undeclared. Check them after this change. =============================================================================== =============================================================================== Notice: There are references to, 'RPackageNewStubClass' from Undeclared. Check them after this change. =============================================================================== =============================================================================== Notice: There are references to, 'RPackageNewStubClass' from Undeclared. Check them after this change. =============================================================================== =============================================================================== Notice: There are references to, #TraitForTestToBeDeleted1 from Undeclared. Check them after this change. =============================================================================== =============================================================================== Notice: There are references to, #ClassForTestToBeDeleted20 from Undeclared. Check them after this change. =============================================================================== =============================================================================== Notice: There are references to, #ClassForTestToBeDeleted38 from Undeclared. Check them after this change. =============================================================================== =============================================================================== Notice: There are references to, #TraitForTestToBeDeleted1 from Undeclared. Check them after this change. =============================================================================== =============================================================================== Notice: There are references to, #TraitForTestToBeDeleted1 from Undeclared. Check them after this change. =============================================================================== =============================================================================== Notice: There are references to, #ClassForTestToBeDeleted84 from Undeclared. Check them after this change. =============================================================================== THERE_BE_DRAGONS_HERE MessageNotUnderstood: receiver of "containsPoint:" is nil 27 September 2020 5:34:08.47456 pm VM: Mac OS - x64 - 1015.4 - CoInterpreter * VMMaker-CompatibleUserName.1580983506 uuid: 7aff73cb-5a2e-5002-a356-37de4e762a49 Feb 12 2020 StackToRegisterMappingCogit * VMMaker-CompatibleUserName.1580983506 uuid: 7aff73cb-5a2e-5002-a356-37de4e762a49 Feb 12 2020 VM: 202002121007 https://github.com/pharo-project/opensmalltalk-vm.git Date: Wed Feb 12 11:07:12 2020 CommitHash: 2bd9e39 Plugins: 202002121007 https://github.com/pharo-project/opensmalltalk-vm.git Image: Pharo9.0.0 [Build information: Pharo-9.0.0+build.698.sha.fbd7e1432500d060e480cd35ce6913b847fb3583 (64 Bit)] UndefinedObject(Object)>>doesNotUnderstand: #containsPoint: Receiver: nil Arguments and temporary variables: aMessage: containsPoint: (0@0) exception: MessageNotUnderstood: receiver of "containsPoint:" is nil resumeValue: ni Receiver's instance variables: nil UndefinedObject>>doesNotUnderstand: #containsPoint: Receiver: nil Arguments and temporary variables: aMessage: containsPoint: (0@0) exception: nil resumeValue: nil node: ni Receiver's instance variables: nil MorphicEventDispatcher>>dispatchDefault:with: Receiver: a MorphicEventDispatcher Arguments and temporary variables: anEvent: [(0@0) mouseOver 1481 nil] aMorph: a WorldMorph(860605184) [world] localEvt: nil index: nil child: nil morphs: nil inside: ni Receiver's instance variables: morph: a WorldMorph(860605184) [world] MorphicEventDispatcher>>handleMouseOver: Receiver: a MorphicEventDispatcher Arguments and temporary variables: anEvent: [(0@0) mouseOver 1481 nil Receiver's instance variables: morph: a WorldMorph(860605184) [world] MouseEvent>>sentTo: Receiver: [(0@0) mouseOver 1481 nil] Arguments and temporary variables: anObject: a MorphicEventDispatche Receiver's instance variables: timeStamp: 1481 source: a HandMorph(408769792) windowIndex: nil type: #mouseOver buttons: 0 position: (0@0) handler: nil wasHandled: false [ ^ anEvent sentTo: self ] in MorphicEventDispatcher>>dispatchEvent:with: Receiver: a MorphicEventDispatcher Arguments and temporary variables: anEvent: [(0@0) mouseOver 1481 nil] aMorph: a WorldMorph(860605184) [world Receiver's instance variables: morph: a WorldMorph(860605184) [world] FullBlockClosure(BlockClosure)>>ensure: Receiver: [ ^ anEvent sentTo: self ] Arguments and temporary variables: aBlock: [ morph := nil ] complete: nil returnValue: ni Receiver's instance variables: outerContext: MorphicEventDispatcher>>dispatchEvent:with: startpc: a CompiledBlock: [ ^ anEvent sentTo: self ] numArgs: 0 receiver: a MorphicEventDispatcher MorphicEventDispatcher>>dispatchEvent:with: Receiver: a MorphicEventDispatcher Arguments and temporary variables: anEvent: [(0@0) mouseOver 1481 nil] aMorph: a WorldMorph(860605184) [world Receiver's instance variables: morph: a WorldMorph(860605184) [world] WorldMorph(Morph)>>processEvent:using: Receiver: a WorldMorph(860605184) [world] Arguments and temporary variables: anEvent: [(0@0) mouseOver 1481 nil] defaultDispatcher: a MorphicEventDispatche Receiver's instance variables: bounds: (0@0) corner: (240@120) owner: nil submorphs: an Array(a MenubarMorph(388205824) a TaskbarMorph(51680256) a Standa...etc... fullBounds: nil color: (Color r: 0.9403714565004888 g: 0.9403714565004888 b: 0.9403714565004888...etc... extension: a MorphExtension (1010164480) [other: (dragEnabled -> true) (dropEn...etc... borderWidth: 0 borderColor: (Color r: 0.8611925708699902 g: 1.0 b: 0.7223851417399805 alpha: 1...etc... backgroundMorph: nil worldState: a WorldState griddingOn: nil WorldMorph(Morph)>>processEvent: Receiver: a WorldMorph(860605184) [world] Arguments and temporary variables: anEvent: [(0@0) mouseOver 1481 nil Receiver's instance variables: bounds: (0@0) corner: (240@120) owner: nil submorphs: an Array(a MenubarMorph(388205824) a TaskbarMorph(51680256) a Standa...etc... fullBounds: nil color: (Color r: 0.9403714565004888 g: 0.9403714565004888 b: 0.9403714565004888...etc... extension: a MorphExtension (1010164480) [other: (dragEnabled -> true) (dropEn...etc... borderWidth: 0 borderColor: (Color r: 0.8611925708699902 g: 1.0 b: 0.7223851417399805 alpha: 1...etc... backgroundMorph: nil worldState: a WorldState griddingOn: nil HandMorph>>sendEvent:focus:clear: Receiver: a HandMorph(408769792) Arguments and temporary variables: anEvent: [(0@0) mouseOver 1481 nil] focusHolder: nil aBlock: [self mouseFocus: nil] result: ni Receiver's instance variables: bounds: (0@0) corner: (16@16) owner: a WorldMorph(860605184) [world] submorphs: #() fullBounds: nil color: Color blue extension: a MorphExtension (107456000) mouseFocus: nil keyboardFocus: a PluggableButtonMorph(1055943680) eventListeners: nil mouseListeners: nil mouseClickState: a MouseClickState[#firstClickDown] mouseOverHandler: a MouseOverHandler lastMouseEvent: [(0@0) mouseOver 1481 nil] targetOffset: (3.0@22.0) damageRecorder: a DamageRecorder cacheCanvas: nil cachedCanvasHasHoles: false temporaryCursor: nil temporaryCursorOffset: nil hardwareCursor: nil hasChanged: true savedPatch: nil lastEventBuffer: #(1 0 0 0 0 0 nil nil) lastKeyScanCode: nil combinedChar: nil captureBlock: nil recentModifiers: 0 pendingEventQueue: WaitfreeQueue with 0 items HandMorph>>sendMouseEvent: Receiver: a HandMorph(408769792) Arguments and temporary variables: anEvent: [(0@0) mouseOver 1481 nil Receiver's instance variables: bounds: (0@0) corner: (16@16) owner: a WorldMorph(860605184) [world] submorphs: #() fullBounds: nil color: Color blue extension: a MorphExtension (107456000) mouseFocus: nil keyboardFocus: a PluggableButtonMorph(1055943680) eventListeners: nil mouseListeners: nil mouseClickState: a MouseClickState[#firstClickDown] mouseOverHandler: a MouseOverHandler lastMouseEvent: [(0@0) mouseOver 1481 nil] targetOffset: (3.0@22.0) damageRecorder: a DamageRecorder cacheCanvas: nil cachedCanvasHasHoles: false temporaryCursor: nil temporaryCursorOffset: nil hardwareCursor: nil hasChanged: true savedPatch: nil lastEventBuffer: #(1 0 0 0 0 0 nil nil) lastKeyScanCode: nil combinedChar: nil captureBlock: nil recentModifiers: 0 pendingEventQueue: WaitfreeQueue with 0 items HandMorph>>handleEvent: Receiver: a HandMorph(408769792) Arguments and temporary variables: anEvent: [(0@0) mouseOver 1481 nil] evt: [(0@0) mouseOver 1481 nil Receiver's instance variables: bounds: (0@0) corner: (16@16) owner: a WorldMorph(860605184) [world] submorphs: #() fullBounds: nil color: Color blue extension: a MorphExtension (107456000) mouseFocus: nil keyboardFocus: a PluggableButtonMorph(1055943680) eventListeners: nil mouseListeners: nil mouseClickState: a MouseClickState[#firstClickDown] mouseOverHandler: a MouseOverHandler lastMouseEvent: [(0@0) mouseOver 1481 nil] targetOffset: (3.0@22.0) damageRecorder: a DamageRecorder cacheCanvas: nil cachedCanvasHasHoles: false temporaryCursor: nil temporaryCursorOffset: nil hardwareCursor: nil hasChanged: true savedPatch: nil lastEventBuffer: #(1 0 0 0 0 0 nil nil) lastKeyScanCode: nil combinedChar: nil captureBlock: nil recentModifiers: 0 pendingEventQueue: WaitfreeQueue with 0 items MouseOverHandler>>handleAsMouseOver: Receiver: a MouseOverHandler Arguments and temporary variables: anEvent: [(0@0) mouseOver 1481 nil Receiver's instance variables: mouseOverMorphs: an Array(a MenubarItemMorph(336960768)'Pharo' a MenubarMorph(3...etc... enteredMorphs: a WriteStream overMorphs: a WriteStream leftMorphs: an IdentitySet(a MenubarItemMorph(336960768)'Pharo' a WorldMorph(86...etc... MouseOverHandler>>processMouseOver: Receiver: a MouseOverHandler Arguments and temporary variables: anEvent: [(0@0) mouseOver 1481 nil Receiver's instance variables: mouseOverMorphs: an Array(a MenubarItemMorph(336960768)'Pharo' a MenubarMorph(3...etc... enteredMorphs: a WriteStream overMorphs: a WriteStream leftMorphs: an IdentitySet(a MenubarItemMorph(336960768)'Pharo' a WorldMorph(86...etc... HandMorph>>processEventsFromQueue: Receiver: a HandMorph(408769792) Arguments and temporary variables: anEventBufferQueue: an InputEventSensor evt: nil hadAny: ni Receiver's instance variables: bounds: (0@0) corner: (16@16) owner: a WorldMorph(860605184) [world] submorphs: #() fullBounds: nil color: Color blue extension: a MorphExtension (107456000) mouseFocus: nil keyboardFocus: a PluggableButtonMorph(1055943680) eventListeners: nil mouseListeners: nil mouseClickState: a MouseClickState[#firstClickDown] mouseOverHandler: a MouseOverHandler lastMouseEvent: [(0@0) mouseOver 1481 nil] targetOffset: (3.0@22.0) damageRecorder: a DamageRecorder cacheCanvas: nil cachedCanvasHasHoles: false temporaryCursor: nil temporaryCursorOffset: nil hardwareCursor: nil hasChanged: true savedPatch: nil lastEventBuffer: #(1 0 0 0 0 0 nil nil) lastKeyScanCode: nil combinedChar: nil captureBlock: nil recentModifiers: 0 pendingEventQueue: WaitfreeQueue with 0 items HandMorph>>processEvents Receiver: a HandMorph(408769792) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (16@16) owner: a WorldMorph(860605184) [world] submorphs: #() fullBounds: nil color: Color blue extension: a MorphExtension (107456000) mouseFocus: nil keyboardFocus: a PluggableButtonMorph(1055943680) eventListeners: nil mouseListeners: nil mouseClickState: a MouseClickState[#firstClickDown] mouseOverHandler: a MouseOverHandler lastMouseEvent: [(0@0) mouseOver 1481 nil] targetOffset: (3.0@22.0) damageRecorder: a DamageRecorder cacheCanvas: nil cachedCanvasHasHoles: false temporaryCursor: nil temporaryCursorOffset: nil hardwareCursor: nil hasChanged: true savedPatch: nil lastEventBuffer: #(1 0 0 0 0 0 nil nil) lastKeyScanCode: nil combinedChar: nil captureBlock: nil recentModifiers: 0 pendingEventQueue: WaitfreeQueue with 0 items [:h | self activeHand: h. h processEvents. self activeHand: nil. ] in WorldState>>doOneCycleFor: Receiver: a WorldState Arguments and temporary variables: aWorld: a WorldMorph(860605184) [world] h: a HandMorph(408769792 Receiver's instance variables: hands: an Array(a HandMorph(408769792)) damageRecorder: a DamageRecorder stepList: a Heap() lastStepTime: 100075 lastStepMessage: nil lastCycleTime: nil alarms: a Heap(MorphicAlarm(#hideShow -> a RubCursor(361538816)) MorphicAlarm(#...etc... lastAlarmTime: 308537 activeHand: a HandMorph(408769792) currentCursor: ((CursorWithMask extent: (16@16) depth: 1 fromArray: #( 2r0...etc... worldRenderer: a NullWorldRenderer realWindowExtent: nil Array(SequenceableCollection)>>do: Receiver: an Array(a HandMorph(408769792)) Arguments and temporary variables: aBlock: [:h | self activeHand: h. h processEvents. self activeHand: nil. ...etc... index: Receiver's instance variables: an Array(a HandMorph(408769792)) WorldState>>handsDo: Receiver: a WorldState Arguments and temporary variables: aBlock: [:h | self activeHand: h. h processEvents. self activeHand: nil. ...etc.. Receiver's instance variables: hands: an Array(a HandMorph(408769792)) damageRecorder: a DamageRecorder stepList: a Heap() lastStepTime: 100075 lastStepMessage: nil lastCycleTime: nil alarms: a Heap(MorphicAlarm(#hideShow -> a RubCursor(361538816)) MorphicAlarm(#...etc... lastAlarmTime: 308537 activeHand: a HandMorph(408769792) currentCursor: ((CursorWithMask extent: (16@16) depth: 1 fromArray: #( 2r0...etc... worldRenderer: a NullWorldRenderer realWindowExtent: nil WorldState>>doOneCycleFor: Receiver: a WorldState Arguments and temporary variables: aWorld: a WorldMorph(860605184) [world Receiver's instance variables: hands: an Array(a HandMorph(408769792)) damageRecorder: a DamageRecorder stepList: a Heap() lastStepTime: 100075 lastStepMessage: nil lastCycleTime: nil alarms: a Heap(MorphicAlarm(#hideShow -> a RubCursor(361538816)) MorphicAlarm(#...etc... lastAlarmTime: 308537 activeHand: a HandMorph(408769792) currentCursor: ((CursorWithMask extent: (16@16) depth: 1 fromArray: #( 2r0...etc... worldRenderer: a NullWorldRenderer realWindowExtent: nil WorldMorph>>doOneCycleNow Receiver: a WorldMorph(860605184) [world] Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (240@120) owner: nil submorphs: an Array(a MenubarMorph(388205824) a TaskbarMorph(51680256) a Standa...etc... fullBounds: nil color: (Color r: 0.9403714565004888 g: 0.9403714565004888 b: 0.9403714565004888...etc... extension: a MorphExtension (1010164480) [other: (dragEnabled -> true) (dropEn...etc... borderWidth: 0 borderColor: (Color r: 0.8611925708699902 g: 1.0 b: 0.7223851417399805 alpha: 1...etc... backgroundMorph: nil worldState: a WorldState griddingOn: nil WorldMorph>>doOneCycle Receiver: a WorldMorph(860605184) [world] Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (240@120) owner: nil submorphs: an Array(a MenubarMorph(388205824) a TaskbarMorph(51680256) a Standa...etc... fullBounds: nil color: (Color r: 0.9403714565004888 g: 0.9403714565004888 b: 0.9403714565004888...etc... extension: a MorphExtension (1010164480) [other: (dragEnabled -> true) (dropEn...etc... borderWidth: 0 borderColor: (Color r: 0.8611925708699902 g: 1.0 b: 0.7223851417399805 alpha: 1...etc... backgroundMorph: nil worldState: a WorldState griddingOn: nil [ | extraWorldsToDraw | extraWorldsToDraw := ExtraWorldListMutex critical: [ self extraWorldList ]. extraWorldsToDraw do: [:world | world doOneCycle. ]. (self currentWorld isNotNil and: [(extraWorldsToDraw includes: self currentWorld) not]) ifTrue: [ self currentWorld doOneCycle. ] ] in WorldMorph class>>doOneCycle Receiver: WorldMorph Arguments and temporary variables: extraWorldsToDraw: #( Receiver's instance variables: superclass: PasteUpMorph methodDict: a MethodDictionary(#acceptDroppingMorph:event:->WorldMorph>>#accept...etc... format: 65547 layout: a FixedLayout organization: a ClassOrganization subclasses: {AthensWorldMorph. OSWindowWorldMorph} name: #WorldMorph classPool: a Dictionary(#AllowDropFiles->nil #CursorOwnerWorld->nil #ExtraWorld...etc... sharedPools: an OrderedCollection() environment: a SystemDictionary(lots of globals) category: #'Morphic-Core-Worlds' announcer: nil displayScaleFactor: 1 FullBlockClosure(BlockClosure)>>ensure: Receiver: [ | extraWorldsToDraw | extraWorldsToDraw := ExtraWorldListMutex critical: [ self extr...etc... Arguments and temporary variables: aBlock: [ self doInterCycleWait ] complete: nil returnValue: ni Receiver's instance variables: outerContext: WorldMorph class>>doOneCycle startpc: a CompiledBlock: [ | extraWorldsToDraw | extraWorldsToDraw := Extr...etc... numArgs: 0 receiver: WorldMorph WorldState class>>doDrawCycleWith: Receiver: WorldState Arguments and temporary variables: aBlock: [ | extraWorldsToDraw | extraWorldsToDraw := ExtraWorldListMutex cr...etc.. Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#activeHand->WorldState>>#activeHand #activeHand...etc... format: 65548 layout: a FixedLayout organization: a ClassOrganization subclasses: {AthensWorldState} name: #WorldState classPool: a Dictionary(#CanSurrenderToOS->nil #DebugShowDamage->false #Deferre...etc... sharedPools: an OrderedCollection() environment: a SystemDictionary(lots of globals) category: #'Morphic-Core-Worlds' WorldMorph class>>doOneCycle Receiver: WorldMorph Arguments and temporary variables: Receiver's instance variables: superclass: PasteUpMorph methodDict: a MethodDictionary(#acceptDroppingMorph:event:->WorldMorph>>#accept...etc... format: 65547 layout: a FixedLayout organization: a ClassOrganization subclasses: {AthensWorldMorph. OSWindowWorldMorph} name: #WorldMorph classPool: a Dictionary(#AllowDropFiles->nil #CursorOwnerWorld->nil #ExtraWorld...etc... sharedPools: an OrderedCollection() environment: a SystemDictionary(lots of globals) category: #'Morphic-Core-Worlds' announcer: nil displayScaleFactor: 1 MorphicRenderLoop>>doOneCycle Receiver: a MorphicRenderLoop Arguments and temporary variables: Receiver's instance variables: a MorphicRenderLoop MorphicRenderLoop>>doOneCycleWhile: Receiver: a MorphicRenderLoop Arguments and temporary variables: arg1: spawnNewProcess UIProcess := [ MorphicRenderLoop new doOneCycleWhile: [...etc.. Receiver's instance variables: a MorphicRenderLoop 'Morphic UI Process' in MorphicUIManager>>spawnNewProcess Receiver: a MorphicUIManager Arguments and temporary variables: Receiver's instance variables: activeTranscript: nil [ self value. Processor terminateActive ] asContext in BlockClosure>>newProcess Receiver: 'Morphic UI Process' Arguments and temporary variables: Receiver's instance variables: outerContext: MorphicUIManager>>spawnNewProcess startpc: 109 numArgs: 0 --- The full stack --- UndefinedObject(Object)>>doesNotUnderstand: #containsPoint: UndefinedObject>>doesNotUnderstand: #containsPoint: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>handleMouseOver: MouseEvent>>sentTo: [ ^ anEvent sentTo: self ] in MorphicEventDispatcher>>dispatchEvent:with: FullBlockClosure(BlockClosure)>>ensure: MorphicEventDispatcher>>dispatchEvent:with: WorldMorph(Morph)>>processEvent:using: WorldMorph(Morph)>>processEvent: HandMorph>>sendEvent:focus:clear: HandMorph>>sendMouseEvent: HandMorph>>handleEvent: MouseOverHandler>>handleAsMouseOver: MouseOverHandler>>processMouseOver: HandMorph>>processEventsFromQueue: HandMorph>>processEvents [:h | self activeHand: h. h processEvents. self activeHand: nil. ] in WorldState>>doOneCycleFor: Array(SequenceableCollection)>>do: WorldState>>handsDo: WorldState>>doOneCycleFor: WorldMorph>>doOneCycleNow WorldMorph>>doOneCycle [ | extraWorldsToDraw | extraWorldsToDraw := ExtraWorldListMutex critical: [ self extraWorldList ]. extraWorldsToDraw do: [:world | world doOneCycle. ]. (self currentWorld isNotNil and: [(extraWorldsToDraw includes: self currentWorld) not]) ifTrue: [ self currentWorld doOneCycle. ] ] in WorldMorph class>>doOneCycle FullBlockClosure(BlockClosure)>>ensure: WorldState class>>doDrawCycleWith: WorldMorph class>>doOneCycle MorphicRenderLoop>>doOneCycle MorphicRenderLoop>>doOneCycleWhile: 'Morphic UI Process' in MorphicUIManager>>spawnNewProcess [ self value. Processor terminateActive ] asContext in BlockClosure>>newProcess ------------------------------------------------------------------------------- Processes and their stacks: Process: a Process in InputEventFetcher>>waitForInput stack: InputEventFetcher>>waitForInput InputEventFetcher>>eventLoop Processor in InputEventFetcher>>installEventLoop [ self value. Processor terminateActive ] asContext in BlockClosure>>newProcess ------------------------------ Process: a Process in nil stack: Array(SequenceableCollection)>>do: [:logger | logger nextPutAll: 'Processes and their stacks: ';cr. Process allInstances do: [:each | | ctx | logger nextPutAll: 'Process: '; print: each; cr; nextPutAll: ' stack:'; cr; cr. ctx := each isActiveProcess ifTrue: [ thisContext sender ] ifFalse: [ each suspendedContext ]. ctx ifNotNil: [ (ctx stackOfSize: 20) do: [:s | logger print: s; cr ]]. logger nextPutAll: '------------------------------'; cr; cr. ]] in [ Smalltalk logError: aString inContext: aContext. " Print stacks of all current processes " Smalltalk logDuring: [:logger | logger nextPutAll: 'Processes and their stacks: ';cr. Process allInstances do: [:each | | ctx | logger nextPutAll: 'Process: '; print: each; cr; nextPutAll: ' stack:'; cr; cr. ctx := each isActiveProcess ifTrue: [ thisContext sender ] ifFalse: [ each suspendedContext ]. ctx ifNotNil: [ (ctx stackOfSize: 20) do: [:s | logger print: s; cr ]]. logger nextPutAll: '------------------------------'; cr; cr. ]]. ] in NonInteractiveUIManager(CommandLineUIManager)>>quitFrom:withMessage: [ logStream := self openLog. aMonadicBlock value: logStream. ] in SmalltalkImage>>logDuring: FullBlockClosure(BlockClosure)>>ensure: SmalltalkImage>>logDuring: [ Smalltalk logError: aString inContext: aContext. " Print stacks of all current processes " Smalltalk logDuring: [:logger | logger nextPutAll: 'Processes and their stacks: ';cr. Process allInstances do: [:each | | ctx | logger nextPutAll: 'Process: '; print: each; cr; nextPutAll: ' stack:'; cr; cr. ctx := each isActiveProcess ifTrue: [ thisContext sender ] ifFalse: [ each suspendedContext ]. ctx ifNotNil: [ (ctx stackOfSize: 20) do: [:s | logger print: s; cr ]]. logger nextPutAll: '------------------------------'; cr; cr. ]]. ] in NonInteractiveUIManager(CommandLineUIManager)>>quitFrom:withMessage: FullBlockClosure(BlockClosure)>>ensure: NonInteractiveUIManager(CommandLineUIManager)>>quitFrom:withMessage: NonInteractiveUIManager(CommandLineUIManager)>>unhandledErrorDefaultAction: MessageNotUnderstood(Exception)>>unhandledErrorAction UnhandledError>>defaultAction UndefinedObject>>handleSignal: UnhandledError(Exception)>>signal UnhandledError class>>signalForException: MessageNotUnderstood(Exception)>>raiseUnhandledError MessageNotUnderstood(Exception)>>defaultAction MessageNotUnderstood>>defaultAction UndefinedObject>>handleSignal: MessageNotUnderstood(Exception)>>signal UndefinedObject(Object)>>doesNotUnderstand: #containsPoint: ------------------------------ Process: a Process in DelayMicrosecondTicker>>waitForUserSignalled:orExpired: stack: DelayMicrosecondTicker>>waitForUserSignalled:orExpired: [ [runTimerEventLoop] whileTrue: [ |nowTick| "Warning! Stepping the following line may lock the Image. Use or ." ticker waitForUserSignalled: timingSemaphore orExpired: activeDelay. "When two debuggers appear, step/proceed through this higher priority one first." debug ifTrue: [ self halt ]. "Invoke the api back-ends, which set the transfer-variable to nil" suspendSemaphore ifNotNil: [ self suspendAtTimingPriority ]. delayToStart ifNotNil: [ self scheduleAtTimingPriority ]. delayToStop ifNotNil: [ self unscheduleAtTimingPriority ]. "Signal any expired delays" nowTick := ticker nowTick. [ activeDelay notNil and: [nowTick >= activeDelay resumptionTick] ] whileTrue: [ activeDelay timingPrioritySignalExpired. activeDelay := suspendedDelays removeFirstOrNil ]. ] ] in DelaySemaphoreScheduler(DelayBasicScheduler)>>runBackendLoopAtTimingPriority FullBlockClosure(BlockClosure)>>ensure: DelaySemaphoreScheduler(DelayBasicScheduler)>>runBackendLoopAtTimingPriority [ self runBackendLoopAtTimingPriority ] in DelaySemaphoreScheduler(DelayBasicScheduler)>>startTimerEventLoopPriority: [self value. Processor terminateActive] in FullBlockClosure(BlockClosure)>>newProcess ------------------------------ Process: a Process in ProcessorScheduler class>>idleProcess stack: ProcessorScheduler class>>idleProcess [self idleProcess] in ProcessorScheduler class>>startUp [self value. Processor terminateActive] in FullBlockClosure(BlockClosure)>>newProcess ------------------------------ Process: a Process in TestExecutionEnvironment>>runTestCase: stack: TestExecutionEnvironment>>runTestCase: CurrentExecutionEnvironment class>>runTestCase: SpTreeAdapterMultipleSelectionTest(TestCase)>>runCaseManaged [ aTestCase runCaseManaged ] in [ [ aTestCase runCaseManaged ] on: Halt, Error, TestFailure do: [ :err | error := err. aTestCase shouldPass ifTrue: [ self serializeError: error of: aTestCase ]. stack := self stackTraceString: err of: aTestCase ]] in [ [ [ aTestCase runCaseManaged ] on: Halt, Error, TestFailure do: [ :err | error := err. aTestCase shouldPass ifTrue: [ self serializeError: error of: aTestCase ]. stack := self stackTraceString: err of: aTestCase ]] on: TestSkip do: [ :err | "nothing to do..." ] ] in HDTestReport>>runCase: FullBlockClosure(BlockClosure)>>on:do: [ [ aTestCase runCaseManaged ] on: Halt, Error, TestFailure do: [ :err | error := err. aTestCase shouldPass ifTrue: [ self serializeError: error of: aTestCase ]. stack := self stackTraceString: err of: aTestCase ]] in [ [ [ aTestCase runCaseManaged ] on: Halt, Error, TestFailure do: [ :err | error := err. aTestCase shouldPass ifTrue: [ self serializeError: error of: aTestCase ]. stack := self stackTraceString: err of: aTestCase ]] on: TestSkip do: [ :err | "nothing to do..." ] ] in HDTestReport>>runCase: FullBlockClosure(BlockClosure)>>on:do: [ [ [ aTestCase runCaseManaged ] on: Halt, Error, TestFailure do: [ :err | error := err. aTestCase shouldPass ifTrue: [ self serializeError: error of: aTestCase ]. stack := self stackTraceString: err of: aTestCase ]] on: TestSkip do: [ :err | "nothing to do..." ] ] in HDTestReport>>runCase: Time class>>microsecondsToRun: Time class>>millisecondsToRun: FullBlockClosure(BlockClosure)>>timeToRun HDTestReport>>beginTestCase:runBlock: HDTestReport>>runCase: SpTreeAdapterMultipleSelectionTest(TestCase)>>run: [ :each | each run: self ] in [ suite tests do: [ :each | each run: self ] ] in HDTestReport>>runAll OrderedCollection>>do: [ suite tests do: [ :each | each run: self ] ] in HDTestReport>>runAll [ self value: anExecutionEnvironment. anExecutionEnvironment activated. aBlock value ] in CurrentExecutionEnvironment class>>activate:for: FullBlockClosure(BlockClosure)>>ensure: CurrentExecutionEnvironment class>>activate:for: ------------------------------ Process: a Process in WeakArray class>>finalizationProcess stack: WeakArray class>>finalizationProcess [self finalizationProcess] in WeakArray class>>restartFinalizationProcess [self value. Processor terminateActive] in FullBlockClosure(BlockClosure)>>newProcess ------------------------------ Process: a Process in [ [root insertSender: thisContext. currentContext jump] on: exception do: handlerAction. Processor terminateActive] in Process>>on:do: stack: [ [root insertSender: thisContext. currentContext jump] on: exception do: handlerAction. Processor terminateActive] in Process>>on:do: ------------------------------ Process: a Process in [self value. Processor terminateActive] in FullBlockClosure(BlockClosure)>>newProcess stack: [self value. Processor terminateActive] in FullBlockClosure(BlockClosure)>>newProcess ------------------------------ Process: a Process in [self value. Processor terminateActive] in FullBlockClosure(BlockClosure)>>newProcess stack: [self value. Processor terminateActive] in FullBlockClosure(BlockClosure)>>newProcess ------------------------------ Process: a Process in [ [root insertSender: thisContext. currentContext jump] on: exception do: handlerAction. Processor terminateActive] in Process>>on:do: stack: [ [root insertSender: thisContext. currentContext jump] on: exception do: handlerAction. Processor terminateActive] in Process>>on:do: ------------------------------ Process: a Process in [ [root insertSender: thisContext. currentContext jump] on: exception do: handlerAction. Processor terminateActive] in Process>>on:do: stack: [ [root insertSender: thisContext. currentContext jump] on: exception do: handlerAction. Processor terminateActive] in Process>>on:do: ------------------------------ Process: a Process in [self value. Processor terminateActive] in FullBlockClosure(BlockClosure)>>newProcess stack: [self value. Processor terminateActive] in FullBlockClosure(BlockClosure)>>newProcess ------------------------------ Process: a Process in [self schedule. "It is critical that the following has no suspension point so that the test and the wait primitive are atomic. In addition, if the delay is no longer being waited on while entering the way we know that it is expired because the delay has already fired." beingWaitedOn ifTrue:[delaySemaphore wait] ifFalse:[expired := true]] in DelayWaitTimeout>>wait stack: [self schedule. "It is critical that the following has no suspension point so that the test and the wait primitive are atomic. In addition, if the delay is no longer being waited on while entering the way we know that it is expired because the delay has already fired." beingWaitedOn ifTrue:[delaySemaphore wait] ifFalse:[expired := true]] in DelayWaitTimeout>>wait FullBlockClosure(BlockClosure)>>ensure: DelayWaitTimeout>>wait Semaphore>>wait: [ "waiting new test case" watchDogSemaphore wait. "waiting while test completes" [timeIsGone := watchDogSemaphore wait: maxTimeForTest. testCompleted] whileFalse: [ "this subloop allows to dynamically change time limit and restart watch dog" timeIsGone ifTrue: [ "The main purpose of following condition is to ignore timeout when test is under debug. Test process is suspended only when it is debugged" mainTestProcess isSuspended ifFalse: [ mainTestProcess signalException: TestTookTooMuchTime new]] ]. ] in TestExecutionEnvironment>>watchDogLoop FullBlockClosure(BlockClosure)>>repeat TestExecutionEnvironment>>watchDogLoop [self watchDogLoop] in TestExecutionEnvironment>>startWatchDog [self value. Processor terminateActive] in FullBlockClosure(BlockClosure)>>newProcess ------------------------------