axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Amitabh Misra (JIRA)" <axis-...@ws.apache.org>
Subject [jira] Created: (AXIS-2469) Java process hang due to Thread race condition in org.apache.axis.utils.JavaUtils::isEnumClass
Date Tue, 25 Apr 2006 21:16:18 GMT
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