[Vm-dev] SequenceableCollection VM crash (was Re: [Pharo-users]
nicolas.cellier.aka.nice at gmail.com
Mon May 5 17:53:08 UTC 2014
2014-05-05 19:27 GMT+02:00 Ben Coman <btc at openinworld.com>:
> Just reporting, while looking into a query on [pharo-users] (which is
> attached for initial context only and can probably be deleted from any
> replies) I managed to crash the VM by evaluating the following in Workspace:
> a := SequenceableCollection new.
> a add: 1.
> a , SequenceableCollection new.
> Now the interesting thing is that while the system becomes immediately
> sluggish, Pharo.exe crashes about 20 seconds later.
> This is with Pharo 3.0 Release (30846)
> http://files.pharo.org/platform/Pharo3.0-win.zip (dated 2014-04-30)
> on Windows Home Premium 64-bit SP1.
> cheers -ben
SequenceableCollection is supposed to be abstract.
above code causes an infinite loop because size is implemented in terms of
do: and do: sends size.
> Ben Coman wrote:
> Thanks. That info made it much easier to try. Sorry I didn't end up with
> an answer for you, but I confirm there is some issue here, or something new
> I can learn when other chip in.
> Here is what I tried.
> * Installed XMLParser (monty.58) from Configuration Browser in Pharo 3.
> * Ran your code. Got the same error.
> * From the call stack I observed that
> has the line "newSequenceableCollection := self species new: newSize."
> such that it seems your error might be reduced to the question of why the
> following two snippets fail:
> d := OrderedCollection new: 1.
> d at: 1 put: 1.
> e := OrderedCollection new: 3.
> e at: 2 put: 1.
> However I'm sorry that is beyond my knowledge, and I'm hoping someone else
> can chip in so I can learn something.
> Pushing on, I noticed that XMLOrderedList has an instance variable
> /collection/ which holds the OrderedCollection.
> Now I wonder (without great experience and hoping to learn something) if
> it smells funny that XMLOrderedList inherits all of SequencableCollection
> methods that can not operate on /collection/.
> I noticed that XMLOrderedList was using an inherited
> while OrderedCollection overrode that method with its own. So taking
> inspiration XMLOrderedList>>copyFrom:to: to override
> SequencableCollection>>copyReplaceFrom:to:with: to work with /collection/
> seems to solve your problem:
> XMLOrderedList>>copyReplaceFrom: start to: stop with:
> ^ self newWithCollection:
> (collection copyReplaceFrom: start to: stop with:
> replacementCollection )
> Along the way I noticed a few (possible) bugs that seems not related to
> your problem:
> * When stepping through XMLOrderedList>>setCollection:
> there is a red-box-of-death for the instance variables, which can be
> solved by defining the following.
> ^ collection ifNil: [ 0 ] ifNotNil: [ collection size]
> * In the debugger the /collection/ instance variable is not shown! (e.g.
> line XMLOrderedList>>at:put:).
> Can someone confirm this should show?
> cheers -ben
> Thushar G R wrote:
> XMLOrderedList belongs to package XML-Parser-Nodes.
> a := XMLOrderedList new.
> a add:'1'.
> a , XMLOrderedList new.
> Here select all and Do it. On line 3 (a , XMLOrderedList new.) i am
> expected to get a copy of 'a' , but instead it throws an error
> PluggableTextMorph>>inspectIt in Block: [ textMorph editor
> evaluateSelectionAndDo: [ :resu...etc...
> PluggableTextMorph>>handleEdit: in Block: [ result := editBlock value ]
> SmalltalkEditor class>>buildSmalltalkEditorKeymappingsOn: in Block: [
> :morph | morph inspectIt ]
> KMKeymap>>notifyCompleteMatchTo:buffer: in Block: [ :l | l completeMatch:
> self buffer: aBuffer ]
> KMCategory>>onMatchWith:notify:andDo: in Block: [ :entry | entry
> onMatchWith: anEventBuffer notify...etc...
> KMDispatcher>>dispatch: in Block: [ :aTarget | ...
> Plese refer to the above stack.
> Thanks in advance.
> On Mon, May 5, 2014 at 6:28 PM, Ben Coman <btc at openinworld.com> wrote:
>> Thushar G R wrote:
>>> I am getting an error while doing this.
>>> a := XMLOrderedList new.
>>> a add:'1'.
>>> a , XMLOrderedList new.
>> I could give you "an answer" ;) - but it would be what you wanted. It
>> would help if you told what the error was, where it occurs (which of the
>> three lines), and what you expect each line is doing (especially the third
>> Also I don't see XMLOrderedList in the default Pharo image, so it would
>> help if you describe where you got that from and how you installed it.
>> cheers -ben
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Vm-dev