[ 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]