[concurrency-interest] deadlock in java.util.logging
gregg at cytetech.com
Mon Sep 25 21:35:05 EDT 2006
David Holmes wrote:
> I'm not sure if the StreamHandler can rely on its OutputStream correctly
> synchronizing writes so that messages are written atomically. However, even
> if it can't I think it should be able to do the formatter related actions
> outside of the synchronized block. That would prevent the cycle that causes
> the deadlock here. eg something like:
I've coded such a solution as you suggest to see if anything else falls out.
> That said, the classloader isn't blameless here as it performs logging while
> holding its own lock, thus violating the open-call principle. :)
Yes, that is perhaps the bigger problem. It's my fault that it is logging with
a lock held. There are moments when that is unavoidable given some of the
execution paths that expose classloading operations. I will remove some of the
debugging in that ClassLoader, or at least try and reduce some of the exposures.
But, I think this reveals an interesting path of circular dependencies involving
unanticipated class loading operations.
Thanks for your views on this David! I think I will file an enhancement request
to at least get the call into the formating to not be synchronized.
More information about the Concurrency-interest