You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-user@axis.apache.org by Hernan Silberman <hs...@pdi.com> on 2005/04/15 03:07:41 UTC

cpp client segfault...

Hi there,

I'm getting a segfault trying to run my axis-c cpp client:

(gdb) backtrace
#0  0xb7580fe1 in axiscpp::SoapDeSerializer::getElementAsString () from /usr/pic1/axis-c-1-5-alpha-linux/lib/libaxiscpp_client.so.0
#1  0x0804ae79 in Axis_DeSerialize_tLevel (param=0x807f624, pIWSDZ=0x8056010) at tLevel.cpp:48
#2  0xb757a46d in axiscpp::SoapDeSerializer::getCmplxArray () from /usr/pic1/axis-c-1-5-alpha-linux/lib/libaxiscpp_client.so.0
#3  0xb755dabe in axiscpp::Call::getCmplxArray () from /usr/pic1/axis-c-1-5-alpha-linux/lib/libaxiscpp_client.so.0
#4  0x08049b56 in LevelsServicePortType::getFxLevelsForShot (this=0x804ecc0, Value0=0x804c328 "MAD", Value1=0x804c322 "sq100", Value2=0x804c31f "s1", Value3=0x804c316 "hsilberm") at LevelsServicePortType.cpp:75
#5  0x08049221 in main () at LevelsServiceClient.cpp:14

>From looking at this trace, the segfault occurs in the following code 
generated by axis-c (I've highlighted tLevel.cpp:48):

int Axis_DeSerialize_tLevel(tLevel* param, IWrapperSoapDeSerializer* pIWSDZ)
{
     param->Id = pIWSDZ->getElementAsString( "Id",0);
     param->Version = pIWSDZ->getElementAsLong( "Version",0);
     param->ProdCode = pIWSDZ->getElementAsString( "ProdCode",0);
     param->SequenceName = pIWSDZ->getElementAsString( "SequenceName",0);
48-->param->ShotName = pIWSDZ->getElementAsString( "ShotName",0);
     param->LevelName = pIWSDZ->getElementAsString( "LevelName",0);
     param->FxProperty = pIWSDZ->getElementAsString( "FxProperty",0);
     param->Note = pIWSDZ->getElementAsString( "Note",0);
     param->LevelType = pIWSDZ->getElementAsString( "LevelType",0);
     param->IsInPicture = pIWSDZ->getElementAsBoolean( "IsInPicture",0);
     return pIWSDZ->getStatus();
}

The SOAP message axis-c is deserializing is an array of tLevel instances and the 
segfault occurs while deserializing the first item.

I've been staring at this for a while now and I can't find my error though I'm 
sure it's another WSDL idiosyncrasy I have yet to learn.  I appreciate any help 
you might be able to offer.  SOAP messages and WSDL included below.

I'm using axis-c 1-5 Alpha.  My Server is an Axis Java server.  My Java clients 
generated by Axis Java work fine with this same WSDL.  There were no errors in 
my local AxisClientLog, but I've included the trace that results from the above 
execution at the end of this message.

thanks in advance... Hernan


--- SOAP Response Message:
<?xml version="1.0" encoding="UTF-8"?>
   <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
                     xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <soapenv:Body>
         <getFxLevelsForShotResponse xmlns="http://www.dreamworks.com/nile/schema/">
            <Element>
               <Id>id1</Id>
               <Version>9999</Version>
               <ProdCode>MAD</ProdCode>
               <SequenceName>sq100</SequenceName>
               <ShotName>s1</ShotName>
               <LevelName>name1</LevelName>
               <FxProperty>Dust</FxProperty>
               <Note>note1</Note>
               <LevelType>Fx</LevelType>
               <IsInPicture>true</IsInPicture>
            </Element>
            <Element>
               <Id>id2</Id>
               <Version>9999</Version>
               <ProdCode>MAD</ProdCode>
               <SequenceName>sq100</SequenceName>
               <ShotName>s1</ShotName>
               <LevelName>name2</LevelName>
               <FxProperty>Fire</FxProperty>
               <Note>note2</Note>
               <LevelType>Fx</LevelType>
               <IsInPicture>true</IsInPicture>
            </Element>
            <Element>
               <Id>id3</Id>
               <Version>9999</Version>
               <ProdCode>MAD</ProdCode>
               <SequenceName>sq100</SequenceName>
               <ShotName>s1</ShotName>
               <LevelName>name3</LevelName>
               <FxProperty>Smoke</FxProperty>
               <Note>note3</Note>
               <LevelType>Fx</LevelType>
               <IsInPicture>true</IsInPicture>
            </Element>
            <Element>
               <Id>id4</Id>
               <Version>9999</Version>
               <ProdCode>MAD</ProdCode>
               <SequenceName>sq100</SequenceName>
               <ShotName>s1</ShotName>
               <LevelName>name4</LevelName>
               <FxProperty>Rain</FxProperty>
               <Note>note4</Note>
               <LevelType>Fx</LevelType>
               <IsInPicture>true</IsInPicture>
            </Element>
            <Element>
               <Id>id5</Id>
               <Version>9999</Version>
               <ProdCode>MAD</ProdCode>
               <SequenceName>sq100</SequenceName>
               <ShotName>s1</ShotName>
               <LevelName>name5</LevelName>
               <FxProperty>Flames</FxProperty>
               <Note>note5</Note>
               <LevelType>Fx</LevelType>
               <IsInPicture>true</IsInPicture>
            </Element>
            <Element>
               <Id>id6</Id>
               <Version>9999</Version>
               <ProdCode>MAD</ProdCode>
               <SequenceName>sq100</SequenceName>
               <ShotName>s1</ShotName>
               <LevelName>name6</LevelName>
               <FxProperty>Foam</FxProperty>
               <Note>note6</Note>
               <LevelType>Fx</LevelType>
               <IsInPicture>true</IsInPicture>
            </Element>
         </getFxLevelsForShotResponse>
      </soapenv:Body>
   </soapenv:Envelope>

--- The WSDL:

<?xml version="1.0"?>
                                                                                                                                                             
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
             xmlns:soapbind="http://schemas.xmlsoap.org/wsdl/soap/"
             xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema"
             xmlns:tns="http://www.dreamworks.com/LevelService/"
             targetNamespace="http://www.dreamworks.com/LevelService/"
             xmlns:typens="http://www.dreamworks.com/nile/schema/">

 <types>
   <xsd:schema targetNamespace="http://www.dreamworks.com/nile/schema/"
       xmlns:xsd="http://www.w3.org/2001/XMLSchema"
       elementFormDefault="qualified"
       attributeFormDefault="unqualified">

      <xsd:element name="getFxLevelsForShot" type="typens:tRequestStruct"/>
      <xsd:complexType name="tRequestStruct">
         <xsd:sequence>
            <xsd:element name="ProdCode" type="xsd:string"/>
            <xsd:element name="SequenceName" type="xsd:string"/>
            <xsd:element name="ShotName" type="xsd:string"/>
            <xsd:element name="UserLogin" type="xsd:string"/>
         </xsd:sequence>
      </xsd:complexType>

      <xsd:element name="getFxLevelsForShotResponse" type="typens:tLevelCollection"/>
      <xsd:complexType name="tLevelCollection">
         <xsd:sequence>
            <xsd:element name="Element" type="typens:tLevel" minOccurs="0" maxOccurs="unbounded"/>
         </xsd:sequence>
      </xsd:complexType>
                                                                                                                                                             
      <xsd:simpleType name="tLevelType">
         <xsd:restriction base="xsd:string">
            <xsd:enumeration value="Fx"/>
            <xsd:enumeration value="Char"/>
         </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="tLevel">
        <xsd:sequence>
           <xsd:element name="Id" type="xsd:string"/>
           <xsd:element name="Version" type="xsd:long"/>
           <xsd:element name="ProdCode" type="xsd:string"/>
           <xsd:element name="SequenceName" type="xsd:string"/>
           <xsd:element name="ShotName" type="xsd:string"/>
           <xsd:element name="LevelName" type="xsd:string"/>
           <xsd:element name="FxProperty" type="xsd:string" nillable="true"/>
           <xsd:element name="Note" type="xsd:string" nillable="true"/>
           <xsd:element name="LevelType" type="typens:tLevelType"/>
           <xsd:element name="IsInPicture" type="xsd:boolean"/>
        </xsd:sequence>
      </xsd:complexType>
                                                                                                                                                             
   </xsd:schema>
 </types>

 <!-- message declns -->
 <message name="getFxLevelsForShotRequest">
   <part element="typens:getFxLevelsForShot"/>
 </message>
 <message name="getFxLevelsForShotResponse">
   <part element="typens:getFxLevelsForShotResponse"/>
 </message>

 <!-- port type declns -->
 <portType name="LevelsServicePortType">
   <operation name="getFxLevelsForShot">
     <input name="getFxLevelsForShotRequest" message="tns:getFxLevelsForShotRequest"/>
     <output name="getFxLevelsForShotResponse" message="tns:getFxLevelsForShotResponse"/>
   </operation>
 </portType>

 <!-- binding declns -->
 <binding name="LevelsServicePortSoapBinding" type="tns:LevelsServicePortType">
   <soapbind:binding
    transport="http://schemas.xmlsoap.org/soap/http"
    style="document"/>
   <operation name="getFxLevelsForShot">
   <soapbind:operation soapAction=""/>
     <input name="getFxLevelsForShotRequest">
       <soapbind:body use="literal"/>
     </input>
     <output name="getFxLevelsForShotResponse">
       <soapbind:body use="literal"/>
     </output>
   </operation>
 </binding>

 <service name="LevelsService">
    <port name="LevelsService" binding="tns:LevelsServicePortSoapBinding">
      <soapbind:address location="http://localhost:8080/nile/services/LevelsService"/>
    </port>
 </service>

</definitions>



--------- Axis C++ trace ----------
Axis C++ libraries built on Feb  8 2005 at 12:19:34
Trace produced on Thu Apr 14 18:06:07 2005
 
Dumping environment variables...
PATH=/usr/pic1/xerces-c-LINUX-c++-2_2_0/bin:/opt/java/j2sdk1.4.2_06/bin:/usr/pic1/apache-ant-1.6.2/bin:/home/oracle/product/9.2.0.5/bin:/pdi/cmd.apr:/pdi/cmd.apr/third_party/wrappers:/usr/local/bin:/usr/kerberos/bin:/usr/bin:/usr/sbin:/bin:/sbin:/usr/bsd:/etc:/usr/etc:/usr/bin/X11:/usr/sw/platform/lsf5.1/bin:/usr/java/bin:/usr/sw/nile/client:/usr/sw/nile/bin:/home/oracle/product/8.1.7/bin
LIBPATH was not set
LD_LIBRARY_PATH=/usr/pic1/xerces-c-LINUX-c++-2_2_0/lib:/usr/pic1/axis-c-1-5-alpha-linux/lib:/usr/lib:/usr/remote/lib:/usr/local/lib:/home/oracle/product/9.2.0.5/lib:/usr/lib:/usr/remote/lib:/usr/local/lib:/home/oracle/product/8.1.7/lib
AXISCPP_DEPLOY was not set
PWD=/usr/pic1/axis-c-1-5-alpha-linux/samples/client/levels/output
CLASSPATH was not set
INCLUDE was not set
LIB was not set
NLSPATH was not set
OS was not set
COMPUTERNAME was not set
USERNAME=hsilberm
HOSTNAME=tear
LANG=en_US
LOGIN was not set
LOGNAME=hsilberm
MACHTYPE=i386
OSTYPE=Linux
UID was not set
USER=hsilberm
-------------- Config File settings START ----------------
AXCONF_WSDDFILEPATH = NULL
AXCONF_LOGPATH = /usr/pic1/log/AxisLog
AXCONF_CLIENTLOGPATH = /usr/pic1/log/AxisClientLog
AXCONF_CLIENTWSDDFILEPATH = NULL
AXCONF_AXISHOME = NULL
AXCONF_TRANSPORTHTTP = 
/usr/pic1/axis-c-1-5-alpha-linux/lib/libaxis3_transport.so
AXCONF_TRANSPORTSMTP = NULL
AXCONF_XMLPARSER = /usr/pic1/axis-c-1-5-alpha-linux/lib/libaxis_xercesc.so
AXCONF_NODENAME = server name
AXCONF_LISTENPORT = listen port
AXCONF_SSLCHANNEL_HTTP = Unknown
AXCONF_CHANNEL_HTTP = 
/usr/pic1/axis-c-1-5-alpha-linux/lib/libaxis3_transport_channel.so
AXCONF_SECUREINFO = NULL
-------------- Config File settings END OF ----------------