Robert van Dijk created AXIS2-5473:
--------------------------------------

             Summary: System hangs (cpu 100%) after sending a corrupt soap 
message
                 Key: AXIS2-5473
                 URL: https://issues.apache.org/jira/browse/AXIS2-5473
             Project: Axis2
          Issue Type: Bug
    Affects Versions: 1.6.2, 1.6.1
         Environment: Tomcat 7.0.6
Java 6.0.27
Windows 7 (and unix too)
            Reporter: Robert van Dijk
            Priority: Critical


If I sent (using soapui) an invalid soap message, the cpu usage goes up to 
100%. There's no response. After stopping the webserver, the cpu usage goes 
back to normal.
 
There are some choice fields and an optional field in the request. If I mess up 
one specific closing tag (example: see corrupt soap message below), the problem 
occurs.

It's easy to "trigger" this problem.
- Generate code from wsdl
- Produce an aar file (no skeleton implementation needed)
- Deploy the aar (for example locally on your PC)
- Use soapui for the invalid soap message
- Windows task manager shows the performance



Corrupt soap message
**********************************************************************************************************************************************************
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; 
xmlns:v1="http://www.abc.com/Search/v1.0/";>
   <soapenv:Header/>
   <soapenv:Body>
      <v1:GetSearchByCriteriaRequest>
         <UserId>a</UserId>
         <SearchCriteria>
            <byMerchantId>
               <Next>
                  <TerminalId>b</TerminalId>
                  <IdentityId>c</IdentityId>
               </Next>
            </byMerchantId>
                                                                                
   <-- correct posistion </SearchCriteria> tag
         <Amount>d</Amount>
         </SearchCriteria>                                              <-- 
wrong position </SearchCriteria> tag
      </v1:GetSearchByCriteriaRequest>
   </soapenv:Body>
</soapenv:Envelope>


WSDL
**********************************************************************************************************************************************************
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="Search" targetNamespace="http://www.abc.com/Search/v1.0/";
        xmlns:tns="http://www.abc.com/Search/v1.0/"; 
xmlns:xs="http://www.w3.org/2001/XMLSchema";
        xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
        xmlns="http://schemas.xmlsoap.org/wsdl/";>

        <wsdl:types>
                <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                        targetNamespace="http://www.abc.com/Search/v1.0/";>

                        <xs:simpleType name="TerminalIdType">
                                <xs:restriction base="xs:string">
                                        <xs:minLength value="1" />
                                        <xs:maxLength value="2" />
                                </xs:restriction>
                        </xs:simpleType>
                        <xs:simpleType name="MerchantIdType">
                                <xs:restriction base="xs:string">
                                        <xs:minLength value="1" />
                                        <xs:maxLength value="2" />
                                </xs:restriction>
                        </xs:simpleType>
                        <xs:simpleType name="ItemType">
                                <xs:restriction base="xs:string">
                                        <xs:minLength value="1" />
                                        <xs:maxLength value="2" />
                                </xs:restriction>
                        </xs:simpleType>
                        <xs:simpleType name="AmountType">
                                <xs:restriction base="xs:string">
                                        <xs:minLength value="1" />
                                        <xs:maxLength value="2" />
                                </xs:restriction>
                        </xs:simpleType>
                        <xs:simpleType name="UserIdType">
                                <xs:restriction base="xs:string">
                                        <xs:minLength value="1" />
                                        <xs:maxLength value="2" />
                                </xs:restriction>
                        </xs:simpleType>
                        <xs:complexType name="ErrorCodeType">
                                <xs:sequence>
                                        <xs:element name="ErrCd" 
type="xs:string" />
                                        <xs:element name="ErrDesc" 
type="xs:string" />
                                        <xs:element name="ErrDetail" 
type="xs:string" minOccurs="0" />
                                </xs:sequence>
                        </xs:complexType>

                        <xs:complexType name="SearchDataType">
                                <xs:sequence>
                                        <xs:element name="TerminalId" 
type="tns:TerminalIdType" />
                                        <xs:element name="IdentityId" 
type="tns:ItemType" />
                                </xs:sequence>
                        </xs:complexType>


                        <xs:complexType name="ActionDataType">
                                <xs:sequence>
                                        <xs:element name="TerminalId" 
type="tns:TerminalIdType" />
                                        <xs:element name="IdentityId" 
type="tns:ItemType" />
                                </xs:sequence>
                        </xs:complexType>

                        <xs:complexType name="ContractIdKeyType">
                                <xs:sequence>
                                        <xs:element name="TerminalId" 
type="tns:TerminalIdType" />
                                        <xs:element name="IdentityId" 
type="tns:ItemType" />
                                </xs:sequence>
                        </xs:complexType>

                        <xs:complexType name="ActionKeyType">
                                <xs:sequence>
                                        <xs:element name="TerminalId" 
type="tns:TerminalIdType" />
                                        <xs:element name="IdentityId" 
type="tns:ItemType" />
                                </xs:sequence>
                        </xs:complexType>


                        <xs:complexType name="MerchantIdKeyType">
                                <xs:sequence>
                                        <xs:element name="MerchantId" 
type="tns:MerchantIdType" />
                                </xs:sequence>
                        </xs:complexType>

                        <xs:complexType name="GetSearchByCriteriaRequestType">
                                <xs:sequence>
                                        <xs:element name="UserId" 
type="tns:UserIdType" />
                                        <xs:element name="SearchCriteria">
                                                <xs:complexType>
                                                        <xs:choice>
                                                                <xs:element 
name="byMerchantId">
                                                                        
<xs:complexType>
                                                                                
<xs:choice>
                                                                                
        <xs:element name="First" type="tns:MerchantIdKeyType" />
                                                                                
        <xs:element name="Next" type="tns:ActionKeyType" />
                                                                                
</xs:choice>
                                                                        
</xs:complexType>
                                                                </xs:element>
                                                                <xs:element 
name="byContractId">
                                                                        
<xs:complexType>
                                                                                
<xs:choice>
                                                                                
        <xs:element name="First" type="tns:ContractIdKeyType" />
                                                                                
        <xs:element name="Next" type="tns:ActionKeyType" />
                                                                                
</xs:choice>
                                                                        
</xs:complexType>
                                                                </xs:element>
                                                        </xs:choice>
                                                </xs:complexType>
                                        </xs:element>
                                        <xs:element name="Amount" minOccurs="0" 
maxOccurs="1"
                                                type="tns:AmountType" />
                                </xs:sequence>
                        </xs:complexType>
                        <xs:complexType name="GetSearchByCriteriaResponseType">
                                <xs:sequence>
                                        <xs:choice>
                                                <xs:element name="ActionData" 
type="tns:ActionDataType"
                                                        minOccurs="0" 
maxOccurs="unbounded" />
                                                <xs:element name="Err" 
type="tns:ErrorCodeType" />
                                        </xs:choice>
                                </xs:sequence>
                        </xs:complexType>

                        <xs:complexType name="ActionDataResultType">
                                <xs:sequence>
                                        <xs:element name="ActionData" 
type="tns:ActionDataType" />
                                </xs:sequence>
                        </xs:complexType>


                        <xs:element name="GetSearchByCriteriaRequest"
                                type="tns:GetSearchByCriteriaRequestType" />
                        <xs:element name="GetSearchByCriteriaResponse"
                                type="tns:GetSearchByCriteriaResponseType" />
                </xsd:schema>
        </wsdl:types>


        <wsdl:message name="GetSearchByCriteriaRequest">
                <wsdl:part name="GetSearchByCriteriaRequest" 
element="tns:GetSearchByCriteriaRequest" />
        </wsdl:message>
        <wsdl:message name="GetSearchByCriteriaResponse">
                <wsdl:part name="GetSearchByCriteriaResponse"
                        element="tns:GetSearchByCriteriaResponse" />
        </wsdl:message>

        <wsdl:portType name="SearchPortType">
                <wsdl:operation name="GetSearchByCriteria">
                        <wsdl:input message="tns:GetSearchByCriteriaRequest" />
                        <wsdl:output message="tns:GetSearchByCriteriaResponse" 
/>
                </wsdl:operation>
        </wsdl:portType>

        <wsdl:binding name="SearchBinding" type="tns:SearchPortType">
                <soap:binding style="document"
                        transport="http://schemas.xmlsoap.org/soap/http"; />
                <wsdl:operation name="GetSearchByCriteria">
                        <soap:operation
                                
soapAction="http://www.abc.com/Search/v1.0/GetSearchByCriteria"; />
                        <wsdl:input>
                                <soap:body use="literal" />
                        </wsdl:input>
                        <wsdl:output>
                                <soap:body use="literal" />
                        </wsdl:output>
                </wsdl:operation>
        </wsdl:binding>

        <wsdl:service name="SomeService">
                <wsdl:port name="SearchPortType" binding="tns:SearchBinding">
                        <soap:address location="http://somewhere.on.the.web"; />
                </wsdl:port>
        </wsdl:service>
</definitions>
**********************************************************************************************************************************************************



--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
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