Still does not work Hilaire
Le 28/05/2011 21:02, Guillermo Polito a écrit : > It seems code loader is not sending #startRetrieval to the UrlDownload > Request, and the Semaphore waits forever. > > I've put a changeset with what I think is a fix in the tracker :). > > On Sat, May 28, 2011 at 2:27 PM, Hilaire Fernandes > <[email protected] > <mailto:[email protected]>> wrote: > > And the debug is there. > The halt does not crash the VM in normal condition. (ie Alt-[.] is ok) > > Hilaire > > > Le 28/05/2011 19:07, Hilaire Fernandes a écrit : > > And when there are no halt in commandLineHandlerAction:, the image is > > frozen > > > > Le 28/05/2011 18:53, Hilaire Fernandes a écrit : > >> With latest pahro core 1.3, I can't load script with command like > >> > >> > >> squeak pharo "`pwd`\myScript.st" > >> > >> When I put a halt at the begining of commandLineHandlerAction: > >> aCommandLine the VM crash > >> > >> VM is 4.0.3-2202 > >> > >> Hilaire > >> > >> > > > > > > > -- > Education 0.2 -- http://blog.ofset.org/hilaire > > -- Education 0.2 -- http://blog.ofset.org/hilaire
THERE_BE_DRAGONS_HERE MessageNotUnderstood: CodeLoader>>startRetrieval 28 May 2011 10:51:56 pm VM: unix - i686 - linux - Squeak3.10.2 of '5 June 2008' [latest update: #7179] Image: Pharo1.3a [Latest update: #13225] CodeLoader(Object)>>doesNotUnderstand: #startRetrieval Receiver: a CodeLoader Arguments and temporary variables: aMessage: startRetrieval exception: MessageNotUnderstood: CodeLoader>>startRetrieval resumeValue: nil Receiver's instance variables: sourceFiles: an Array(an UrlDownloadRequest) [:req | self startRetrieval; installSourceFile: req contentStream] in CodeLoader>>installSourceFiles Receiver: a CodeLoader Arguments and temporary variables: req: an UrlDownloadRequest Receiver's instance variables: sourceFiles: an Array(an UrlDownloadRequest) Array(SequenceableCollection)>>do: Receiver: an Array(an UrlDownloadRequest) Arguments and temporary variables: aBlock: [:req | self startRetrieval; installSourceFile: req contentStream] index: 1 indexLimiT: 1 Receiver's instance variables: an Array(an UrlDownloadRequest) CodeLoader>>installSourceFiles Receiver: a CodeLoader Arguments and temporary variables: Receiver's instance variables: sourceFiles: an Array(an UrlDownloadRequest) CodeLoader class>>commandLineHandlerAction: Receiver: CodeLoader Arguments and temporary variables: aCommandLine: a CommandLine url: http:///home/hilaire/Travaux/these/inria-istoa/istoa/drgeo2/images/install...etc... param: 'file:/home/hilaire/Travaux/these/inria-istoa/istoa/drgeo2/images/instal...etc... loader: a CodeLoader Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#createRequestFor:in:->(CodeLoader>>#createReque...etc... format: 132 instanceVariables: #('sourceFiles') organization: ('installing' installSourceFile: installSourceFiles) ('loading' l...etc... subclasses: nil name: #CodeLoader classPool: a Dictionary() sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'System-Download' traitComposition: {} localSelectors: nil [:cl | CodeLoader commandLineHandlerAction: cl] in CodeLoader class>>initialize Receiver: CodeLoader Arguments and temporary variables: cl: a CommandLine Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#createRequestFor:in:->(CodeLoader>>#createReque...etc... format: 132 instanceVariables: #('sourceFiles') organization: ('installing' installSourceFile: installSourceFiles) ('loading' l...etc... subclasses: nil name: #CodeLoader classPool: a Dictionary() sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'System-Download' traitComposition: {} localSelectors: nil [:each | | actionBlock conditionBlock | conditionBlock := each key. actionBlock := each value. (conditionBlock value: anUserInput) ifTrue: [actionBlock value: anUserInput]] in CommandLine class(AbstractUserInput class)>>dispatch: Receiver: CommandLine Arguments and temporary variables: anUserInput: [:cl | CodeLoader commandLineHandlerCondition: cl]->[:cl | CodeLoa...etc... each: a CommandLine actionBlock: [:cl | CodeLoader commandLineHandlerAction: cl] conditionBlock: [:cl | CodeLoader commandLineHandlerCondition: cl] Receiver's instance variables: superclass: AbstractUserInput methodDict: a MethodDictionary() format: 136 instanceVariables: nil organization: ('as yet unclassified') subclasses: nil name: #CommandLine classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'System-Support' traitComposition: {} localSelectors: nil registrations: a Dictionary(#CodeLoader->[:cl | CodeLoader commandLineHandlerCo...etc... singleton: a CommandLine [:association | aBlock value: association value] in Dictionary>>valuesDo: Receiver: a Dictionary(#CodeLoader->[:cl | CodeLoader commandLineHandlerCondition: cl]->[:cl | CodeL...etc... Arguments and temporary variables: aBlock: #CodeLoader->[:cl | CodeLoader commandLineHandlerCondition: cl]->[:cl |...etc... association: [:each | | actionBlock conditionBlock | conditionBlock := each ke...etc... Receiver's instance variables: tally: 1 array: an Array(nil nil nil #CodeLoader->[:cl | CodeLoader commandLineHandlerCo...etc... [:each | each ifNotNil: [aBlock value: each]] in Dictionary>>associationsDo: Receiver: a Dictionary(#CodeLoader->[:cl | CodeLoader commandLineHandlerCondition: cl]->[:cl | CodeL...etc... Arguments and temporary variables: aBlock: #CodeLoader->[:cl | CodeLoader commandLineHandlerCondition: cl]->[:cl |...etc... each: [:association | aBlock value: association value] Receiver's instance variables: tally: 1 array: an Array(nil nil nil #CodeLoader->[:cl | CodeLoader commandLineHandlerCo...etc... Array(SequenceableCollection)>>do: Receiver: an Array(nil nil nil #CodeLoader->[:cl | CodeLoader commandLineHandlerCondition: cl]->[:cl...etc... Arguments and temporary variables: aBlock: [:each | each ifNotNil: [aBlock value: each]] index: 4 indexLimiT: 5 Receiver's instance variables: an Array(nil nil nil #CodeLoader->[:cl | CodeLoader commandLineHandlerCondition: cl]->[:cl...etc... Dictionary>>associationsDo: Receiver: a Dictionary(#CodeLoader->[:cl | CodeLoader commandLineHandlerCondition: cl]->[:cl | CodeL...etc... Arguments and temporary variables: aBlock: [:association | aBlock value: association value] Receiver's instance variables: tally: 1 array: an Array(nil nil nil #CodeLoader->[:cl | CodeLoader commandLineHandlerCo...etc... Dictionary>>valuesDo: Receiver: a Dictionary(#CodeLoader->[:cl | CodeLoader commandLineHandlerCondition: cl]->[:cl | CodeL...etc... Arguments and temporary variables: aBlock: [:each | | actionBlock conditionBlock | conditionBlock := each key. a...etc... Receiver's instance variables: tally: 1 array: an Array(nil nil nil #CodeLoader->[:cl | CodeLoader commandLineHandlerCo...etc... Dictionary>>do: Receiver: a Dictionary(#CodeLoader->[:cl | CodeLoader commandLineHandlerCondition: cl]->[:cl | CodeL...etc... Arguments and temporary variables: aBlock: [:each | | actionBlock conditionBlock | conditionBlock := each key. a...etc... Receiver's instance variables: tally: 1 array: an Array(nil nil nil #CodeLoader->[:cl | CodeLoader commandLineHandlerCo...etc... CommandLine class(AbstractUserInput class)>>dispatch: Receiver: CommandLine Arguments and temporary variables: anUserInput: a CommandLine Receiver's instance variables: superclass: AbstractUserInput methodDict: a MethodDictionary() format: 136 instanceVariables: nil organization: ('as yet unclassified') subclasses: nil name: #CommandLine classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'System-Support' traitComposition: {} localSelectors: nil registrations: a Dictionary(#CodeLoader->[:cl | CodeLoader commandLineHandlerCo...etc... singleton: a CommandLine CommandLine class>>dispatch Receiver: CommandLine Arguments and temporary variables: Receiver's instance variables: superclass: AbstractUserInput methodDict: a MethodDictionary() format: 136 instanceVariables: nil organization: ('as yet unclassified') subclasses: nil name: #CommandLine classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'System-Support' traitComposition: {} localSelectors: nil registrations: a Dictionary(#CodeLoader->[:cl | CodeLoader commandLineHandlerCo...etc... singleton: a CommandLine CommandLine class>>startUp: Receiver: CommandLine Arguments and temporary variables: resuming: true Receiver's instance variables: superclass: AbstractUserInput methodDict: a MethodDictionary() format: 136 instanceVariables: nil organization: ('as yet unclassified') subclasses: nil name: #CommandLine classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'System-Support' traitComposition: {} localSelectors: nil registrations: a Dictionary(#CodeLoader->[:cl | CodeLoader commandLineHandlerCo...etc... singleton: a CommandLine [:name | | class | class := self at: name ifAbsent: []. class isNil ifTrue: [removals add: name] ifFalse: [class perform: startUpOrShutDown with: argument]] in SmalltalkImage>>send:toClassesNamedIn:with: Receiver: Smalltalk Arguments and temporary variables: startUpOrShutDown: #CommandLine argument: #startUp: removals: true name: an OrderedCollection() class: CommandLine Receiver's instance variables: globals: a SystemDictionary(lots of globals) OrderedCollection>>do: Receiver: an OrderedCollection(#Delay #OSPlatform #DisplayScreen #Cursor #InputEventFetcher #Process...etc... Arguments and temporary variables: aBlock: [:name | | class | class := self at: name ifAbsent: []. class...etc... index: 71 Receiver's instance variables: array: #(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil ni...etc... firstIndex: 38 lastIndex: 73 SmalltalkImage>>send:toClassesNamedIn:with: Receiver: Smalltalk Arguments and temporary variables: startUpOrShutDown: #startUp: startUpOrShutDownList: an OrderedCollection(#Delay #OSPlatform #DisplayScreen #...etc... argument: true removals: an OrderedCollection() Receiver's instance variables: globals: a SystemDictionary(lots of globals) SmalltalkImage>>processStartUpList: Receiver: Smalltalk Arguments and temporary variables: resuming: true Receiver's instance variables: globals: a SystemDictionary(lots of globals) [self processStartUpList: resuming. resuming ifTrue: [self recordStartupStamp]] in SmalltalkImage>>snapshot:andQuit: Receiver: Smalltalk Arguments and temporary variables: resuming: true Receiver's instance variables: globals: a SystemDictionary(lots of globals) BlockClosure>>ensure: Receiver: [self processStartUpList: resuming. resuming ifTrue: [self recordStartupStamp]] Arguments and temporary variables: aBlock: [Default := self] complete: nil returnValue: nil Receiver's instance variables: outerContext: SmalltalkImage>>snapshot:andQuit: startpc: 215 numArgs: 0 MorphicUIManager(UIManager)>>boot:during: Receiver: a MorphicUIManager Arguments and temporary variables: bootingFromDisk: true aBlock: [self processStartUpList: resuming. resuming ifTrue: [self recordSta...etc... Receiver's instance variables: interactiveParser: nil SmalltalkImage>>snapshot:andQuit: Receiver: Smalltalk Arguments and temporary variables: save: true quit: true snapshotResult: true resuming: true Receiver's instance variables: globals: a SystemDictionary(lots of globals) WorldState class>>saveAndQuit Receiver: WorldState Arguments and temporary variables: Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#activeHand->(WorldState>>#activeHand "a Compile...etc... format: 152 instanceVariables: #('hands' 'viewBox' 'canvas' 'damageRecorder' 'stepList' 'la...etc... organization: ('alarms' addAlarm:withArguments:for:at: adjustAlarmTimes: alarmS...etc... subclasses: nil name: #WorldState classPool: a Dictionary(#CanSurrenderToOS->true #DebugShowDamage->false #Deferr...etc... sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Morphic-Worlds' traitComposition: {} localSelectors: nil [| selArgCount | (selArgCount := selector numArgs) = 0 ifTrue: [target perform: selector] ifFalse: [selArgCount = arguments size ifTrue: [target perform: selector withArguments: arguments] ifFalse: [target perform: selector withArguments: (arguments copyWith: evt)]]] in MenuItemMorph>>invokeWithEvent: Receiver: a MenuItemMorph(537657344)'Save and quit' Arguments and temporary variables: evt: [497@411 mouseUp 203280 nil] selArgCount: 0 Receiver's instance variables: bounds: 434@410 corner: 579@428 owner: a MenuMorph(520355840) submorphs: #() fullBounds: 434@410 corner: 579@428 color: Color black extension: a MorphExtension (467140608) font: a StrikeFont(Bitmap DejaVu Sans 9 14) emphasis: 0 contents: 'Save and quit' hasFocus: false isEnabled: true subMenu: nil isSelected: false target: WorldState selector: #saveAndQuit arguments: #() icon: Form(16x16x32) BlockClosure>>ensure: Receiver: [| selArgCount | (selArgCount := selector numArgs) = 0 ifTrue: [target perform: selector...etc... Arguments and temporary variables: aBlock: [oldcursor show] complete: nil returnValue: nil Receiver's instance variables: outerContext: MenuItemMorph>>invokeWithEvent: startpc: 152 numArgs: 0 CursorWithMask(Cursor)>>showWhile: Receiver: ((CursorWithMask extent: 16@16 depth: 1 fromArray: #( 2r0 2r10000000000000000000000...etc... Arguments and temporary variables: aBlock: [| selArgCount | (selArgCount := selector numArgs) = 0 ifTrue: [targe...etc... oldcursor: ((CursorWithMask extent: 16@16 depth: 1 fromArray: #( 2r0 2r1...etc... Receiver's instance variables: bits: a Bitmap of length 16 width: 16 height: 16 depth: 1 offset: -1@ -1 maskForm: Form(16x16x1) MenuItemMorph>>invokeWithEvent: Receiver: a MenuItemMorph(537657344)'Save and quit' Arguments and temporary variables: evt: [497@411 mouseUp 203280 nil] w: a PasteUpMorph(425197568) [world] Receiver's instance variables: bounds: 434@410 corner: 579@428 owner: a MenuMorph(520355840) submorphs: #() fullBounds: 434@410 corner: 579@428 color: Color black extension: a MorphExtension (467140608) font: a StrikeFont(Bitmap DejaVu Sans 9 14) emphasis: 0 contents: 'Save and quit' hasFocus: false isEnabled: true subMenu: nil isSelected: false target: WorldState selector: #saveAndQuit arguments: #() icon: Form(16x16x32) MenuItemMorph>>mouseUp: Receiver: a MenuItemMorph(537657344)'Save and quit' Arguments and temporary variables: evt: [497@411 mouseUp 203280 nil] Receiver's instance variables: bounds: 434@410 corner: 579@428 owner: a MenuMorph(520355840) submorphs: #() fullBounds: 434@410 corner: 579@428 color: Color black extension: a MorphExtension (467140608) font: a StrikeFont(Bitmap DejaVu Sans 9 14) emphasis: 0 contents: 'Save and quit' hasFocus: false isEnabled: true subMenu: nil isSelected: false target: WorldState selector: #saveAndQuit arguments: #() icon: Form(16x16x32) MenuItemMorph>>handleMouseUp: Receiver: a MenuItemMorph(537657344)'Save and quit' Arguments and temporary variables: anEvent: [497@411 mouseUp 203280 nil] Receiver's instance variables: bounds: 434@410 corner: 579@428 owner: a MenuMorph(520355840) submorphs: #() fullBounds: 434@410 corner: 579@428 color: Color black extension: a MorphExtension (467140608) font: a StrikeFont(Bitmap DejaVu Sans 9 14) emphasis: 0 contents: 'Save and quit' hasFocus: false isEnabled: true subMenu: nil isSelected: false target: WorldState selector: #saveAndQuit arguments: #() icon: Form(16x16x32) MouseButtonEvent>>sentTo: Receiver: [497@411 mouseUp 203280 nil] Arguments and temporary variables: anObject: a MenuItemMorph(537657344)'Save and quit' Receiver's instance variables: timeStamp: 203280 source: a HandMorph(843055104) windowIndex: nil type: #mouseUp buttons: 0 position: 497@411 handler: nil wasHandled: true whichButton: 4 MenuItemMorph(Morph)>>handleEvent: Receiver: a MenuItemMorph(537657344)'Save and quit' Arguments and temporary variables: anEvent: [497@411 mouseUp 203280 nil] Receiver's instance variables: bounds: 434@410 corner: 579@428 owner: a MenuMorph(520355840) submorphs: #() fullBounds: 434@410 corner: 579@428 color: Color black extension: a MorphExtension (467140608) font: a StrikeFont(Bitmap DejaVu Sans 9 14) emphasis: 0 contents: 'Save and quit' hasFocus: false isEnabled: true subMenu: nil isSelected: false target: WorldState selector: #saveAndQuit arguments: #() icon: Form(16x16x32) MorphicEventDispatcher>>dispatchDefault:with: Receiver: a MorphicEventDispatcher Arguments and temporary variables: anEvent: [497@411 mouseUp 203280 nil] aMorph: a MenuItemMorph(537657344)'Save and quit' localEvt: nil index: 1 child: nil morphs: #() inside: true Receiver's instance variables: lastType: #mouseUp lastDispatch: #dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: Receiver: a MorphicEventDispatcher Arguments and temporary variables: anEvent: [497@411 mouseUp 203280 nil] aMorph: a MenuItemMorph(537657344)'Save and quit' Receiver's instance variables: lastType: #mouseUp lastDispatch: #dispatchDefault:with: MenuItemMorph(Morph)>>processEvent:using: Receiver: a MenuItemMorph(537657344)'Save and quit' Arguments and temporary variables: anEvent: [497@411 mouseUp 203280 nil] defaultDispatcher: a MorphicEventDispatcher Receiver's instance variables: bounds: 434@410 corner: 579@428 owner: a MenuMorph(520355840) submorphs: #() fullBounds: 434@410 corner: 579@428 color: Color black extension: a MorphExtension (467140608) font: a StrikeFont(Bitmap DejaVu Sans 9 14) emphasis: 0 contents: 'Save and quit' hasFocus: false isEnabled: true subMenu: nil isSelected: false target: WorldState selector: #saveAndQuit arguments: #() icon: Form(16x16x32) MorphicEventDispatcher>>dispatchDefault:with: Receiver: a MorphicEventDispatcher Arguments and temporary variables: anEvent: [497@411 mouseUp 203280 nil] aMorph: a MenuMorph(520355840) localEvt: [497@411 mouseUp 203280 nil] index: 15 child: a MenuItemMorph(537657344)'Save and quit' morphs: an Array(an AlignmentMorph(525598720) a MenuItemMorph(481820672)'System...etc... inside: false Receiver's instance variables: lastType: #mouseUp lastDispatch: #dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: Receiver: a MorphicEventDispatcher Arguments and temporary variables: anEvent: [497@411 mouseUp 203280 nil] aMorph: a MenuMorph(520355840) Receiver's instance variables: lastType: #mouseUp lastDispatch: #dispatchDefault:with: MenuMorph(Morph)>>processEvent:using: Receiver: a MenuMorph(520355840) Arguments and temporary variables: anEvent: [497@411 mouseUp 203280 nil] defaultDispatcher: a MorphicEventDispatcher Receiver's instance variables: bounds: 429@182 corner: 584@452 owner: nil submorphs: an Array(an AlignmentMorph(525598720) a MenuItemMorph(481820672)'Sys...etc... fullBounds: 429@182 corner: 584@452 color: (Color r: 0.848 g: 0.848 b: 0.848) extension: a MorphExtension (382468096) [other: (basicColor -> (Color r: 0.745...etc... borderWidth: 2 borderColor: (Color r: 0.595 g: 0.595 b: 0.595) defaultTarget: nil selectedItem: a MenuItemMorph(537657344)'Save and quit' stayUp: false popUpOwner: nil activeSubMenu: nil activatorDockingBar: nil embeddable: nil menuItems: nil --- The full stack --- CodeLoader(Object)>>doesNotUnderstand: #startRetrieval [:req | self startRetrieval; installSourceFile: req contentStream] in CodeLoader>>installSourceFiles Array(SequenceableCollection)>>do: CodeLoader>>installSourceFiles CodeLoader class>>commandLineHandlerAction: [:cl | CodeLoader commandLineHandlerAction: cl] in CodeLoader class>>initialize [:each | | actionBlock conditionBlock | conditionBlock := each key. actionBlock := each value. (conditionBlock value: anUserInput) ifTrue: [actionBlock value: anUserInput]] in CommandLine class(AbstractUserInput class)>>dispatch: [:association | aBlock value: association value] in Dictionary>>valuesDo: [:each | each ifNotNil: [aBlock value: each]] in Dictionary>>associationsDo: Array(SequenceableCollection)>>do: Dictionary>>associationsDo: Dictionary>>valuesDo: Dictionary>>do: CommandLine class(AbstractUserInput class)>>dispatch: CommandLine class>>dispatch CommandLine class>>startUp: [:name | | class | class := self at: name ifAbsent: []. class isNil ifTrue: [removals add: name] ifFalse: [class perform: startUpOrShutDown with: argument]] in SmalltalkImage>>send:toClassesNamedIn:with: OrderedCollection>>do: SmalltalkImage>>send:toClassesNamedIn:with: SmalltalkImage>>processStartUpList: [self processStartUpList: resuming. resuming ifTrue: [self recordStartupStamp]] in SmalltalkImage>>snapshot:andQuit: BlockClosure>>ensure: MorphicUIManager(UIManager)>>boot:during: SmalltalkImage>>snapshot:andQuit: WorldState class>>saveAndQuit [| selArgCount | (selArgCount := selector numArgs) = 0 ifTrue: [target perform: selector] ifFalse: [selArgCount = arguments size ifTrue: [target perform: selector withArguments: arguments] ifFalse: [target perform: selector withArguments: (arguments copyWith: evt)]]] in MenuItemMorph>>invokeWithEvent: BlockClosure>>ensure: CursorWithMask(Cursor)>>showWhile: MenuItemMorph>>invokeWithEvent: MenuItemMorph>>mouseUp: MenuItemMorph>>handleMouseUp: MouseButtonEvent>>sentTo: MenuItemMorph(Morph)>>handleEvent: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: MenuItemMorph(Morph)>>processEvent:using: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: MenuMorph(Morph)>>processEvent:using: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MenuMorph(Morph)>>processEvent: MenuMorph>>handleFocusEvent: [ActiveHand := self. ActiveEvent := anEvent. result := focusHolder handleFocusEvent: (anEvent transformedBy: (focusHolder transformedFrom: self))] in HandMorph>>sendFocusEvent:to:clear: [aBlock value] in PasteUpMorph>>becomeActiveDuring: BlockClosure>>on:do: PasteUpMorph>>becomeActiveDuring: HandMorph>>sendFocusEvent:to:clear: HandMorph>>sendEvent:focus:clear: HandMorph>>sendMouseEvent: HandMorph>>handleEvent: HandMorph>>processEvents [:h | ActiveHand := h. h processEvents. ActiveHand := nil] in WorldState>>doOneCycleNowFor: Array(SequenceableCollection)>>do: WorldState>>handsDo: WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: PasteUpMorph>>doOneCycle [[World doOneCycle. Processor yield. false] whileFalse. nil] in Project class>>spawnNewProcess [self value. Processor terminateActive] in BlockClosure>>newProcess ------------------------------------------------------------ Processes and their stacks: 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. 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 StartupUIManager(NonInteractiveUIManager)>>quitFrom:withMessage: [logStream := self openLog. aMonadicBlock value: logStream] in SmalltalkImage>>logDuring: BlockClosure>>ensure: SmalltalkImage>>logDuring: [Smalltalk logError: aString inContext: aContext. 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 StartupUIManager(NonInteractiveUIManager)>>quitFrom:withMessage: BlockClosure>>ensure: StartupUIManager(NonInteractiveUIManager)>>quitFrom:withMessage: StartupUIManager(NonInteractiveUIManager)>>unhandledErrorDefaultAction: UnhandledError>>defaultAction UndefinedObject>>handleSignal: MethodContext(ContextPart)>>handleSignal: UnhandledError(Exception)>>signal UnhandledError class>>signalForException: MessageNotUnderstood(Error)>>defaultAction MessageNotUnderstood>>defaultAction UndefinedObject>>handleSignal: MessageNotUnderstood(Exception)>>pass [:ex | ActiveWorld := priorWorld. ActiveEvent := priorEvent. ActiveHand := priorHand. ex pass] in PasteUpMorph>>becomeActiveDuring: BlockClosure>>cull: ------------------------------ Process: a Process in Delay class>>handleTimerEvent stack: Delay class>>handleTimerEvent Delay class>>runTimerEventLoop [self runTimerEventLoop] in Delay class>>startTimerEventLoop [self value. Processor terminateActive] in BlockClosure>>newProcess ------------------------------ Process: a Process in [self value. Processor terminateActive] in BlockClosure>>newProcess stack: [self value. Processor terminateActive] in BlockClosure>>newProcess ------------------------------ Process: a Process in [self value. Processor terminateActive] in BlockClosure>>newProcess stack: [self value. Processor terminateActive] in BlockClosure>>newProcess ------------------------------ Process: a Process in [self value. Processor terminateActive] in BlockClosure>>newProcess stack: [self value. Processor terminateActive] in BlockClosure>>newProcess ------------------------------ Process: a Process in [self value. Processor terminateActive] in BlockClosure>>newProcess stack: [self value. Processor terminateActive] in BlockClosure>>newProcess ------------------------------ Process: a Process in SmalltalkImage>>lowSpaceWatcher stack: SmalltalkImage>>lowSpaceWatcher [self lowSpaceWatcher] in SmalltalkImage>>installLowSpaceWatcher [self value. Processor terminateActive] in BlockClosure>>newProcess ------------------------------ Process: a Process in [self value. Processor terminateActive] in BlockClosure>>newProcess stack: [self value. Processor terminateActive] in BlockClosure>>newProcess ------------------------------ Process: a Process in [delaySemaphore wait] in Delay>>wait stack: [delaySemaphore wait] in Delay>>wait BlockClosure>>ifCurtailed: Delay>>wait InputEventPollingFetcher>>waitForInput InputEventPollingFetcher(InputEventFetcher)>>eventLoop [self eventLoop] in InputEventPollingFetcher(InputEventFetcher)>>installEventLoop [self value. Processor terminateActive] in BlockClosure>>newProcess ------------------------------ Process: a Process in WeakArray class>>finalizationProcess stack: WeakArray class>>finalizationProcess [self finalizationProcess] in WeakArray class>>restartFinalizationProcess [self value. Processor terminateActive] in BlockClosure>>newProcess ------------------------------
