I opened http://code.google.com/p/pharo/issues/detail?id=830 I think other UTF-8 issues are different: Two for FileBrowser : http://code.google.com/p/pharo/issues/detail?id=370 http://code.google.com/p/pharo/issues/detail?id=513 One about VM crash : http://code.google.com/p/pharo/issues/detail?id=744 Nicolas 2009/5/19 Stéphane Ducasse <stephane.ducasse@inria.fr>:
thanks for making progress on this front.
On May 19, 2009, at 6:40 PM, Nicolas Cellier wrote:
From what I see in a 10304, all these methods had a non ASCII character in comment:
{Object>>#doesNotUnderstand:. SystemNavigation>>#browseMethodsWhoseNamesContain:. Utilities class>>#changeStampPerSe. Utilities class>>#methodsWithInitials:} collect: [:e | (e getSourceFromFile select: [:s | s charCode > 127]) asArray collect: [:c | c charCode]] #(#(160 160) #(172 143 172 143) #(183) #(246)) That is:
an Array(a Text for ' ' a Text for '¬â¬â' a Text for '·' a Text for 'ö') First are non breaking space. Last but ones are not rendered same in Squeak.
These four methods are changed in: - Kernel-stephane_ducasse.renggli.319.mcz - System-Support-stephane_ducasse.20.mcz If I merge 10305 manually, I get some decompiled code in the merge window. So there might be a problem already either in Monticello or in the .mcz. After the merge, there is decomipled code in the changes and no error when executing above code.
If I load instead of merging, then I also get the decompiled code in the change log, so I can't reproduce completely the faulty behavior (having an invalid utf-8 notifier), maybe because the process is no the same when there are conflicts...
If I extract .mcz contents, I can read contents from FileBrowser. But it does not use an UTF-8 encoding... I can't say if the encoding is macRoman or ISO8859L1 or CP1252 or what, but what I can say is that the source.st is not UTF-8 encoded.
So without searching further I guess here lies the problems: transfer of raw bytes from non UTF-8 .mcz/source.st to the UTF-8 .changes change-log...
Every time we'll modify a method with a Character code > 127, we will likely create an invalid UTF-8 bug or get some decompiled code, or corrupt source code in extreme case...
Could the Monticello / UTF-8 experts confirm my guess ?
Nicolas
2009/5/17 Nicolas Cellier <nicolas.cellier.aka.nice@gmail.com>:
OK,
{Object>>#doesNotUnderstand:. SystemNavigation>>#browseMethodsWhoseNamesContain:. Utilities class>>#changeStampPerSe. Utilities class>>#methodsWithInitials:} collect: [:e | e getSourceFromFile].
does not fail for me, BUT all these sources look like decompileString. I guess this is dating from the condenseChanges that occured in #update10298 Change log prior to this update should have the problem.
Nicolas
2009/5/17 Tudor Girba <girba@iam.unibe.ch>:
Hi,
I ran the snippet you sent on both 304cl and 306cl and I get the following list:
Object->#doesNotUnderstand: SystemNavigation->#browseMethodsWhoseNamesContain: Utilities class->#changeStampPerSe Utilities class->#methodsWithInitials:
Indeed, most of the annoyances are due to the Object>>doesNotUnderstand: because when I get a DNU I am stuck (and I feel like in Java :)).
I am not sure I understand if there is a fix to the problem.
Cheers, Doru
On 17 May 2009, at 12:06, Nicolas Cellier wrote:
There's something weird... If you hit var (UndefinedObject) doesNotUnderstand: #value: that means there were a problem the first time.
Unfortunately, due to bug in MethodContext tempNames, we don't know the class and selector guilty. From the set of selectors I can see this is Object. From the source file position, I cannot say anything because I do not have same change log history (sorry, own image).
You could try (SourceFiles at: 2) readOnlyCopy position: 10007336; nextChunk
2009/5/17 Stéphane Ducasse <stephane.ducasse@inria.fr>:
sorry for not checking either. When I run this code I indeed do not have a problem on 10306cl
stef
On May 17, 2009, at 11:36 AM, Nicolas Cellier wrote:
Sure, a key stroke error, it's bar value:, not var value:, This @!* workspace takes it as global without a warning....
2009/5/17 Stéphane Ducasse <stephane.ducasse@inria.fr>:
Nicolas
when I run your script on the license looking for image I got using 10306cl
I get the following error:
VM: Mac OS - intel - 1056 - Squeak3.8.1 of '28 Aug 2006' [latest update: #6747] Squeak VM 4.1.1b2 Image: Pharo0.1 [Latest update: #10306]
SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir /Data/squeak4.0-relicenseTools/history Trusted Dir /foobar/tooBar/forSqueak/bogus Untrusted Dir /Users/ducasse/Library/Preferences/Squeak/ Internet/My Squeak
UndefinedObject(Object)>>doesNotUnderstand: #value: Receiver: nil Arguments and temporary variables: <<error during printing> Receiver's instance variables: nil
[] in [] in [] in [] in UndefinedObject>>DoIt Receiver: nil Arguments and temporary variables: <<error during printing> Receiver's instance variables: nil
BlockClosure>>valueWithPossibleArgs: Receiver: [closure] in [] in [] in [] in UndefinedObject>>DoIt Arguments and temporary variables: anArray: an Array('Error: Invalid utf8 input detected' an UTF8TextConverter) Receiver's instance variables: outerContext: [] in [] in [] in UndefinedObject>>DoIt startpc: 183 numArgs: 0
[] in BlockClosure>>ifError: Receiver: [closure] in [] in [] in [] in UndefinedObject>>DoIt Arguments and temporary variables: errorHandlerBlock: Error: Invalid utf8 input detected ex: [closure] in [] in [] in [] in UndefinedObject>>DoIt Receiver's instance variables: outerContext: [] in [] in [] in UndefinedObject>>DoIt startpc: 171 numArgs: 0
BlockClosure>>valueWithPossibleArgs: Receiver: [closure] in BlockClosure>>ifError: Arguments and temporary variables: anArray: an Array(Error: Invalid utf8 input detected) Receiver's instance variables: outerContext: BlockClosure>>ifError: startpc: 40 numArgs: 1
[] in MethodContext(ContextPart)>>handleSignal: Receiver: BlockClosure>>on:do: Arguments and temporary variables: <<error during printing> Receiver's instance variables: sender: BlockClosure>>ifError: pc: 17 stackp: 3 method: a CompiledMethod (2306) closureOrNil: nil receiver: [closure] in [] in [] in [] in UndefinedObject>>DoIt
BlockClosure>>ensure: Receiver: [closure] in MethodContext(ContextPart)>>handleSignal: Arguments and temporary variables: aBlock: [closure] in MethodContext(ContextPart)>>handleSignal: returnValue: nil b: nil Receiver's instance variables: outerContext: MethodContext(ContextPart)>>handleSignal: startpc: 90 numArgs: 0
MethodContext(ContextPart)>>handleSignal: Receiver: BlockClosure>>on:do: Arguments and temporary variables: exception: Error: Invalid utf8 input detected val: nil Receiver's instance variables: sender: BlockClosure>>ifError: pc: 17 stackp: 3 method: a CompiledMethod (2306) closureOrNil: nil receiver: [closure] in [] in [] in [] in UndefinedObject>>DoIt
Error(Exception)>>signal Receiver: Error: Invalid utf8 input detected Arguments and temporary variables:
Receiver's instance variables: messageText: 'Invalid utf8 input detected' tag: nil signalContext: Error(Exception)>>signal handlerContext: BlockClosure>>on:do: outerContext: nil
Error(Exception)>>signal: Receiver: Error: Invalid utf8 input detected Arguments and temporary variables: signalerText: 'Invalid utf8 input detected' Receiver's instance variables: messageText: 'Invalid utf8 input detected' tag: nil signalContext: Error(Exception)>>signal handlerContext: BlockClosure>>on:do: outerContext: nil
UTF8TextConverter(Object)>>error: Receiver: an UTF8TextConverter Arguments and temporary variables: aString: 'Invalid utf8 input detected' Receiver's instance variables: an UTF8TextConverter
UTF8TextConverter>>errorMalformedInput Receiver: an UTF8TextConverter Arguments and temporary variables:
Receiver's instance variables: an UTF8TextConverter
UTF8TextConverter>>nextFromStream: Receiver: an UTF8TextConverter Arguments and temporary variables: aStream: MultiByteFileStream: '/Data/squeak4.0- relicenseTools/ history/Pharo0.1C...etc... character1: $ value1: 160 character2: Character tab value2: 9 unicode: nil character3: Character tab value3: 9 character4: nil value4: nil Receiver's instance variables: an UTF8TextConverter
MultiByteFileStream>>next Receiver: MultiByteFileStream: '/Data/squeak4.0- relicenseTools/ history/Pharo0.1Core-10306clreadytowo...etc... Arguments and temporary variables: char: nil secondChar: nil state: nil Receiver's instance variables:
MultiByteFileStream(PositionableStream)>>nextChunk Receiver: MultiByteFileStream: '/Data/squeak4.0- relicenseTools/ history/Pharo0.1Core-10306clreadytowo...etc... Arguments and temporary variables: terminator: $! out: a WriteStream 'doesNotUnderstand: aMessage "Handle the fact that there ...etc... ch: Character cr Receiver's instance variables:
MultiByteFileStream(PositionableStream)>>nextChunkText Receiver: MultiByteFileStream: '/Data/squeak4.0- relicenseTools/ history/Pharo0.1Core-10306clreadytowo...etc... Arguments and temporary variables: string: nil runsRaw: nil strm: nil runs: nil peek: nil pos: nil Receiver's instance variables:
[] in RemoteString>>text Receiver: a RemoteString Arguments and temporary variables: theFile: MultiByteFileStream: '/Data/squeak4.0- relicenseTools/ history/Pharo0.1C...etc... Receiver's instance variables: sourceFileNumber: 2 filePositionHi: 10007336
BlockClosure>>ensure: Receiver: [closure] in RemoteString>>text Arguments and temporary variables: aBlock: [closure] in RemoteString>>text returnValue: nil b: nil Receiver's instance variables: outerContext: RemoteString>>text startpc: 72 numArgs: 0
RemoteString>>text Receiver: a RemoteString Arguments and temporary variables: theFile: MultiByteFileStream: '/Data/squeak4.0- relicenseTools/ history/Pharo0.1C...etc... Receiver's instance variables: sourceFileNumber: 2 filePositionHi: 10007336
CompiledMethod>>getSourceFromFile Receiver: a CompiledMethod (838) Arguments and temporary variables: position: 10007336 Receiver's instance variables: a CompiledMethod (838)
[] in [] in [] in [] in UndefinedObject>>DoIt Receiver: nil Arguments and temporary variables: <<error during printing> Receiver's instance variables: nil
BlockClosure>>on:do: Receiver: [closure] in [] in [] in [] in UndefinedObject>>DoIt Arguments and temporary variables: exception: Error handlerAction: [closure] in BlockClosure>>ifError: handlerActive: false Receiver's instance variables: outerContext: [] in [] in [] in UndefinedObject>>DoIt startpc: 171 numArgs: 0
BlockClosure>>ifError: Receiver: [closure] in [] in [] in [] in UndefinedObject>>DoIt Arguments and temporary variables: errorHandlerBlock: [closure] in [] in [] in [] in UndefinedObject>>DoIt Receiver's instance variables: outerContext: [] in [] in [] in UndefinedObject>>DoIt startpc: 171 numArgs: 0
[] in [] in [] in UndefinedObject>>DoIt Receiver: nil Arguments and temporary variables: <<error during printing> Receiver's instance variables: nil
IdentitySet(Set)>>do: Receiver: an IdentitySet(#name #inheritsFromAnyIn: #asOop #isWebBrowser #storeOnStream: #wantsDroppe...etc... Arguments and temporary variables: aBlock: [closure] in [] in [] in UndefinedObject>>DoIt index: 394 each: #doesNotUnderstand: indexLimiT: 498 Receiver's instance variables: tally: 373 array: #(nil nil #name nil #inheritsFromAnyIn: #asOop nil nil #isWebBrowser nil...etc...
[] in [] in UndefinedObject>>DoIt Receiver: nil Arguments and temporary variables: <<error during printing> Receiver's instance variables: nil
[] in ProtoObject class(Behavior)>>allSubclassesDoGently: Receiver: ProtoObject Arguments and temporary variables: aBlock: Object cl: [closure] in [] in UndefinedObject>>DoIt Receiver's instance variables: superclass: nil methodDict: a MethodDictionary(#'=='->a CompiledMethod (602) #become:->a Compil...etc... format: 2 instanceVariables: nil organization: ('apply primitives' tryNamedPrimitive tryNamedPrimitive: tryNamed...etc... subclasses: {Object . ObjectOut . ImageSegmentRootStub . MessageCatcher . TestC...etc... name: #ProtoObject classPool: nil sharedPools: nil environment: nil category: #'Kernel-Objects' traitComposition: nil localSelectors: nil
Array(SequenceableCollection)>>do: Receiver: {Object . ObjectOut . ImageSegmentRootStub . MessageCatcher . TestCoverage} Arguments and temporary variables: aBlock: [closure] in ProtoObject class(Behavior)>>allSubclassesDoGently: index: 1 indexLimiT: 5 Receiver's instance variables: {Object . ObjectOut . ImageSegmentRootStub . MessageCatcher . TestCoverage}
ProtoObject class(Class)>>subclassesDoGently: Receiver: ProtoObject Arguments and temporary variables: aBlock: [closure] in ProtoObject class(Behavior)>>allSubclassesDoGently: Receiver's instance variables: superclass: nil methodDict: a MethodDictionary(#'=='->a CompiledMethod (602) #become:->a Compil...etc... format: 2 instanceVariables: nil organization: ('apply primitives' tryNamedPrimitive tryNamedPrimitive: tryNamed...etc... subclasses: {Object . ObjectOut . ImageSegmentRootStub . MessageCatcher . TestC...etc... name: #ProtoObject classPool: nil sharedPools: nil environment: nil category: #'Kernel-Objects' traitComposition: nil localSelectors: nil
ProtoObject class(Behavior)>>allSubclassesDoGently: Receiver: ProtoObject Arguments and temporary variables: aBlock: [closure] in [] in UndefinedObject>>DoIt Receiver's instance variables: superclass: nil methodDict: a MethodDictionary(#'=='->a CompiledMethod (602) #become:->a Compil...etc... format: 2 instanceVariables: nil organization: ('apply primitives' tryNamedPrimitive tryNamedPrimitive: tryNamed...etc... subclasses: {Object . ObjectOut . ImageSegmentRootStub . MessageCatcher . TestC...etc... name: #ProtoObject classPool: nil sharedPools: nil environment: nil category: #'Kernel-Objects' traitComposition: nil localSelectors: nil
SystemNavigation>>allBehaviorsDo: Receiver: a SystemNavigation Arguments and temporary variables: aBlock: [closure] in [] in UndefinedObject>>DoIt Receiver's instance variables: browserClass: nil hierarchyBrowserClass: nil
[] in UndefinedObject>>DoIt Receiver: nil Arguments and temporary variables: <<error during printing> Receiver's instance variables: nil
[] in ProgressInitiationException>>defaultAction Receiver: ProgressInitiationException Arguments and temporary variables: progress: [closure] in SystemProgressMorph>>label:min:max: result: #(nil) Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [closure] in UndefinedObject>>DoIt maxVal: 3874 minVal: 0 aPoint: 840@306 progressTitle: 'Searching UTF-8 Problems...'
BlockClosure>>ensure: Receiver: [closure] in ProgressInitiationException>>defaultAction Arguments and temporary variables: aBlock: [closure] in ProgressInitiationException>>defaultAction returnValue: nil b: nil Receiver's instance variables: outerContext: ProgressInitiationException>>defaultAction startpc: 49 numArgs: 0
ProgressInitiationException>>defaultAction Receiver: ProgressInitiationException Arguments and temporary variables: progress: [closure] in SystemProgressMorph>>label:min:max: result: #(nil) Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [closure] in UndefinedObject>>DoIt maxVal: 3874 minVal: 0 aPoint: 840@306 progressTitle: 'Searching UTF-8 Problems...'
UndefinedObject>>handleSignal: Receiver: nil Arguments and temporary variables: exception: ProgressInitiationException Receiver's instance variables: nil
MethodContext(ContextPart)>>handleSignal: Receiver: BlockClosure>>on:do: Arguments and temporary variables: exception: ProgressInitiationException val: nil Receiver's instance variables: sender: PasteUpMorph>>becomeActiveDuring: pc: 17 stackp: 3 method: a CompiledMethod (2306) closureOrNil: nil receiver: [closure] in PasteUpMorph>>becomeActiveDuring:
MethodContext(ContextPart)>>handleSignal: Receiver: BlockClosure>>on:do: Arguments and temporary variables: exception: ProgressInitiationException val: nil Receiver's instance variables: sender: TextMorphEditor(ParagraphEditor)>>evaluateSelection pc: 17 stackp: 3 method: a CompiledMethod (2306) closureOrNil: nil receiver: [closure] in TextMorphEditor(ParagraphEditor)>>evaluateSelection
ProgressInitiationException(Exception)>>signal Receiver: ProgressInitiationException Arguments and temporary variables:
Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [closure] in UndefinedObject>>DoIt maxVal: 3874 minVal: 0 aPoint: 840@306 progressTitle: 'Searching UTF-8 Problems...'
--- The full stack --- UndefinedObject(Object)>>doesNotUnderstand: #value: [] in [] in [] in [] in UndefinedObject>>DoIt BlockClosure>>valueWithPossibleArgs: [] in BlockClosure>>ifError: BlockClosure>>valueWithPossibleArgs: [] in MethodContext(ContextPart)>>handleSignal: BlockClosure>>ensure: MethodContext(ContextPart)>>handleSignal: Error(Exception)>>signal Error(Exception)>>signal: UTF8TextConverter(Object)>>error: UTF8TextConverter>>errorMalformedInput UTF8TextConverter>>nextFromStream: MultiByteFileStream>>next MultiByteFileStream(PositionableStream)>>nextChunk MultiByteFileStream(PositionableStream)>>nextChunkText [] in RemoteString>>text BlockClosure>>ensure: RemoteString>>text CompiledMethod>>getSourceFromFile [] in [] in [] in [] in UndefinedObject>>DoIt BlockClosure>>on:do: BlockClosure>>ifError: [] in [] in [] in UndefinedObject>>DoIt IdentitySet(Set)>>do: [] in [] in UndefinedObject>>DoIt [] in ProtoObject class(Behavior)>>allSubclassesDoGently: Array(SequenceableCollection)>>do: ProtoObject class(Class)>>subclassesDoGently: ProtoObject class(Behavior)>>allSubclassesDoGently: SystemNavigation>>allBehaviorsDo: [] in UndefinedObject>>DoIt [] in ProgressInitiationException>>defaultAction BlockClosure>>ensure: ProgressInitiationException>>defaultAction UndefinedObject>>handleSignal: MethodContext(ContextPart)>>handleSignal: MethodContext(ContextPart)>>handleSignal: ProgressInitiationException(Exception)>>signal - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ProgressInitiationException>>display:at:from:to:during: ProgressInitiationException class>>display:at:from:to:during: ByteString(String)>>displayProgressAt:from:to:during: UndefinedObject>>DoIt Compiler>>evaluate:in:to:notifying:ifFail:logged: [] in TextMorphEditor(ParagraphEditor)>>evaluateSelection BlockClosure>>on:do: TextMorphEditor(ParagraphEditor)>>evaluateSelection TextMorphEditor(ParagraphEditor)>>doIt [] in TextMorphEditor(ParagraphEditor)>>doIt: TextMorphEditor(ParagraphEditor)>>terminateAndInitializeAround: TextMorphEditor(ParagraphEditor)>>doIt: TextMorphEditor(ParagraphEditor)>>dispatchOnKeyEvent:with: TextMorphEditor>>dispatchOnKeyEvent:with: TextMorphEditor(ParagraphEditor)>>keystroke: TextMorphEditor>>keystroke: [] in TextMorphForEditView(TextMorph)>>keyStroke: TextMorphForEditView(TextMorph)>>handleInteraction: TextMorphForEditView>>handleInteraction: TextMorphForEditView(TextMorph)>>keyStroke: TextMorphForEditView>>keyStroke: TextMorphForEditView(TextMorph)>>handleKeystroke: KeyboardEvent>>sentTo: TextMorphForEditView(Morph)>>handleEvent: TextMorphForEditView(Morph)>>handleFocusEvent: [] in HandMorph>>sendFocusEvent:to:clear: [] in PasteUpMorph>>becomeActiveDuring: BlockClosure>>on:do: PasteUpMorph>>becomeActiveDuring: HandMorph>>sendFocusEvent:to:clear: HandMorph>>sendEvent:focus:clear: HandMorph>>sendKeyboardEvent: HandMorph>>handleEvent: HandMorph>>processEvents [] in WorldState>>doOneCycleNowFor: Array(SequenceableCollection)>>do: WorldState>>handsDo: WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: PasteUpMorph>>doOneCycle [] in Project class>>spawnNewProcess [] in BlockClosure>>newProcess
On May 17, 2009, at 11:13 AM, Nicolas Cellier wrote:
One solution would be to use getSource rather than getSourceFromFile. However, with following code I detected no problem in my pharo- core copy (10281 updated to 10306)
| problems total | problems := OrderedCollection new. total := 0. SystemNavigation default allBehaviorsDo: [:cl | total := total + 1]. 'Searching UTF-8 Problems...' displayProgressAt: Sensor cursorPoint from: 0 to: total during: [:bar | | count | count := 0. SystemNavigation default allBehaviorsDo: [:cl | bar value: (count := count + 1). cl selectors do: [:sel | [(cl compiledMethodAt: sel) getSourceFromFile] ifError: [ var value: 'last problem found ' , cl name , '>>#' , sel. problems add: cl->sel]]]]. ^problems
2009/5/17 Stéphane Ducasse <stephane.ducasse@inria.fr>:
yes same here.
On May 17, 2009, at 2:10 AM, Tudor Girba wrote:
Hi,
Recently I encounter a strange error: - I sometimes get a debugger due to some problems in my code - when I try to investigate the trace, I get another debugger saying that "Invalid utf8 input detected'"
This second debugger I can investigate, the previous not. It looks like something got messed up with the text conversion of the sources.
I am working on 10306 using the 4.1.1b2 VM on Mac. The code I am working on is loaded from squeaksource (Moose, Glamour, Mondrian).
Anyone can confirm this problem?
Cheers, Doru
----ERROR REPORT----
'17 May 2009 2:05:50 am
VM: Mac OS - intel - 1056 - Squeak3.8.1 of ''28 Aug 2006'' [latest update: #6747] Squeak VM 4.1.1b2 Image: Pharo0.1 [Latest update: #10306]
SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir /Users/girba/Work/Code/squeakingmoose Trusted Dir /foobar/tooBar/forSqueak/bogus Untrusted Dir /Users/girba/Library/Preferences/Squeak/ Internet/ My Squeak
UTF8TextConverter(Object)>>error: Receiver: an UTF8TextConverter Arguments and temporary variables: aString: ''Invalid utf8 input detected'' Receiver''s instance variables: an UTF8TextConverter
UTF8TextConverter>>errorMalformedInput Receiver: an UTF8TextConverter Arguments and temporary variables:
Receiver''s instance variables: an UTF8TextConverter
UTF8TextConverter>>nextFromStream: Receiver: an UTF8TextConverter Arguments and temporary variables: aStream: MultiByteFileStream: ''/Users/girba/ Work/Code/ squeakingmoose/moose.chan...etc... character1: $ value1: 160 character2: Character tab value2: 9 unicode: nil character3: Character tab value3: 9 character4: nil value4: nil Receiver''s instance variables: an UTF8TextConverter
MultiByteFileStream>>next Receiver: MultiByteFileStream: ''/Users/girba/Work/Code/ squeakingmoose/moose.changes'' Arguments and temporary variables: char: nil secondChar: nil state: nil Receiver''s instance variables:
MultiByteFileStream(PositionableStream)>>nextChunk Receiver: MultiByteFileStream: ''/Users/girba/Work/Code/ squeakingmoose/moose.changes'' Arguments and temporary variables: terminator: $! out: a WriteStream ''doesNotUnderstand: aMessage "Handle the fact that there ...etc... ch: Character cr Receiver''s instance variables:
MultiByteFileStream(PositionableStream)>>nextChunkText Receiver: MultiByteFileStream: ''/Users/girba/Work/Code/ squeakingmoose/moose.changes'' Arguments and temporary variables: string: nil runsRaw: nil strm: nil runs: nil peek: nil pos: nil Receiver''s instance variables:
[] in RemoteString>>text Receiver: a RemoteString Arguments and temporary variables: theFile: MultiByteFileStream: ''/Users/girba/ Work/Code/ squeakingmoose/moose.chan...etc... Receiver''s instance variables: sourceFileNumber: 2 filePositionHi: 10007336
BlockClosure>>ensure: Receiver: [closure] in RemoteString>>text Arguments and temporary variables: aBlock: [closure] in RemoteString>>text returnValue: nil b: nil Receiver''s instance variables: outerContext: RemoteString>>text startpc: 72 numArgs: 0
RemoteString>>text Receiver: a RemoteString Arguments and temporary variables: theFile: MultiByteFileStream: ''/Users/girba/ Work/Code/ squeakingmoose/moose.chan...etc... Receiver''s instance variables: sourceFileNumber: 2 filePositionHi: 10007336
CompiledMethod>>getSourceFromFile Receiver: a CompiledMethod (838) Arguments and temporary variables: position: 10007336 Receiver''s instance variables: a CompiledMethod (838)
CompiledMethod>>methodNode Receiver: a CompiledMethod (838) Arguments and temporary variables: aClass: Object source: nil Receiver''s instance variables: a CompiledMethod (838)
[] in DebuggerMethodMap class>>forMethod: Receiver: DebuggerMethodMap Arguments and temporary variables: aMethod: a CompiledMethod (838) Receiver''s instance variables: superclass: Object methodDict: a MethodDictionary(#abstractSourceMap-
a CompiledMethod (1628) #for...etc... format: 140 instanceVariables: #(''timestamp'' ''methodReference'' ''methodNode'' ''abstractSource...etc... organization: (''initialize-release'' forMethod:methodNode:) (''accessing'' markRec...etc... subclasses: {DebuggerMethodMapForBlueBookMethods . DebuggerMethodMapForClosureC...etc... name: #DebuggerMethodMap classPool: a Dictionary(#MapCache->a WeakIdentityKeyDictionary(a CompiledMethod...etc... sharedPools: nil environment: Smalltalk category: #''Tools-Debugger'' traitComposition: nil localSelectors: nil
WeakIdentityKeyDictionary(Dictionary)>>at:ifAbsent: Receiver: a WeakIdentityKeyDictionary(a CompiledMethod (126)-
a DebuggerMethodMapForClosureCompiledM...etc... Arguments and temporary variables: key: a CompiledMethod (838) aBlock: [closure] in DebuggerMethodMap class>>forMethod: assoc: nil Receiver''s instance variables: tally: 16 array: an Array(nil nil a CompiledMethod (2402)->a DebuggerMethodMapForClosureC...etc...
DebuggerMethodMap class>>forMethod: Receiver: DebuggerMethodMap Arguments and temporary variables: aMethod: a CompiledMethod (838) Receiver''s instance variables: superclass: Object methodDict: a MethodDictionary(#abstractSourceMap-
a CompiledMethod (1628) #for...etc... format: 140 instanceVariables: #(''timestamp'' ''methodReference'' ''methodNode'' ''abstractSource...etc... organization: (''initialize-release'' forMethod:methodNode:) (''accessing'' markRec...etc... subclasses: {DebuggerMethodMapForBlueBookMethods . DebuggerMethodMapForClosureC...etc... name: #DebuggerMethodMap classPool: a Dictionary(#MapCache->a WeakIdentityKeyDictionary(a CompiledMethod...etc... sharedPools: nil environment: Smalltalk category: #''Tools-Debugger'' traitComposition: nil localSelectors: nil
CompiledMethod>>debuggerMap Receiver: a CompiledMethod (838) Arguments and temporary variables:
Receiver''s instance variables: a CompiledMethod (838)
OTClosureContextNode>>selection Receiver: an OTClosureContextNode Arguments and temporary variables:
Receiver''s instance variables: metaNode: context
navigation: an OBDefaultEdgeNavigation process: a Process in OTToolset class>>debug:context:label:contents:fullView: context: Model class(Object)>>doesNotUnderstand: #fullName parseTree: nil sourceMap: nil debuggerMap: nil
OTClosureContextNode(OTContextNode)>>definition Receiver: an OTClosureContextNode Arguments and temporary variables:
Receiver''s instance variables: metaNode: context
navigation: an OBDefaultEdgeNavigation process: a Process in OTToolset class>>debug:context:label:contents:fullView: context: Model class(Object)>>doesNotUnderstand: #fullName parseTree: nil sourceMap: nil debuggerMap: nil
OTDefinitionPanel(OBDefinitionPanel)>>node: Receiver: an OTDefinitionPanel Arguments and temporary variables: aNode: an OTClosureContextNode Receiver''s instance variables: browser: an OTDebugger definition: nil selection: nil
OTDefinitionPanel(OBDefinitionPanel)>>selectionChanged: Receiver: an OTDefinitionPanel Arguments and temporary variables: ann: an OBSelectionChanged Receiver''s instance variables: browser: an OTDebugger definition: nil selection: nil
MessageSend>>valueWithArguments: Receiver: MessageSend(#selectionChanged: -> an OTDefinitionPanel) Arguments and temporary variables: anArray: an Array(an OBSelectionChanged) Receiver''s instance variables: receiver: an OTDefinitionPanel selector: #selectionChanged: arguments: #()
[] in ActionSequence>>valueWithArguments: Receiver: #(MessageSend(#relabel: -> an OTDebugger) MessageSend(#selectionChanged: -> an OBColumnPan...etc... Arguments and temporary variables: anArray: MessageSend(#selectionChanged: -> an OTDefinitionPanel) answer: an Array(an OBSelectionChanged) each: an Array(an OBFixedButtonPanel) Receiver''s instance variables: #(MessageSend(#relabel: -> an OTDebugger) MessageSend(#selectionChanged: -> an OBColumnPan...etc...
ActionSequence(SequenceableCollection)>>do: Receiver: #(MessageSend(#relabel: -> an OTDebugger) MessageSend(#selectionChanged: -> an OBColumnPan...etc... Arguments and temporary variables: aBlock: [closure] in ActionSequence>>valueWithArguments: index: 4 indexLimiT: 6 Receiver''s instance variables: #(MessageSend(#relabel: -> an OTDebugger) MessageSend(#selectionChanged: -> an OBColumnPan...etc...
ActionSequence>>valueWithArguments: Receiver: #(MessageSend(#relabel: -> an OTDebugger) MessageSend(#selectionChanged: -> an OBColumnPan...etc... Arguments and temporary variables: anArray: an Array(an OBSelectionChanged) answer: an Array(an OBFixedButtonPanel) Receiver''s instance variables: #(MessageSend(#relabel: -> an OTDebugger) MessageSend(#selectionChanged: -> an OBColumnPan...etc...
[] in OBAnnouncer>>announce: Receiver: an OBAnnouncer Arguments and temporary variables: <<error during printing> Receiver''s instance variables: subscriptions: an IdentityDictionary(OBAboutToChange-
an ActionSequence(Message...etc...
[] in IdentityDictionary(Dictionary)>>keysAndValuesDo: Receiver: an IdentityDictionary(OBAboutToChange->an ActionSequence(MessageSend(#aboutToChange: -> an...etc... Arguments and temporary variables: aBlock: OBSelectionChanged-
#(MessageSend(#relabel: -> an OTDebugger) MessageSe...etc... assoc: [closure] in OBAnnouncer>>announce: Receiver''s instance variables: tally: 12 array: {OBNodeCreated->an ActionSequence(MessageSend(#selectNode: - an OBColum...etc...
IdentityDictionary(Set)>>do: Receiver: an IdentityDictionary(OBAboutToChange->an ActionSequence(MessageSend(#aboutToChange: -> an...etc... Arguments and temporary variables: aBlock: [closure] in IdentityDictionary(Dictionary)>>keysAndValuesDo: index: 6 each: OBSelectionChanged->#(MessageSend(#relabel: -
an OTDebugger) MessageSend...etc... indexLimiT: 20 Receiver''s instance variables: tally: 12 array: {OBNodeCreated->an ActionSequence(MessageSend(#selectNode: - an OBColum...etc...
IdentityDictionary(Dictionary)>>associationsDo: Receiver: an IdentityDictionary(OBAboutToChange->an ActionSequence(MessageSend(#aboutToChange: -> an...etc... Arguments and temporary variables: aBlock: [closure] in IdentityDictionary(Dictionary)>>keysAndValuesDo: Receiver''s instance variables: tally: 12 array: {OBNodeCreated->an ActionSequence(MessageSend(#selectNode: -
an OBColum...etc...
IdentityDictionary(Dictionary)>>keysAndValuesDo: Receiver: an IdentityDictionary(OBAboutToChange->an ActionSequence(MessageSend(#aboutToChange: -> an...etc... Arguments and temporary variables: aBlock: [closure] in OBAnnouncer>>announce: Receiver''s instance variables: tally: 12 array: {OBNodeCreated->an ActionSequence(MessageSend(#selectNode: -
an OBColum...etc...
OBAnnouncer>>announce: Receiver: an OBAnnouncer Arguments and temporary variables: anObject: an OBSelectionChanged ann: an OBSelectionChanged Receiver''s instance variables: subscriptions: an IdentityDictionary(OBAboutToChange-
an ActionSequence(Message...etc...
OBColumnPanel>>jumpTo: Receiver: an OBColumnPanel Arguments and temporary variables: aNode: an OTClosureContextNode column: an OBColumn(Model class(Object)>>doesNotUnderstand: #fullName) Receiver''s instance variables: browser: an OTDebugger root: an OTProcessNode current: an OTClosureContextNode columns: an OrderedCollection(an OBColumn(Model class(Object)>>doesNotUnderstan...etc... minPanes: 1 maxPanes: 1
OTDebugger(OBBrowser)>>jumpTo: Receiver: an OTDebugger Arguments and temporary variables: aNode: an OTClosureContextNode Receiver''s instance variables: panels: an OrderedCollection(an OBColumnPanel an OBFixedButtonPanel an OTDefini...etc... announcer: an OBAnnouncer cmdFactories: an Array(OTCmdProceedDebugger OTCmdIntoDebugger OTCmdThroughDebug...etc...
OTDebugger class(OBBrowser class)>>metaNode:root:selection:panels: Receiver: OTDebugger Arguments and temporary variables: metaNode: process #longStack->context
rootNode: an OTProcessNode selectedNode: an OTClosureContextNode panels: an Array(an OBColumnPanel an OBFixedButtonPanel an OTDefinitionPanel an...etc... browser: an OTDebugger Receiver''s instance variables: superclass: OBBrowser methodDict: a MethodDictionary(#cmdBrowse->a CompiledMethod (3978) #cmdDebug->a...etc... format: 136 instanceVariables: nil organization: (''commands'' cmdBrowse cmdDebug cmdInspector) (''updating'' debugger...etc... subclasses: nil name: #OTDebugger classPool: nil sharedPools: nil environment: Smalltalk category: #''OB-Tools-Debugger'' traitComposition: nil localSelectors: nil
OTDebugger class(OBBrowser class)>>root:selection: Receiver: OTDebugger Arguments and temporary variables: rootNode: an OTProcessNode selectedNode: an OTClosureContextNode Receiver''s instance variables: superclass: OBBrowser methodDict: a MethodDictionary(#cmdBrowse->a CompiledMethod (3978) #cmdDebug->a...etc... format: 136 instanceVariables: nil organization: (''commands'' cmdBrowse cmdDebug cmdInspector) (''updating'' debugger...etc... subclasses: nil name: #OTDebugger classPool: nil sharedPools: nil environment: Smalltalk category: #''OB-Tools-Debugger'' traitComposition: nil localSelectors: nil
OTDebugger class>>process:context:errorWasInUIProcess: Receiver: OTDebugger Arguments and temporary variables: aProcess: a Process in OTToolset class>>debug:context:label:contents:fullView: aContext: Model class(Object)>>doesNotUnderstand: #fullName aBool: true processNode: an OTProcessNode contextNode: an OTClosureContextNode Receiver''s instance variables: superclass: OBBrowser methodDict: a MethodDictionary(#cmdBrowse->a CompiledMethod (3978) #cmdDebug->a...etc... format: 136 instanceVariables: nil organization: (''commands'' cmdBrowse cmdDebug cmdInspector) (''updating'' debugger...etc... subclasses: nil name: #OTDebugger classPool: nil sharedPools: nil environment: Smalltalk category: #''OB-Tools-Debugger'' traitComposition: nil localSelectors: nil
OTDebugger class>>process:context:label:errorWasInUIProcess: Receiver: OTDebugger Arguments and temporary variables: aProcess: a Process in OTToolset class>>debug:context:label:contents:fullView: aContext: Model class(Object)>>doesNotUnderstand: #fullName aString: ''MessageNotUnderstood: Model class>>fullName'' aBool: true debugger: nil Receiver''s instance variables: superclass: OBBrowser methodDict: a MethodDictionary(#cmdBrowse->a CompiledMethod (3978) #cmdDebug->a...etc... format: 136 instanceVariables: nil organization: (''commands'' cmdBrowse cmdDebug cmdInspector) (''updating'' debugger...etc... subclasses: nil name: #OTDebugger classPool: nil sharedPools: nil environment: Smalltalk category: #''OB-Tools-Debugger'' traitComposition: nil localSelectors: nil
OTDebugger class>>openProcess:context:label:errorWasInUIProcess: Receiver: OTDebugger Arguments and temporary variables: aProcess: a Process in OTToolset class>>debug:context:label:contents:fullView: aContext: Model class(Object)>>doesNotUnderstand: #fullName aString: ''MessageNotUnderstood: Model class>>fullName'' aBool: true Receiver''s instance variables: superclass: OBBrowser methodDict: a MethodDictionary(#cmdBrowse->a CompiledMethod (3978) #cmdDebug->a...etc... format: 136 instanceVariables: nil organization: (''commands'' cmdBrowse cmdDebug cmdInspector) (''updating'' debugger...etc... subclasses: nil name: #OTDebugger classPool: nil sharedPools: nil environment: Smalltalk category: #''OB-Tools-Debugger'' traitComposition: nil localSelectors: nil
[] in OTPreDebugNode>>debug: Receiver: an OTPreDebugNode Arguments and temporary variables: aRequestor: an OTPreDebugPanel proc: a Process in OTToolset class>>debug:context:label:contents:fullView: Receiver''s instance variables: metaNode: Predebug
navigation: nil errorWasInUI: true process: nil context: Model class(Object)>>doesNotUnderstand: #fullName label: ''MessageNotUnderstood: Model class>>fullName'' contents: ''Model class(Object)>>doesNotUnderstand: #fullName UtilitiesTest>>tes...etc... debugOnMouseClick: true
WorldState>>runStepMethodsIn: Receiver: a WorldState Arguments and temporary variables: aWorld: a PasteUpMorph(1622) [world] queue: a SharedQueue numItems: 1 i: 0 limit: 200 stamp: 12765762 Receiver''s instance variables: hands: an Array(a HandMorph(3216)) viewBox: 0@0 corner: 1440@807 canvas: a FormCanvas on: DisplayScreen(1440x807x32) damageRecorder: a DamageRecorder stepList: a Heap(StepMessage(#stepAt: -> a SystemWindow(3380))(a SystemWindow(3...etc... lastStepTime: 12791780 lastStepMessage: nil lastCycleTime: 12791800 commandHistory: a CommandHistory alarms: a Heap() lastAlarmTime: 12791780
PasteUpMorph>>runStepMethods Receiver: a PasteUpMorph(1622) [world] Arguments and temporary variables:
Receiver''s instance variables: bounds: 0@0 corner: 1440@807 owner: nil submorphs: an Array(a TaskbarMorph(3095) a SystemWindow(171) a PluggableStandar...etc... fullBounds: nil color: (Color r: 0.972 g: 0.972 b: 0.976) extension: a MorphExtension (2543) [eventHandler = an EventHandler] [other: (...etc... borderWidth: 0 borderColor: (Color r: 0.03 g: 0.02 b: 0.0) presenter: a Presenter (1246) model: a MorphicModel(1926) cursor: 1 padding: 3 backgroundMorph: nil isPartsBin: nil autoLineLayout: false indicateCursor: nil resizeToFit: nil wantsMouseOverHalos: nil worldState: a WorldState griddingOn: nil
--- The full stack --- UTF8TextConverter(Object)>>error: UTF8TextConverter>>errorMalformedInput UTF8TextConverter>>nextFromStream: MultiByteFileStream>>next MultiByteFileStream(PositionableStream)>>nextChunk MultiByteFileStream(PositionableStream)>>nextChunkText [] in RemoteString>>text BlockClosure>>ensure: RemoteString>>text CompiledMethod>>getSourceFromFile CompiledMethod>>methodNode [] in DebuggerMethodMap class>>forMethod: WeakIdentityKeyDictionary(Dictionary)>>at:ifAbsent: DebuggerMethodMap class>>forMethod: CompiledMethod>>debuggerMap OTClosureContextNode>>selection OTClosureContextNode(OTContextNode)>>definition OTDefinitionPanel(OBDefinitionPanel)>>node: OTDefinitionPanel(OBDefinitionPanel)>>selectionChanged: MessageSend>>valueWithArguments: [] in ActionSequence>>valueWithArguments: ActionSequence(SequenceableCollection)>>do: ActionSequence>>valueWithArguments: [] in OBAnnouncer>>announce: [] in IdentityDictionary(Dictionary)>>keysAndValuesDo: IdentityDictionary(Set)>>do: IdentityDictionary(Dictionary)>>associationsDo: IdentityDictionary(Dictionary)>>keysAndValuesDo: OBAnnouncer>>announce: OBColumnPanel>>jumpTo: OTDebugger(OBBrowser)>>jumpTo: OTDebugger class(OBBrowser class)>>metaNode:root:selection:panels: OTDebugger class(OBBrowser class)>>root:selection: OTDebugger class>>process:context:errorWasInUIProcess: OTDebugger class>>process:context:label:errorWasInUIProcess: OTDebugger class>>openProcess:context:label:errorWasInUIProcess: [] in OTPreDebugNode>>debug: WorldState>>runStepMethodsIn: PasteUpMorph>>runStepMethods - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: PasteUpMorph>>doOneCycle [] in Project class>>spawnNewProcess [] in BlockClosure>>newProcess '
-- www.tudorgirba.com
"To lead is not to demand things, it is to make them happen."
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo- project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo- project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo- project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
-- www.tudorgirba.com
"It's not how it is, it is how we see it."
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project