--- Steve Loughran <[EMAIL PROTECTED]> wrote: > Steve Loughran wrote: > > > > > > I've been running the new build and havent seen > any more loops; I think > > race conditions are gone. > > > > Incidentally, given we didnt see any way that the > thing could loop, > > given we were using threadlocal to store a > per-thread datastructure, and > > given that threadlocals are implicitly thread > safe, I'm still not sure > > where the problem arose. but I have been pointed > at some bugs in > > ThreadLocal > > > > > > > http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6550283 > > "ThreadLocal.initialValue() may be called multiple > times in some cases" > > > > There is a bit of a race condition on > initialisation, *across all > > threadlocal classes in use in that thread*. if you > are only using your > > own classes, you need to sync off something common > (like the current > > thread). But you are still vulnerable to any other > class using Thread > > local storage making an operation that increases > the size of the hash > > table of threadlocal values, in which case you are > stuffed. > > > > This is a WONTFIX for Java<1.6. > > > > Accordingly, you can't reliably use ThreadLocal on > a multicpu system for > > Java <=1.5 as you cannot be sure that other > classes wont stamp on you. > > This is pretty serious, as the reason you would > use TLS is to avoid > > concurrency problems. > > followup based on looking at the code.
Which code, Steve? Thanks, Matt > > Its not a race condition, so much as a re-entrancy > bug. the code here is > thread safe, but doesnt lock out the per-thread > hashmap while > initialising a ThreadLocal instance. If the thing > being initialised is > subclassed to make a complex initial value, and that > initial value > itself creates ThreadLocal content, then you are in > trouble. If you dont > do that, you should be ok. > > This is probably not the cause of the looping I saw. > > -steve > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: > [EMAIL PROTECTED] > For additional commands, e-mail: > [EMAIL PROTECTED] > > ____________________________________________________________________________________ Pinpoint customers who are looking for what you sell. http://searchmarketing.yahoo.com/ --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]