[Pharo-project] Bug in PharoCore1.1ALPHA [Latest update: #11192]
When attempting to load Seaside-2.8, with the image updated to 11192, I got: UndefinedObject(Object)>>doesNotUnderstand: #do: WriteStream(Stream)>>nextPutAll: WriteStream>>nextPutAll: WriteStream(Stream)>>basicNextPutAll: UTF8TextConverter(TextConverter)>>nextPutAll:toStream: ByteString(String)>>convertToWithConverter: WAKomEncoded39 class>>setUpConversionTables WAKomEncoded39 class>>initialize It actually gave me an emergency evaluator, and failed to save the entire stack trace to PharoDebug.log - maybe due to UTF8 issues. I had to use the send bug report feature to capture the stack trace. I think the problem is that WAKomEncoded39 is setting things up for codepoints 0..255, but the newly optimized UTF8TextConverter has nil entries for codepoints less than 128. -- Yanni VM: Mac OS - intel - 1058 - Squeak3.8.1 of '28 Aug 2006' [latest update: #6747] Squeak VM 4.2.1b1 Image: PharoCore1.1ALPHA [Latest update: #11192] --- The full stack --- UndefinedObject(Object)>>doesNotUnderstand: #do: WriteStream(Stream)>>nextPutAll: WriteStream>>nextPutAll: WriteStream(Stream)>>basicNextPutAll: UTF8TextConverter(TextConverter)>>nextPutAll:toStream: ByteString(String)>>convertToWithConverter: WAKomEncoded39 class>>setUpConversionTables WAKomEncoded39 class>>initialize MCMethodDefinition>>postloadOver: [] in [] in [] in MCPackageLoader>>basicLoad [] in [] in OrderedCollection(SequenceableCollection)>>do:displayingProgress: OrderedCollection(SequenceableCollection)>>withIndexDo: [] in OrderedCollection(SequenceableCollection)>>do:displayingProgress: [] in ProgressInitiationException>>defaultAction BlockClosure>>ensure: ProgressInitiationException>>defaultAction UndefinedObject>>handleSignal: MethodContext(ContextPart)>>handleSignal: MethodContext(ContextPart)>>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: OrderedCollection(SequenceableCollection)>>do:displayingProgress: [] in [] in MCPackageLoader>>basicLoad BlockClosure>>on:do: [] in MCPackageLoader>>basicLoad BlockClosure>>ensure: MCPackageLoader>>basicLoad [] in MCPackageLoader>>loadWithNameLike: [] in MCPackageLoader>>useChangeSetNamed:during: BlockClosure>>ensure: MCPackageLoader>>useChangeSetNamed:during: MCPackageLoader>>useNewChangeSetNamedLike:during: MCPackageLoader>>loadWithNameLike: MCVersionLoader>>loadWithNameLike: MCVersionLoader>>load - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GoferLoad>>execute Gofer>>execute:do: Gofer>>execute: Gofer>>load [] in UndefinedObject>>DoIt [] in BlockClosure>>valueSupplyingAnswers: BlockClosure>>on:do: BlockClosure>>valueSupplyingAnswers: UndefinedObject>>DoIt Compiler>>evaluate:in:to:notifying:ifFail:logged: Compiler class>>evaluate:for:notifying:logged: Compiler class>>evaluate:for:logged: Compiler class>>evaluate:logged: [] in [] in MultiByteFileStream(PositionableStream)>>fileInAnnouncing: BlockClosure>>on:do: [] in MultiByteFileStream(PositionableStream)>>fileInAnnouncing: [] in ProgressInitiationException>>defaultAction BlockClosure>>ensure: ProgressInitiationException>>defaultAction UndefinedObject>>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: MultiByteFileStream(PositionableStream)>>fileInAnnouncing: MultiByteFileStream(FileStream)>>fileIn MultiByteFileStream>>fileIn FileStream class>>fileIn: SimpleServiceEntry>>performServiceFor: [] in ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: BlockClosure>>ensure: CursorWithMask(Cursor)>>showWhile: ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: ToggleMenuItemMorph(MenuItemMorph)>>mouseUp: ToggleMenuItemMorph(MenuItemMorph)>>handleMouseUp: MouseButtonEvent>>sentTo: ToggleMenuItemMorph(Morph)>>handleEvent: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: ToggleMenuItemMorph(Morph)>>processEvent:using: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: MenuMorph(Morph)>>processEvent:using: MenuMorph(Morph)>>processEvent: MenuMorph>>handleFocusEvent: [] in HandMorph>>sendFocusEvent:to:clear: [] in PasteUpMorph>>becomeActiveDuring: BlockClosure>>on:do: PasteUpMorph>>becomeActiveDuring: HandMorph>>sendFocusEvent:to:clear: HandMorph>>sendEvent:focus:clear: HandMorph>>sendMouseEvent: 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
Thanks! Indeed there were some work on UTF8Encoder and friends. do you know if the same happened in latest squeak? On Feb 3, 2010, at 10:57 PM, Yanni Chiu wrote:
When attempting to load Seaside-2.8, with the image updated to 11192, I got:
UndefinedObject(Object)>>doesNotUnderstand: #do: WriteStream(Stream)>>nextPutAll: WriteStream>>nextPutAll: WriteStream(Stream)>>basicNextPutAll: UTF8TextConverter(TextConverter)>>nextPutAll:toStream: ByteString(String)>>convertToWithConverter: WAKomEncoded39 class>>setUpConversionTables WAKomEncoded39 class>>initialize
It actually gave me an emergency evaluator, and failed to save the entire stack trace to PharoDebug.log - maybe due to UTF8 issues. I had to use the send bug report feature to capture the stack trace.
I think the problem is that WAKomEncoded39 is setting things up for codepoints 0..255, but the newly optimized UTF8TextConverter has nil entries for codepoints less than 128.
-- Yanni
VM: Mac OS - intel - 1058 - Squeak3.8.1 of '28 Aug 2006' [latest update: #6747] Squeak VM 4.2.1b1 Image: PharoCore1.1ALPHA [Latest update: #11192]
--- The full stack --- UndefinedObject(Object)>>doesNotUnderstand: #do: WriteStream(Stream)>>nextPutAll: WriteStream>>nextPutAll: WriteStream(Stream)>>basicNextPutAll: UTF8TextConverter(TextConverter)>>nextPutAll:toStream: ByteString(String)>>convertToWithConverter: WAKomEncoded39 class>>setUpConversionTables WAKomEncoded39 class>>initialize MCMethodDefinition>>postloadOver: [] in [] in [] in MCPackageLoader>>basicLoad [] in [] in OrderedCollection(SequenceableCollection)>>do:displayingProgress: OrderedCollection(SequenceableCollection)>>withIndexDo: [] in OrderedCollection(SequenceableCollection)>>do:displayingProgress: [] in ProgressInitiationException>>defaultAction BlockClosure>>ensure: ProgressInitiationException>>defaultAction UndefinedObject>>handleSignal: MethodContext(ContextPart)>>handleSignal: MethodContext(ContextPart)>>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: OrderedCollection(SequenceableCollection)>>do:displayingProgress: [] in [] in MCPackageLoader>>basicLoad BlockClosure>>on:do: [] in MCPackageLoader>>basicLoad BlockClosure>>ensure: MCPackageLoader>>basicLoad [] in MCPackageLoader>>loadWithNameLike: [] in MCPackageLoader>>useChangeSetNamed:during: BlockClosure>>ensure: MCPackageLoader>>useChangeSetNamed:during: MCPackageLoader>>useNewChangeSetNamedLike:during: MCPackageLoader>>loadWithNameLike: MCVersionLoader>>loadWithNameLike: MCVersionLoader>>load - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GoferLoad>>execute Gofer>>execute:do: Gofer>>execute: Gofer>>load [] in UndefinedObject>>DoIt [] in BlockClosure>>valueSupplyingAnswers: BlockClosure>>on:do: BlockClosure>>valueSupplyingAnswers: UndefinedObject>>DoIt Compiler>>evaluate:in:to:notifying:ifFail:logged: Compiler class>>evaluate:for:notifying:logged: Compiler class>>evaluate:for:logged: Compiler class>>evaluate:logged: [] in [] in MultiByteFileStream(PositionableStream)>>fileInAnnouncing: BlockClosure>>on:do: [] in MultiByteFileStream(PositionableStream)>>fileInAnnouncing: [] in ProgressInitiationException>>defaultAction BlockClosure>>ensure: ProgressInitiationException>>defaultAction UndefinedObject>>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: MultiByteFileStream(PositionableStream)>>fileInAnnouncing: MultiByteFileStream(FileStream)>>fileIn MultiByteFileStream>>fileIn FileStream class>>fileIn: SimpleServiceEntry>>performServiceFor: [] in ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: BlockClosure>>ensure: CursorWithMask(Cursor)>>showWhile: ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: ToggleMenuItemMorph(MenuItemMorph)>>mouseUp: ToggleMenuItemMorph(MenuItemMorph)>>handleMouseUp: MouseButtonEvent>>sentTo: ToggleMenuItemMorph(Morph)>>handleEvent: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: ToggleMenuItemMorph(Morph)>>processEvent:using: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: MenuMorph(Morph)>>processEvent:using: MenuMorph(Morph)>>processEvent: MenuMorph>>handleFocusEvent: [] in HandMorph>>sendFocusEvent:to:clear: [] in PasteUpMorph>>becomeActiveDuring: BlockClosure>>on:do: PasteUpMorph>>becomeActiveDuring: HandMorph>>sendFocusEvent:to:clear: HandMorph>>sendEvent:focus:clear: HandMorph>>sendMouseEvent: 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 _______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Stéphane Ducasse wrote:
Thanks! Indeed there were some work on UTF8Encoder and friends. do you know if the same happened in latest squeak?
I've not tried it on a recent Squeak.
On Feb 3, 2010, at 10:57 PM, Yanni Chiu wrote:
When attempting to load Seaside-2.8, with the image updated to 11192, I got:
UndefinedObject(Object)>>doesNotUnderstand: #do: WriteStream(Stream)>>nextPutAll: WriteStream>>nextPutAll: WriteStream(Stream)>>basicNextPutAll: UTF8TextConverter(TextConverter)>>nextPutAll:toStream: ByteString(String)>>convertToWithConverter: WAKomEncoded39 class>>setUpConversionTables WAKomEncoded39 class>>initialize
what is the script you use to load seaisde2.8 so that I can have a look On Feb 4, 2010, at 8:57 AM, Yanni Chiu wrote:
Stéphane Ducasse wrote:
Thanks! Indeed there were some work on UTF8Encoder and friends. do you know if the same happened in latest squeak?
I've not tried it on a recent Squeak.
On Feb 3, 2010, at 10:57 PM, Yanni Chiu wrote:
When attempting to load Seaside-2.8, with the image updated to 11192, I got:
UndefinedObject(Object)>>doesNotUnderstand: #do: WriteStream(Stream)>>nextPutAll: WriteStream>>nextPutAll: WriteStream(Stream)>>basicNextPutAll: UTF8TextConverter(TextConverter)>>nextPutAll:toStream: ByteString(String)>>convertToWithConverter: WAKomEncoded39 class>>setUpConversionTables WAKomEncoded39 class>>initialize
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Stéphane Ducasse wrote:
what is the script you use to load seaisde2.8 so that I can have a look
The following build scripts are run via Hudson, on a Ubuntu 8.X server. First, core11.st updates and saves the image, starting from a PharoCore-1.1-11184-UNSTABLE image. Then core11-seaside28.st loads Seaside-2.8. -- Yanni ":::::" "file: /home/yanni/pub/builder/scripts/before.st" ":::::" "Preparations" MCCacheRepository instVarNamed: 'default' put: nil. ! ":::::" "file: /home/yanni/pub/builder/scripts/gofer.st" ":::::" "Update Gofer" [ Gofer gofer load ] on: Error do: [ :err | err retry ]. Gofer upgrade; upgrade. ! "Remove empty categories" Smalltalk organization removeEmptyCategories. ! ":::::" "file: /home/yanni/pub/builder/scripts/update.st" ":::::" "Install latest updates" [Utilities updateFromServer] valueSuppressingAllMessages ! ":::::" "file: /home/yanni/pub/builder/scripts/settings.st" ":::::" "Select Fonts" StrikeFont installDejaVu. Preferences setDefaultFonts: #( (setBalloonHelpFontTo: 'BitmapDejaVu' 9) (setButtonFontTo: 'BitmapDejaVu' 9) (setCodeFontTo: 'BitmapDejaVu' 9) (setHaloLabelFontTo: 'BitmapDejaVu' 9) (setListFontTo: 'BitmapDejaVu' 9) (setMenuFontTo: 'BitmapDejaVu' 9) (setSystemFontTo: 'BitmapDejaVu' 9) (setWindowTitleFontTo: 'BitmapDejaVuBold' 12)). ! "Cleanup Environment" "UIThemeStandardSqueak beCurrent." "Choose a UITheme to avoid a walkback during automated operation" UIThemeWatery beCurrent. World submorphs do: [ :each | (each isKindOf: SketchMorph) ifTrue: [ each delete ] ]. ! "Set decent Preferences" Preferences enable: #scrollBarsNarrow. Preferences enable: #menuColorFromWorld. Preferences disable: #scrollBarsWithoutMenuButton. Preferences disable: #useNewDiffToolsForMC. Preferences disable: #duplicateAllControlAndAltKeys. Preferences disable: #fadedBackgroundWindows. Preferences disable: #windowAnimation. Preferences disable: #noWindowAnimationForClosing. ! ":::::" "file: /home/yanni/pub/builder/scripts/after.st" ":::::" "Clear Author" Author reset. ! "Clear Monticello Caches" MCCacheRepository instVarNamed: 'default' put: nil. MCFileBasedRepository flushAllCaches. MCMethodDefinition shutDown. MCDefinition clearInstances. ! "Cleanup Smalltalk" Smalltalk flushClassNameCache. Smalltalk organization removeEmptyCategories. Smalltalk allClassesAndTraitsDo: [ :each | each organization removeEmptyCategories; sortCategories. each class organization removeEmptyCategories; sortCategories ]. ! "Cleanup System Memory" 3 timesRepeat: [ Smalltalk garbageCollect. Symbol compactSymbolTable ]. ! "Save and Quit" SmalltalkImage current snapshot: true andQuit: true. ! ":::::" "file: /home/yanni/pub/builder/scripts/before.st" ":::::" "Preparations" MCCacheRepository instVarNamed: 'default' put: nil. ! ":::::" "file: /home/yanni/pub/builder/scripts/seaside28.st" ":::::" "Kom" Gofer new squeaksource: 'KomHttpServer'; package: 'DynamicBindings'; package: 'KomServices'; package: 'KomHttpServer'; load. ! "Seaside" [ Gofer new squeaksource: 'Seaside'; package: 'Seaside2.8a1'; load ] valueSupplyingAnswers: { { 'username'. 'admin' }. { 'password'. 'seaside' }. }. ! ":::::" "file: /home/yanni/pub/builder/scripts/after.st" ":::::" "Clear Author" Author reset. ! "Clear Monticello Caches" MCCacheRepository instVarNamed: 'default' put: nil. MCFileBasedRepository flushAllCaches. MCMethodDefinition shutDown. MCDefinition clearInstances. ! "Cleanup Smalltalk" Smalltalk flushClassNameCache. Smalltalk organization removeEmptyCategories. Smalltalk allClassesAndTraitsDo: [ :each | each organization removeEmptyCategories; sortCategories. each class organization removeEmptyCategories; sortCategories ]. ! "Cleanup System Memory" 3 timesRepeat: [ Smalltalk garbageCollect. Symbol compactSymbolTable ]. ! "Save and Quit" SmalltalkImage current snapshot: true andQuit: true. !
"file: /home/yanni/pub/builder/scripts/seaside28.st" ":::::" "Kom" Gofer new squeaksource: 'KomHttpServer'; package: 'DynamicBindings'; package: 'KomServices'; package: 'KomHttpServer'; load. ! "Seaside" [ Gofer new squeaksource: 'Seaside'; package: 'Seaside2.8a1'; load ] valueSupplyingAnswers: { { 'username'. 'admin' }. { 'password'. 'seaside' }. }. !
Can you try using ConfigurationOfSeaside ? The first thing you have to do is to install the configuration (as always):" Gofer new squeaksource: ''MetacelloRepository''; package: ''ConfigurationOfSeaside''; load. "Then pick the Seaside variant you want to load:" "Seaside 2.8" ConfigurationOfSeaside project latestVersion load: ''Seaside 2.8''. ConfigurationOfSeaside project latestVersion load: ''Seaside 2.8 Examples''. ConfigurationOfSeaside project latestVersion load: ''Magritte''. ConfigurationOfSeaside project latestVersion load: ''Magritte Tests''. ConfigurationOfSeaside project latestVersion load: ''Pier''. ConfigurationOfSeaside project latestVersion load: ''Pier Tests''. ConfigurationOfSeaside project latestVersion load: ''Pier AddOns''. "Seaside 3.0" ConfigurationOfSeaside project latestVersion load: ''Seaside 3.0''. ConfigurationOfSeaside project latestVersion load: ''Seaside 3.0 Tests''. ConfigurationOfSeaside project latestVersion load: ''Magritte2''. ConfigurationOfSeaside project latestVersion load: ''Magritte2 Tests''. ConfigurationOfSeaside project latestVersion load: ''Pier2''. ConfigurationOfSeaside project latestVersion load: ''Pier2 Tests''. ConfigurationOfSeaside project latestVersion load: ''Pier2 AddOns''.
":::::" "file: /home/yanni/pub/builder/scripts/after.st" ":::::" "Clear Author" Author reset. ! "Clear Monticello Caches" MCCacheRepository instVarNamed: 'default' put: nil. MCFileBasedRepository flushAllCaches. MCMethodDefinition shutDown. MCDefinition clearInstances. ! "Cleanup Smalltalk" Smalltalk flushClassNameCache. Smalltalk organization removeEmptyCategories. Smalltalk allClassesAndTraitsDo: [ :each | each organization removeEmptyCategories; sortCategories. each class organization removeEmptyCategories; sortCategories ]. ! "Cleanup System Memory" 3 timesRepeat: [ Smalltalk garbageCollect. Symbol compactSymbolTable ]. ! "Save and Quit" SmalltalkImage current snapshot: true andQuit: true. !
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Nicolas nicely answered to the problem Thanks a lot. Comment 1 by nicolas.cellier.aka.nice, Today (10 hours ago) I tested with this: (TextConverter allSubclasses reject: [:e | e subclasses size > 0]) select: [:e | (e latin1Encodings copyFrom: 129 to: 256) anySatisfy: [:e2 | e2 isNil]] -> a Set(MacRomanTextConverter Latin1TextConverter) Then this: (TextConverter allSubclasses reject: [:e | e subclasses size > 0]) collect: [:e | e ->((129 to: 256) select: [:e2 | (e latin1Encodings at: e2) isNil])] -> MacRomanTextConverter->#(163 164 170 178 182) -> Latin1TextConverter-> (129 to: 256) All problems disappear if I do this: Latin1TextConverter initializeLatin1Encodings. MacRomanTextConverter initializeLatin1Encodings. Don't know why something went wrong with lazy initialization leading to a class instance variables notNil, but not initialized correctly... Maybe the #initializeLatin1Encodings should be called in each text converter class initialize... I will integrate that soon :) Stef On Feb 4, 2010, at 5:43 PM, Yanni Chiu wrote:
Stéphane Ducasse wrote:
what is the script you use to load seaisde2.8 so that I can have a look
The following build scripts are run via Hudson, on a Ubuntu 8.X server. First, core11.st updates and saves the image, starting from a PharoCore-1.1-11184-UNSTABLE image. Then core11-seaside28.st loads Seaside-2.8.
-- Yanni ":::::" "file: /home/yanni/pub/builder/scripts/before.st" ":::::" "Preparations" MCCacheRepository instVarNamed: 'default' put: nil. ! ":::::" "file: /home/yanni/pub/builder/scripts/gofer.st" ":::::" "Update Gofer" [ Gofer gofer load ] on: Error do: [ :err | err retry ]. Gofer upgrade; upgrade. ! "Remove empty categories" Smalltalk organization removeEmptyCategories. ! ":::::" "file: /home/yanni/pub/builder/scripts/update.st" ":::::" "Install latest updates" [Utilities updateFromServer] valueSuppressingAllMessages ! ":::::" "file: /home/yanni/pub/builder/scripts/settings.st" ":::::" "Select Fonts" StrikeFont installDejaVu. Preferences setDefaultFonts: #( (setBalloonHelpFontTo: 'BitmapDejaVu' 9) (setButtonFontTo: 'BitmapDejaVu' 9) (setCodeFontTo: 'BitmapDejaVu' 9) (setHaloLabelFontTo: 'BitmapDejaVu' 9) (setListFontTo: 'BitmapDejaVu' 9) (setMenuFontTo: 'BitmapDejaVu' 9) (setSystemFontTo: 'BitmapDejaVu' 9) (setWindowTitleFontTo: 'BitmapDejaVuBold' 12)). ! "Cleanup Environment" "UIThemeStandardSqueak beCurrent." "Choose a UITheme to avoid a walkback during automated operation" UIThemeWatery beCurrent. World submorphs do: [ :each | (each isKindOf: SketchMorph) ifTrue: [ each delete ] ]. ! "Set decent Preferences" Preferences enable: #scrollBarsNarrow. Preferences enable: #menuColorFromWorld. Preferences disable: #scrollBarsWithoutMenuButton. Preferences disable: #useNewDiffToolsForMC. Preferences disable: #duplicateAllControlAndAltKeys. Preferences disable: #fadedBackgroundWindows. Preferences disable: #windowAnimation. Preferences disable: #noWindowAnimationForClosing. ! ":::::" "file: /home/yanni/pub/builder/scripts/after.st" ":::::" "Clear Author" Author reset. ! "Clear Monticello Caches" MCCacheRepository instVarNamed: 'default' put: nil. MCFileBasedRepository flushAllCaches. MCMethodDefinition shutDown. MCDefinition clearInstances. ! "Cleanup Smalltalk" Smalltalk flushClassNameCache. Smalltalk organization removeEmptyCategories. Smalltalk allClassesAndTraitsDo: [ :each | each organization removeEmptyCategories; sortCategories. each class organization removeEmptyCategories; sortCategories ]. ! "Cleanup System Memory" 3 timesRepeat: [ Smalltalk garbageCollect. Symbol compactSymbolTable ]. ! "Save and Quit" SmalltalkImage current snapshot: true andQuit: true. ! ":::::" "file: /home/yanni/pub/builder/scripts/before.st" ":::::" "Preparations" MCCacheRepository instVarNamed: 'default' put: nil. ! ":::::" "file: /home/yanni/pub/builder/scripts/seaside28.st" ":::::" "Kom" Gofer new squeaksource: 'KomHttpServer'; package: 'DynamicBindings'; package: 'KomServices'; package: 'KomHttpServer'; load. ! "Seaside" [ Gofer new squeaksource: 'Seaside'; package: 'Seaside2.8a1'; load ] valueSupplyingAnswers: { { 'username'. 'admin' }. { 'password'. 'seaside' }. }. ! ":::::" "file: /home/yanni/pub/builder/scripts/after.st" ":::::" "Clear Author" Author reset. ! "Clear Monticello Caches" MCCacheRepository instVarNamed: 'default' put: nil. MCFileBasedRepository flushAllCaches. MCMethodDefinition shutDown. MCDefinition clearInstances. ! "Cleanup Smalltalk" Smalltalk flushClassNameCache. Smalltalk organization removeEmptyCategories. Smalltalk allClassesAndTraitsDo: [ :each | each organization removeEmptyCategories; sortCategories. each class organization removeEmptyCategories; sortCategories ]. ! "Cleanup System Memory" 3 timesRepeat: [ Smalltalk garbageCollect. Symbol compactSymbolTable ]. ! "Save and Quit" SmalltalkImage current snapshot: true andQuit: true. ! _______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
On 04.02.2010 21:11, Stéphane Ducasse wrote:
Nicolas nicely answered to the problem Thanks a lot.
Comment 1 by nicolas.cellier.aka.nice, Today (10 hours ago) I tested with this:
(TextConverter allSubclasses reject: [:e | e subclasses size> 0]) select: [:e | (e latin1Encodings copyFrom: 129 to: 256) anySatisfy: [:e2 | e2 isNil]] -> a Set(MacRomanTextConverter Latin1TextConverter)
Then this:
(TextConverter allSubclasses reject: [:e | e subclasses size> 0]) collect: [:e | e ->((129 to: 256) select: [:e2 | (e latin1Encodings at: e2) isNil])]
-> MacRomanTextConverter->#(163 164 170 178 182) -> Latin1TextConverter-> (129 to: 256)
All problems disappear if I do this: Latin1TextConverter initializeLatin1Encodings. MacRomanTextConverter initializeLatin1Encodings.
Don't know why something went wrong with lazy initialization leading to a class instance variables notNil, but not initialized correctly... Maybe the #initializeLatin1Encodings should be called in each text converter class initialize...
I will integrate that soon :)
Stef
That is strange... Classes were recompiled when I changed the method name from initializeLatin1MapAndEncodings to initializeLatin1Encodings, and removed the latin1Map (Now called nonAsciiMap, residing in ByteString. If there's a better suggestion of where to put it, please speak up). Not sure how the reinitialization could have failed though, especially seeing how calling them again works :/ Cheers, Henry
This makes me thinking that relying on class initialization is not that robust may be lazy accessor (but this is boring to have to pay that price all the time). Lazy class var accessors are good when you have dependencies between classVar. So if somebody has some good idea to have robust and fast.... Stef On Feb 4, 2010, at 9:34 PM, Henrik Sperre Johansen wrote:
On 04.02.2010 21:11, Stéphane Ducasse wrote:
Nicolas nicely answered to the problem Thanks a lot.
Comment 1 by nicolas.cellier.aka.nice, Today (10 hours ago) I tested with this:
(TextConverter allSubclasses reject: [:e | e subclasses size> 0]) select: [:e | (e latin1Encodings copyFrom: 129 to: 256) anySatisfy: [:e2 | e2 isNil]] -> a Set(MacRomanTextConverter Latin1TextConverter)
Then this:
(TextConverter allSubclasses reject: [:e | e subclasses size> 0]) collect: [:e | e ->((129 to: 256) select: [:e2 | (e latin1Encodings at: e2) isNil])]
-> MacRomanTextConverter->#(163 164 170 178 182) -> Latin1TextConverter-> (129 to: 256)
All problems disappear if I do this: Latin1TextConverter initializeLatin1Encodings. MacRomanTextConverter initializeLatin1Encodings.
Don't know why something went wrong with lazy initialization leading to a class instance variables notNil, but not initialized correctly... Maybe the #initializeLatin1Encodings should be called in each text converter class initialize...
I will integrate that soon :)
Stef
That is strange... Classes were recompiled when I changed the method name from initializeLatin1MapAndEncodings to initializeLatin1Encodings, and removed the latin1Map (Now called nonAsciiMap, residing in ByteString. If there's a better suggestion of where to put it, please speak up). Not sure how the reinitialization could have failed though, especially seeing how calling them again works :/
Cheers, Henry
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
participants (4)
-
Henrik Sperre Johansen -
Mariano Martinez Peck -
Stéphane Ducasse -
Yanni Chiu