[ http://issues.apache.org/jira/browse/AXIS-2469?page=comments#action_12376505 ]
Bjorn Townsend commented on AXIS-2469: -------------------------------------- Amitabh, This has been reported before: http://issues.apache.org/jira/browse/AXIS-2284 And is fixed in Axis 1.4, due to be released shortly. Thanks, Bjorn > 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
