Error in SortedCollection do:
Ron Teitelbaum
Ron at USMedRec.com
Fri Feb 16 01:54:25 UTC 2007
Andreas,
Thanks I will. I'd already created a SharedQueueSorted for something
similar. I'll replace my sortedCollection with it and see if that fixes
things. I really didn't want the extra overhead for this piece, oh well.
Any news about QWAQ you can share yet without a NDA? Nice mention in that
CIO article
http://weeklysqueak.wordpress.com/2007/02/15/cio-insight-interview-with-alan
-kay/ .
Take care,
Ron
> -----Original Message-----
> From: squeak-dev-bounces at lists.squeakfoundation.org [mailto:squeak-dev-
> bounces at lists.squeakfoundation.org] On Behalf Of Andreas Raab
> Sent: Thursday, February 15, 2007 8:08 PM
> To: Ron at USMedRec.com; The general-purpose Squeak developers list
> Subject: Re: Error in SortedCollection do:
>
> You are describing all the classic symptoms of a race condition. Try
> using a semaphore/mutex to protect your collection (and the nodes inside
> it!).
>
> Cheers,
> - Andreas
>
> Ron Teitelbaum wrote:
> > Hi Andrew,
> >
> > I'm not actually getting an error in the sorting, and if I take the
> exact
> > same collection and reevaluate it in the debugger it comes up fine.
> >
> > Here is the sortBlock:
> >
> > ^[:a :b | (a nodeID bitXor: self networkID) < (b nodeID bitXor: self
> > networkID)]
> >
> > The values are 256 bit integers. self networkID is an instance variable
> on
> > the model that creates the sortBlock.
> >
> > I am doing some threading (the error always happens in the forked
> thread)
> > but I'm pretty sure there is no way that I might be adding to the
> collection
> > at the same time that I'm evaluating it. I thought maybe if the
> collection
> > grew during the do: that would explain it, but I'm pretty sure that is
> not
> > happening.
> >
> > The error was coming up more frequently with more activity. I was able
> to
> > fix the problem as far as I can tell with aSortedCollection
> > asOrderedCollection do:. I figured that would just push the problem to
> the
> > orderedCollection conversion but it seems to work just fine (no errors,
> no
> > nils in the collection and it appears that nothing is lost although the
> last
> > part is hard to prove). I guessing that the extra message sends in
> > asOrderedCollection allow the sorted collection to finish its sort.
> Also
> > this appears to only happen when there is intensive activity. I'm
> running
> > SSL connections, with seaside and multiple threads.
> >
> > It does worry me that I may loose values during the asOrderedCollection
> > conversion. I may take it out and put a semaphore around it to make
> sure
> > that it's not growing from an add during the read. I've tried to
> reproduce
> > it with a simple case but so far no luck.
> >
> > Thanks for your suggestion and for looking at it.
> >
> > Ron Teitelbaum
> >
> >> -----Original Message-----
> >> From: Andrew P. Black
> >> Sent: Thursday, February 15, 2007 7:10 PM
> >>
> >> I'm making a wild guess here, Ron: are you ABSOLUTELY sure that your
> >> sortblock represents an ordering relation, that is, for EVERY pair of
> >> values a and b, ((sortBlock value: a value: b) AND (sortBlock
> >> value: b value: a)) implies a = b? If this is not the case, the
> >> sort will very likely run off the end of the legitimate values in the
> >> array, and into the nils.
> >>
> >> Andrew
> >>
> >>
> >> On 12 Feb 2007, at 08:09, Ron Teitelbaum wrote:
> >>
> >>> Hi all,
> >>>
> >>> I just ran into an error and was wondering if anyone has ever seen
> >>> this
> >>> before. I have a sorted collection with a computationally
> >>> intensive sorting
> >>> block.
> >>>
> >>> It blew up on a nil. Low res jpg attached.
> >>>
> >>> It appears to have worked for the first 12 items:
> >>> newCollection in SortedCollection>>collect: has 12 items in it.
> >>>
> >>> The 13th item returned a nil. This is because array on the sorted
> >>> collection starts with 16 nils. firstIndex is set to 17.
> >>>
> >>> Notice on the jpg it says firstIndex = 17 but index is 13. So I
> >>> can only
> >>> conclude that since index is 13 and 12 other objects were processed
> >>> successfully that the array and first index changed during processing.
> >>>
> >>> I am not sure that I can reproduce this error. I've been running
> >>> the same
> >>> code for quite a while without seeing it. If I can I will post it.
> >>>
> >>> Has anyone seen this before or does anyone know why this may have
> >>> happened?
> >>>
> >>> Thanks for your help!
> >>>
> >>> Ron Teitelbaum
> >>> Ron at USMedRec.com
> >>>
> >>> http://bugs.impara.de/view.php?id=6030
> >>> <SortedCollectionError.jpg>
> >>>
> >>
> >
> >
> >
> >
>
>
More information about the Squeak-dev
mailing list
|