[ http://issues.apache.org/jira/browse/AXIS-2469?page=all ]
     
Jarek Gawor resolved AXIS-2469:
-------------------------------

    Resolution: Fixed

> Java process hang due to Thread race condition in 
> org.apache.axis.utils.JavaUtils::isEnumClass
> ----------------------------------------------------------------------------------------------
>
>          Key: AXIS-2469
>          URL: http://issues.apache.org/jira/browse/AXIS-2469
>      Project: Apache Axis
>         Type: Bug

>   Components: Serialization/Deserialization
>     Versions: 1.2RC2, 1.2, 1.2RC3, 1.2.1, 1.3
>  Environment: Hardware: HP-UX B.11.11
> Axis Java version in use: 1.2RC3
> java -version
> java version "1.4.2.10"
> Java(TM) 2 Runtime Environment, Standard Edition (IBM build 
> 1.4.2.10-060112-14:28 20060120)
> Java HotSpot(TM) Server VM (build 1.4.2 1.4.2.10-060112-16:07-PA_RISC2.0 
> PA2.0 (aCC_AP), mixed mode)
> IBM Java ORB build orb142-20060120 (SR4)
> XML build XSLT4J Java 2.6.8
> XML build XmlCommonsExternal 1.2.04
> XML build XML4J 4.3.6
>     Reporter: Amitabh Misra
>     Priority: Critical

>
> Please synchronize access to static member variable 
> org.apache.axis.utils.JavaUtils::enumMap. Multiple threads simultaneously 
> modifying this HashMap in method isEnumClass lead to internal corruption of 
> HashMap. Here are jvm memory traces from HP, where corruption of enumMap due 
> to circular dependency can be clearly seen. Check out all the values of 
> (Ljava/util/HashMap$Entry;) next. In an uncorrupted instance of HashMap, the 
> traversing through java.util.HapMapEntry.next should lead to a null in the 
> end. Here the last next points back to an Entry already traversed, leading to 
> hanging of the thread that called HashMap.get().
> The hash entries..
>  
> gdb) java obj $r4
> _mark = 0x1, _klass = 0x30883758, instance of type java/util/HashMap$Entry
> The instance size is 6 words.
> java/lang/Object:
> java/util/HashMap$Entry:
>   (Ljava/lang/Object;) key= 0x3489f5d0
>   (Ljava/lang/Object;) value= 0x388e9c50
>   (I) hash= -1719484955
>   (Ljava/util/HashMap$Entry;) next= 0x44110400
> (gdb) java obj 0x44110400
> _mark = 0x9, _klass = 0x30883758, instance of type java/util/HashMap$Entry
> The instance size is 6 words.
> java/lang/Object:
> java/util/HashMap$Entry:
>   (Ljava/lang/Object;) key= 0x35b23220
>   (Ljava/lang/Object;) value= 0x388e9c50
>   (I) hash= 209820133
>   (Ljava/util/HashMap$Entry;) next= 0x42631f90
> (gdb) java obj  0x42631f90
> _mark = 0x1, _klass = 0x30883758, instance of type java/util/HashMap$Entry
> The instance size is 6 words.
> java/lang/Object:
> java/util/HashMap$Entry:
>   (Ljava/lang/Object;) key= 0x3489f5d0
>   (Ljava/lang/Object;) value= 0x388e9c50
>   (I) hash= -1719484955
>   (Ljava/util/HashMap$Entry;) next= 0x44110400  <== This value should be 
> null, instead of pointing to an earlier entry, if HashMap was uncorrupted.
> Full stack trace.
>  
> #0  0x78cdf888 in compiled frame:
>   java.util.HashMap::get (java.lang.Object) ->java.lang.Object
> #1  0x78c3b0f0 in i2c_adapter frame
> #2  0x78c02e08 in interpreted frame: 
> org.apache.axis.utils.JavaUtils::isEnumClass (java.lang.Class) ->boolean
> #3  0x78c02d84 in interpreted frame: 
> org.apache.axis.encoding.ser.BeanSerializerFactory::<init> (java.lang.Class, 
> javax.xml.namespace.QName) ->void
> #4  0x78c3fd90 in c2i_adapter frame
> #5  0x79236ecc in compiled frame:
>   org.apache.axis.encoding.ser.BaseSerializerFactory::createFactory 
> (java.lang.Class, java.lang.Class, javax.xml.namespace.QName) 
> ->org.apache.axis.enco
> ding.SerializerFactory
> #6  0x79238640 in compiled frame:
>   org.apache.axis.client.Call::registerTypeMapping (java.lang.Class, 
> javax.xml.namespace.QName, java.lang.Class, java.lang.Class, boolean) ->void
> #7  0x7919a240 in i2c_adapter frame
> #8  0x78c02ee4 in interpreted frame: 
> com.wellsfargo.service.provider.HCFG.servicing.accountInquiry._2005.GetAccountInquirySoapBindingStub::createCall
>  ()
>  ->org.apache.axis.client.Call
> #9  0x78c02e08 in interpreted frame: 
> com.wellsfargo.service.provider.HCFG.servicing.accountInquiry._2005.GetAccountInquirySoapBindingStub::getAccountInq
> uiry 
> (com.wellsfargo.service.provider.HCFG.servicing.accountInquiry.getAccountInquiry._2005.GetAccountInquiryRequest_Type)
>  ->com.wellsfargo.service.prov
> ider.HCFG.servicing.accountInquiry.getAccountInquiry._2005.GetAccountInquiryResponse_Type
> #10 0x78c00100 in Java entry frame
> #11 0xc8ac1f08 in JavaCalls::call_helper+0x1d8 () from 
> /core2/carolina/wells424/libjvm.sl
> #12 0xc8c3d664 in os::os_exception_wrapper+0x34 () from 
> /core2/carolina/wells424/libjvm.sl
> #13 0xc8ac1d04 in JavaCalls::call+0x8c () from 
> /core2/carolina/wells424/libjvm.sl
> #14 0xc8c90958 in Reflection::invoke+0x278 () from 
> /core2/carolina/wells424/libjvm.sl
> #15 0xc8c950d4 in Reflection::invoke_method+0x114 () from 
> /core2/carolina/wells424/l
>  
>  
> Please write to me if you have questions.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to