[ 
https://issues.apache.org/jira/browse/LANG-349?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12521539
 ] 

Henri Yandell commented on LANG-349:
------------------------------------

I'm a little confused by the thread dump - ReflectionToStringBuilder.toString 
does not call HashMap.containsKey. Seems like a bunch of method calls are 
missing. Presumably this is because things are being compiled in and so that 
part of the trace vanishes.

This leaves me wondering where the HashMap.containsKey is coming from. 
Presumably it's from the object that is being reflected upon, and I'm not sure 
I see us having many options beyond either a) ignoring this bug as not fixable, 
or b) making the builders totally synchronized. 

Any thoughts?

> Deadlock using ReflectionToStringBuilder
> ----------------------------------------
>
>                 Key: LANG-349
>                 URL: https://issues.apache.org/jira/browse/LANG-349
>             Project: Commons Lang
>          Issue Type: Bug
>    Affects Versions: 2.0
>         Environment: java version "1.5.0_10"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_10-b03)
> Java HotSpot(TM) Server VM (build 1.5.0_10-b03, mixed mode)
> >uname -a
> Linux fwjsfimat04 2.4.21-32.EL #1 SMP Fri Apr 15 21:02:58 EDT 2005 x86_64 
> x86_64 x86_64 GNU/Linux
>            Reporter: David I.
>            Priority: Critical
>             Fix For: 2.4
>
>
> I used the ReflectionToStringBuilder on an object to output debugging 
> messages to Log4j. If this object was picked up by two different threads and 
> the toString() method was called at the same time in two different threads, a 
> deadlock occurrs.
> Here is a stack trace from using jstack:
> Thread 1172: (state = BLOCKED)
>  - java.util.Vector.hashCode() @bci=0, line=938 (Interpreted frame)
>  - java.util.HashMap.containsKey(java.lang.Object) @bci=6, line=377 (Compiled 
> frame)
>  - org.apache.commons.lang.builder.ReflectionToStringBuilder.toString() 
> @bci=50, line=522 (Compiled frame)
>  - 
> org.apache.commons.lang.builder.ReflectionToStringBuilder.toString(java.lang.Object,
>  org.apache.commons.lang.builder.ToStringStyle, boolean, java.lang.Class) 
> @bci=12, line=265 (Interpreted frame)
>  - 
> org.apache.commons.lang.builder.ReflectionToStringBuilder.toString(java.lang.Object,
>  org.apache.commons.lang.builder.ToStringStyle) @bci=4, line=197 (Interpreted 
> frame)
>  - 
> org.apache.commons.lang.builder.ToStringBuilder.reflectionToString(java.lang.Object,
>  org.apache.commons.lang.builder.ToStringStyle) @bci=2, line=170 (Interpreted 
> frame)
> [...]
> Thread 1191: (state = BLOCKED)
>  - java.util.Vector.hashCode() @bci=0, line=938 (Interpreted frame)
>  - java.util.HashMap.containsKey(java.lang.Object) @bci=6, line=377 (Compiled 
> frame)
>  - org.apache.commons.lang.builder.ReflectionToStringBuilder.toString() 
> @bci=50, line=522 (Compiled frame)
>  [...]

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to