On Mon, 20 Sep 2004, Cliff Woolley wrote:

> (ie, you're inserting it onto brigade b before removing it from brigade a).

PS: I should mention that in this case, it's brigade a that will be
corrupt, not brigade b, since the inserted bucket's prev and next pointers
will simply be overwritten.  Brigade b will thus remain self-consistent.
Brigade a, however, will still have pointers to the now-moved bucket, so
as you traverse brigade a, you'll end up jumping over onto brigade b at
some point and never get back to brigade a.  Badness ensues at that point,
the usual symptom of which is that you're traversing brigade a and you end
up somehow seeing brigade b's sentinel as if it were somehow yet another
bucket on brigade a.  You try to deref the bucket pointers for brigade b's
sentinel (which don't exist) and you go boom.

Hope this helps.

--Cliff

Reply via email to