axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bjorn Townsend (JIRA)" <axis-...@ws.apache.org>
Subject [jira] Commented: (AXIS-2469) Java process hang due to Thread race condition in org.apache.axis.utils.JavaUtils::isEnumClass
Date Wed, 26 Apr 2006 16:12:03 GMT
    [ 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


Mime
View raw message