=============================================================================== 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, #ClassForTestToBeDeleted29 from Undeclared. Check them after this change. =============================================================================== =============================================================================== Notice: There are references to, #ClassForTestToBeDeleted47 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, #ClassForTestToBeDeleted74 from Undeclared. Check them after this change. =============================================================================== =============================================================================== Notice: There are references to, #TraitForTestToBeDeleted1 from Undeclared. Check them after this change. =============================================================================== THERE_BE_DRAGONS_HERE MessageNotUnderstood: receiver of "containsPoint:" is nil 27 September 2020 5:32:32.872958 pm VM: unix - i686 - linux-gnu - CoInterpreter VMMaker.oscog-eem.2509 uuid: 91e81f64-95de-4914-a960-8f842be3a194 Jan 21 2019 StackToRegisterMappingCogit VMMaker.oscog-eem.2509 uuid: 91e81f64-95de-4914-a960-8f842be3a194 Jan 21 2019 VM: 201901210311 https://github.com/OpenSmalltalk/opensmalltalk-vm.git Date: Sun Jan 20 19:11:39 2019 CommitHash: 234f2728 Plugins: 201901210311 https://github.com/OpenSmalltalk/opensmalltalk-vm.git Image: Pharo9.0.0 [Build information: Pharo-9.0.0+build.698.sha.fbd7e1432500d060e480cd35ce6913b847fb3583 (32 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 1431 nil] aMorph: a WorldMorph(178181632) [world] localEvt: nil index: nil child: nil morphs: nil inside: ni Receiver's instance variables: morph: a WorldMorph(178181632) [world] MorphicEventDispatcher>>handleMouseOver: Receiver: a MorphicEventDispatcher Arguments and temporary variables: anEvent: [(0@0) mouseOver 1431 nil Receiver's instance variables: morph: a WorldMorph(178181632) [world] MouseEvent>>sentTo: Receiver: [(0@0) mouseOver 1431 nil] Arguments and temporary variables: anObject: a MorphicEventDispatche Receiver's instance variables: timeStamp: 1431 source: a HandMorph(621303552) 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 1431 nil] aMorph: a WorldMorph(178181632) [world Receiver's instance variables: morph: a WorldMorph(178181632) [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 1431 nil] aMorph: a WorldMorph(178181632) [world Receiver's instance variables: morph: a WorldMorph(178181632) [world] WorldMorph(Morph)>>processEvent:using: Receiver: a WorldMorph(178181632) [world] Arguments and temporary variables: anEvent: [(0@0) mouseOver 1431 nil] defaultDispatcher: a MorphicEventDispatche Receiver's instance variables: bounds: (0@0) corner: (240@120) owner: nil submorphs: an Array(a MenubarMorph(844371456) a TaskbarMorph(582648320) a Stand...etc... fullBounds: nil color: (Color r: 0.9403714565004888 g: 0.9403714565004888 b: 0.9403714565004888...etc... extension: a MorphExtension (48375040) [other: (dragEnabled -> true) (dropEnab...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(178181632) [world] Arguments and temporary variables: anEvent: [(0@0) mouseOver 1431 nil Receiver's instance variables: bounds: (0@0) corner: (240@120) owner: nil submorphs: an Array(a MenubarMorph(844371456) a TaskbarMorph(582648320) a Stand...etc... fullBounds: nil color: (Color r: 0.9403714565004888 g: 0.9403714565004888 b: 0.9403714565004888...etc... extension: a MorphExtension (48375040) [other: (dragEnabled -> true) (dropEnab...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(621303552) Arguments and temporary variables: anEvent: [(0@0) mouseOver 1431 nil] focusHolder: nil aBlock: [self mouseFocus: nil] result: ni Receiver's instance variables: bounds: (0@0) corner: (16@16) owner: a WorldMorph(178181632) [world] submorphs: #() fullBounds: nil color: Color blue extension: a MorphExtension (628819968) mouseFocus: nil keyboardFocus: a PluggableButtonMorph(813128192) eventListeners: nil mouseListeners: nil mouseClickState: a MouseClickState[#firstClickDown] mouseOverHandler: a MouseOverHandler lastMouseEvent: [(0@0) mouseOver 1431 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(621303552) Arguments and temporary variables: anEvent: [(0@0) mouseOver 1431 nil Receiver's instance variables: bounds: (0@0) corner: (16@16) owner: a WorldMorph(178181632) [world] submorphs: #() fullBounds: nil color: Color blue extension: a MorphExtension (628819968) mouseFocus: nil keyboardFocus: a PluggableButtonMorph(813128192) eventListeners: nil mouseListeners: nil mouseClickState: a MouseClickState[#firstClickDown] mouseOverHandler: a MouseOverHandler lastMouseEvent: [(0@0) mouseOver 1431 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(621303552) Arguments and temporary variables: anEvent: [(0@0) mouseOver 1431 nil] evt: [(0@0) mouseOver 1431 nil Receiver's instance variables: bounds: (0@0) corner: (16@16) owner: a WorldMorph(178181632) [world] submorphs: #() fullBounds: nil color: Color blue extension: a MorphExtension (628819968) mouseFocus: nil keyboardFocus: a PluggableButtonMorph(813128192) eventListeners: nil mouseListeners: nil mouseClickState: a MouseClickState[#firstClickDown] mouseOverHandler: a MouseOverHandler lastMouseEvent: [(0@0) mouseOver 1431 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 1431 nil Receiver's instance variables: mouseOverMorphs: an Array(a MenubarItemMorph(717049344)'Pharo' a MenubarMorph(8...etc... enteredMorphs: a WriteStream overMorphs: a WriteStream leftMorphs: an IdentitySet(a MenubarItemMorph(717049344)'Pharo' a MenubarMorph(...etc... MouseOverHandler>>processMouseOver: Receiver: a MouseOverHandler Arguments and temporary variables: anEvent: [(0@0) mouseOver 1431 nil Receiver's instance variables: mouseOverMorphs: an Array(a MenubarItemMorph(717049344)'Pharo' a MenubarMorph(8...etc... enteredMorphs: a WriteStream overMorphs: a WriteStream leftMorphs: an IdentitySet(a MenubarItemMorph(717049344)'Pharo' a MenubarMorph(...etc... HandMorph>>processEventsFromQueue: Receiver: a HandMorph(621303552) Arguments and temporary variables: anEventBufferQueue: an InputEventSensor evt: nil hadAny: ni Receiver's instance variables: bounds: (0@0) corner: (16@16) owner: a WorldMorph(178181632) [world] submorphs: #() fullBounds: nil color: Color blue extension: a MorphExtension (628819968) mouseFocus: nil keyboardFocus: a PluggableButtonMorph(813128192) eventListeners: nil mouseListeners: nil mouseClickState: a MouseClickState[#firstClickDown] mouseOverHandler: a MouseOverHandler lastMouseEvent: [(0@0) mouseOver 1431 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(621303552) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (16@16) owner: a WorldMorph(178181632) [world] submorphs: #() fullBounds: nil color: Color blue extension: a MorphExtension (628819968) mouseFocus: nil keyboardFocus: a PluggableButtonMorph(813128192) eventListeners: nil mouseListeners: nil mouseClickState: a MouseClickState[#firstClickDown] mouseOverHandler: a MouseOverHandler lastMouseEvent: [(0@0) mouseOver 1431 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(178181632) [world] h: a HandMorph(621303552 Receiver's instance variables: hands: an Array(a HandMorph(621303552)) damageRecorder: a DamageRecorder stepList: a Heap() lastStepTime: 60723 lastStepMessage: nil lastCycleTime: nil alarms: a Heap() lastAlarmTime: 215820 activeHand: a HandMorph(621303552) currentCursor: ((CursorWithMask extent: (16@16) depth: 1 fromArray: #( 2r0...etc... worldRenderer: a NullWorldRenderer realWindowExtent: nil Array(SequenceableCollection)>>do: Receiver: an Array(a HandMorph(621303552)) Arguments and temporary variables: aBlock: [:h | self activeHand: h. h processEvents. self activeHand: nil. ...etc... index: Receiver's instance variables: an Array(a HandMorph(621303552)) 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(621303552)) damageRecorder: a DamageRecorder stepList: a Heap() lastStepTime: 60723 lastStepMessage: nil lastCycleTime: nil alarms: a Heap() lastAlarmTime: 215820 activeHand: a HandMorph(621303552) 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(178181632) [world Receiver's instance variables: hands: an Array(a HandMorph(621303552)) damageRecorder: a DamageRecorder stepList: a Heap() lastStepTime: 60723 lastStepMessage: nil lastCycleTime: nil alarms: a Heap() lastAlarmTime: 215820 activeHand: a HandMorph(621303552) currentCursor: ((CursorWithMask extent: (16@16) depth: 1 fromArray: #( 2r0...etc... worldRenderer: a NullWorldRenderer realWindowExtent: nil WorldMorph>>doOneCycleNow Receiver: a WorldMorph(178181632) [world] Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (240@120) owner: nil submorphs: an Array(a MenubarMorph(844371456) a TaskbarMorph(582648320) a Stand...etc... fullBounds: nil color: (Color r: 0.9403714565004888 g: 0.9403714565004888 b: 0.9403714565004888...etc... extension: a MorphExtension (48375040) [other: (dragEnabled -> true) (dropEnab...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(178181632) [world] Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (240@120) owner: nil submorphs: an Array(a MenubarMorph(844371456) a TaskbarMorph(582648320) a Stand...etc... fullBounds: nil color: (Color r: 0.9403714565004888 g: 0.9403714565004888 b: 0.9403714565004888...etc... extension: a MorphExtension (48375040) [other: (dragEnabled -> true) (dropEnab...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: UIProcess name: 'Morphic UI Process Receiver's instance variables: a MorphicRenderLoop UIProcess := [ MorphicRenderLoop new doOneCycleWhile: [ true ] ] newProcess priority: Processor userSchedulingPriority 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: UIProcess := [ MorphicRenderLoop new doOneCycleWhile: [ true ] ] newProcess...etc... Arguments and temporary variables: Receiver's instance variables: outerContext: MorphicUIManager>>spawnNewProcess startpc: 57 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: UIProcess := [ MorphicRenderLoop new doOneCycleWhile: [ true ] ] newProcess priority: Processor userSchedulingPriority 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 WeakArray class>>finalizationProcess stack: WeakArray class>>finalizationProcess [self finalizationProcess] in WeakArray class>>restartFinalizationProcess [self value. Processor terminateActive] in FullBlockClosure(BlockClosure)>>newProcess ------------------------------ Process: a Process in [ testCompleted := true. watchDogSemaphore signal. "signal that test case is completed" self cleanUpAfterTest ] in TestExecutionEnvironment>>runTestCase: stack: [ testCompleted := true. watchDogSemaphore signal. "signal that test case is completed" self cleanUpAfterTest ] in TestExecutionEnvironment>>runTestCase: FullBlockClosure(BlockClosure)>>ensure: TestExecutionEnvironment>>runTestCase: CurrentExecutionEnvironment class>>runTestCase: EditableListTest(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: EditableListTest(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: ------------------------------ 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 Process>>doTerminationFromYourself stack: Process>>doTerminationFromYourself ------------------------------ 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 [ "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 stack: [ "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 ------------------------------