Nicolas Cellier uploaded a new version of Monticello to project The Inbox:
http://source.squeak.org/inbox/Monticello-nice.500.mcz ==================== Summary ==================== Name: Monticello-nice.500 Author: nice Time: 10 March 2012, 6:27:05.52 pm UUID: 432c3785-149a-4822-ace4-e14b1b792dfa Ancestors: Monticello-bf.496 Use a ReferenceStream rather than a DataStream in #serializeInBinary: because storing some object require a ReferenceStream The bug did show up when I added tokens to MCMethodDefinition as shown below MessageNotUnderstood: DataStream>>insideASegment 10 March 2012 12:52:47.119 am VM: Mac OS - Smalltalk Image: Squeak4.3 [latest update: #11916] SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir /Users/nicolas/Smalltalk/Squeak/trunk Trusted Dir /foobar/tooBar/forSqueak/bogus/ Untrusted Dir /Users/nicolas/Library/Preferences/Croquet/Internet/Untrusted DataStream(Object)>>doesNotUnderstand: #insideASegment Receiver: a DataStream #[9 0 0 0 2 6 10 77 67 83 110 97 112 115 104 111 116 9 0 0 0 4 6 17 79 114 10...etc... Arguments and temporary variables: aMessage: insideASegment exception: MessageNotUnderstood: DataStream>>insideASegment resumeValue: nil Receiver's instance variables: byteStream: a RWBinaryOrTextStream #[9 0 0 0 2 6 10 77 67 83 110 97 112 115 104...etc... topCall: nil basePos: 0 Character>>objectForDataStream: Receiver: $. DataStream>>nextPut: Arguments and temporary variables: anObject: $. [] in DataStream>>nextPutAll: Array(SequenceableCollection)>>do: Receiver: #(#aString #copyUpToLast: $.) DataStream>>nextPutAll: DataStream>>writeArray: Arguments and temporary variables: anArray: #(#aString #copyUpToLast: $.) DataStream>>nextPut: Arguments and temporary variables: anObject: #(#aString #copyUpToLast: $.) [] in DataStream>>nextPutAll: Array(SequenceableCollection)>>do: Receiver: #(#versionNameFromFileName: #aString #'^' #(#aString #copyUpToLast: $.) #copyUpTo: $() DataStream>>nextPutAll: Arguments and temporary variables: aCollection: #(#versionNameFromFileName: #aString #'^' #(#aString #copyUpToLast...etc... DataStream>>writeArray: Arguments and temporary variables: anArray: #(#versionNameFromFileName: #aString #'^' #(#aString #copyUpToLast: $....etc... DataStream>>nextPut: Arguments and temporary variables: anObject: #(#versionNameFromFileName: #aString #'^' #(#aString #copyUpToLast: $...etc... MCMethodDefinition(Object)>>storeDataOn: Receiver: a MCMethodDefinition(MCFileBasedRepository>>versionNameFromFileName:) Receiver's instance variables: classIsMeta: false source: 'versionNameFromFileName: aString ^ (aString copyUpToLast: $.) copyUpT...etc... category: #'as yet unclassified' selector: #versionNameFromFileName: className: #MCFileBasedRepository timeStamp: 'bf 5/30/2005 22:52' tokens: #(#versionNameFromFileName: #aString #'^' #(#aString #copyUpToLast: $.)...etc... DataStream>>writeInstance: DataStream>>nextPut: Arguments and temporary variables: anObject: a MCMethodDefinition(MCFileBasedRepository>>versionNameFromFileName:)...etc... [] in DataStream>>nextPutAll: Array(SequenceableCollection)>>do: DataStream>>nextPutAll: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DataStream>>writeArray: DataStream>>nextPut: OrderedCollection(Object)>>storeDataOn: DataStream>>writeInstance: DataStream>>nextPut: MCSnapshot(Object)>>storeDataOn: DataStream>>writeInstance: DataStream>>nextPut: MCMczWriter>>serializeInBinary: MCMczWriter>>writeSnapshot: MCMczWriter>>writeDefinitions: MCMczWriter>>writeVersion: MCMczWriter class>>fileOut:on: MCVersion>>fileOutOn: [] in MCCacheRepository(MCFileBasedRepository)>>basicStoreVersion: MCCacheRepository(MCDirectoryRepository)>>writeStreamForFileNamed:replace:do: MCCacheRepository(MCFileBasedRepository)>>writeStreamForFileNamed:do: MCCacheRepository(MCFileBasedRepository)>>basicStoreVersion: MCCacheRepository>>basicStoreVersion: MCCacheRepository(MCRepository)>>storeVersion: MCVersion>>addToCache MCVersion>>initializeWithPackage:info:snapshot:dependencies: MCVersion class>>package:info:snapshot:dependencies: MCMczReader(MCVersionReader)>>basicVersion MCMczReader(MCVersionReader)>>version [] in MCHttpRepository(MCFileBasedRepository)>>loadVersionFromFileNamed: BlockClosure>>cull: MCMczReader(ProtoObject)>>ifNotNil: MCHttpRepository>>versionReaderForFileNamed:do: MCHttpRepository(MCFileBasedRepository)>>loadVersionFromFileNamed: [] in MCHttpRepository(MCFileBasedRepository)>>versionNamed: Dictionary>>at:ifAbsent: MCHttpRepository(MCFileBasedRepository)>>versionNamed: [] in MCFileRepositoryInspector(MCRepositoryInspector)>>version BlockClosure>>ensure: CursorWithMask(Cursor)>>showWhile: MCFileRepositoryInspector(MCRepositoryInspector)>>version MCFileRepositoryInspector(MCVersionInspector)>>merge MCFileRepositoryInspector(MCRepositoryInspector)>>merge PluggableButtonMorphPlus(PluggableButtonMorph)>>performAction =============== Diff against Monticello-bf.496 =============== Item was removed: - SystemOrganization addCategory: #Monticello! - SystemOrganization addCategory: #'Monticello-Base'! - SystemOrganization addCategory: #'Monticello-Chunk Format'! - SystemOrganization addCategory: #'Monticello-Loading'! - SystemOrganization addCategory: #'Monticello-Merging'! - SystemOrganization addCategory: #'Monticello-Modeling'! - SystemOrganization addCategory: #'Monticello-Patching'! - SystemOrganization addCategory: #'Monticello-Repositories'! - SystemOrganization addCategory: #'Monticello-Storing'! - SystemOrganization addCategory: #'Monticello-UI'! - SystemOrganization addCategory: #'Monticello-Versioning'! - SystemOrganization addCategory: #'Monticello-Mocks'! - SystemOrganization addCategory: #'Monticello-Utilities'! Item was added: + SystemOrganization addCategory: #'Monticello-Base'! + SystemOrganization addCategory: #'Monticello-Chunk Format'! + SystemOrganization addCategory: #'Monticello-Loading'! + SystemOrganization addCategory: #'Monticello-Merging'! + SystemOrganization addCategory: #'Monticello-Modeling'! + SystemOrganization addCategory: #'Monticello-Patching'! + SystemOrganization addCategory: #'Monticello-Repositories'! + SystemOrganization addCategory: #'Monticello-Storing'! + SystemOrganization addCategory: #'Monticello-UI'! + SystemOrganization addCategory: #'Monticello-Versioning'! Item was changed: ----- Method: MCMczWriter>>serializeInBinary: (in category 'serializing') ----- serializeInBinary: aSnapshot | writer s | s := RWBinaryOrTextStream on: String new. + writer := ReferenceStream on: s. - writer := DataStream on: s. writer nextPut: aSnapshot. ^ s contents! |
Am 2012-03-10 um 17:27 schrieb [hidden email]: > Nicolas Cellier uploaded a new version of Monticello to project The Inbox: > http://source.squeak.org/inbox/Monticello-nice.500.mcz > > ==================== Summary ==================== > > Name: Monticello-nice.500 > Author: nice > Time: 10 March 2012, 6:27:05.52 pm > UUID: 432c3785-149a-4822-ace4-e14b1b792dfa > Ancestors: Monticello-bf.496 > > Use a ReferenceStream rather than a DataStream in #serializeInBinary: > because storing some object require a ReferenceStream > The bug did show up when I added tokens to MCMethodDefinition as shown below Note that this change possibly can break compatibily with Gemstone/Pharo folks, although I hope, it does not :) best -tobias |
Le 10 mars 2012 22:45, Tobias Pape <[hidden email]> a écrit :
I don't know... An alternative would be to define DataStream>>insideASegment ^false That's just showing how fragile this part of the code is... Nicolas |
Am 2012-03-11 um 15:10 schrieb Nicolas Cellier: > Le 10 mars 2012 22:45, Tobias Pape <[hidden email]> a écrit : > > Am 2012-03-10 um 17:27 schrieb [hidden email]: > > > Nicolas Cellier uploaded a new version of Monticello to project The Inbox: > > http://source.squeak.org/inbox/Monticello-nice.500.mcz > > > > ==================== Summary ==================== > > > > Name: Monticello-nice.500 > > Author: nice > > Time: 10 March 2012, 6:27:05.52 pm > > UUID: 432c3785-149a-4822-ace4-e14b1b792dfa > > Ancestors: Monticello-bf.496 > > > > Use a ReferenceStream rather than a DataStream in #serializeInBinary: > > because storing some object require a ReferenceStream > > The bug did show up when I added tokens to MCMethodDefinition as shown below > > Note that this change possibly can break compatibily with Gemstone/Pharo > folks, although I hope, it does not :) > > best > -tobias > > I don't know... > An alternative would be to define DataStream>>insideASegment ^false > That's just showing how fragile this part of the code is... I was just mentioning. I had weird results when dealing with source code containing “extended” characters (as extended as an “ can be) and had them travel between the worlds (Squeak/Gemstone/Pharo in this case). I just want to raise the point here, that the whole Monticello implementation in all three platforms I know is based on the…buggy?… DataStream. In fact, that was why I started the Monticello/Fuel thing some month ago, in the first place. We just should be aware. just my 2ct. Best -Tobias |
Free forum by Nabble | Edit this page |