Yeah, countLock should be used to synchronize and avoid NPEs on delete... that way we will be consistent.
--B (still trying to figure out how what we've done lately could have made things worse than 6205) On Sun, 09/28/03 at 02:04:30 -0400, Edward J. Huff wrote: > On Sun, 2003-09-28 at 01:15, Brandon Low wrote: > > Hmm... I just noticed that in the version of your patch that I have at > > least, the creator thread can have both countLock and headLock at the > > same time, I tried to avoid any one thread grabbing more than one lock > > at the same time... is that possible? > > > > Ahh, I see if we don't synchronize both headLock and countLock we have a > > possible NPE we would have to check... disgusting. > > > That was an embarrassing bug, caused when I inserted the function > inline. The return statement would have required a goto (returns > are disguised gotos), and I translated it wrongly. > > The possible NPE is avoided by ensuring that available is always > decremented _before_ unlocking countLock. Then if getThread sneaks > in before the synchronize(headLock), and there is only one thread > on the stack, getThread won't take it but will create a new thread > itself instead. [bug -- see below]. > > The decision of whether or not to attempt to remove a thread from > the stack was being transmitted out of the synchronized section > via the return statement, which unlocked but did not dequeue. > > The prepatch version is I believe correct except for the reference > to available in the while condition. My node has been running > for 7 hours with the new version, so I'll send it in. > > Nope. Writing some more comments -- I see that getThread does > not decide based on the value of available, as it should. > One more bug. Send it in later... > > > /me ponders > > I find bugs by writing text about how it works. > > -- Ed Huff > > _______________________________________________ > Devl mailing list > [EMAIL PROTECTED] > http://dodo.freenetproject.org/cgi-bin/mailman/listinfo/devl _______________________________________________ Devl mailing list [EMAIL PROTECTED] http://dodo.freenetproject.org/cgi-bin/mailman/listinfo/devl
