axis-c-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Brian Brooks (JIRA)" <axis-c-...@ws.apache.org>
Subject [jira] Commented: (AXISCPP-858) client stub delete Ret; causes Debug Assertion Failed! Win32
Date Tue, 11 Apr 2006 15:36:19 GMT
    [ http://issues.apache.org/jira/browse/AXISCPP-858?page=comments#action_12374059 ] 

Brian Brooks commented on AXISCPP-858:
--------------------------------------

Thanks, Adrian.  

Regrettably, I'm back in graduate school now so I don't have the same exact environment I
did before.  I'll try to reproduce the problem with 1.6beta.  I'm pretty busy with end of
semester stuff but should have time in May.  

Do you need feedback before May 31, 2006?

Brian

> client stub delete Ret; causes Debug Assertion Failed! Win32
> ------------------------------------------------------------
>
>          Key: AXISCPP-858
>          URL: http://issues.apache.org/jira/browse/AXISCPP-858
>      Project: Axis-C++
>         Type: Bug

>   Components: Client - Stub
>     Versions: 1.5 Final
>  Environment: client-Windows XP
> server-Windows XP Apache Axis Java 1.2.1 deployed on Tomcat 5.5.9
>     Reporter: Brian Brooks

>
> The stub generated by 
> java -classpath %lib%\..\axis\wsdl2ws.jar;%axis% org.apache.axis.wsdl.wsdl2ws.WSDL2Ws
%wsdl% -o./ClientOut -lc++ -sclient
> has a defect.  In a debug win32 build, this results in the Microsoft runtime stopping
the a client with a failed assertion
>           /*
>          * If this ASSERT fails, a bad pointer has been passed in. It may be
>          * totally bogus, or it may have been allocated from another heap.
>          * The pointer MUST come from the 'local' heap.
>          */
>         _ASSERTE(_CrtIsValidHeapPointer(pUserData));
> the call stack at the point of failure is
>   _free_dbg(void *, int)
>   free(void *)
>   operator delete(void *)
>   Calculator::add(int, int)
>   main(int, char * *)
> The Calculator::add(int, int) function is declared in the generated stub Calculator.cpp.
 This function is shown below.  The line that reads
>   		delete Ret;
> seems to be the problem.
> /*Methods corresponding to the web service methods*/
> /*
>  * This method wrap the service method add
>  */
> xsd__int Calculator::add(xsd__int Value0, xsd__int Value1)
> {
> 	xsd__int* Ret = NULL;
> 	const char* pcCmplxFaultName;
> 	try
> 	{
> 		if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER)) 
> 			return *Ret;
> 	if (NULL==m_pCall->getTransportProperty("SOAPAction",false))
> 	{
> 		m_pCall->setTransportProperty(SOAPACTION_HEADER , "");
> 	}
> 		m_pCall->setSOAPVersion(SOAP_VER_1_1);
> 		m_pCall->setOperation("add", "http://localhost:8080/axis/Calculator.jws");
> 		applyUserPreferences();
> 		m_pCall->addParameter((void*)&Value0, "i1", XSD_INT);
> 		m_pCall->addParameter((void*)&Value1, "i2", XSD_INT);
> 		if (AXIS_SUCCESS == m_pCall->invoke())
> 		{
> 			if(AXIS_SUCCESS == m_pCall->checkMessage("addResponse", "http://localhost:8080/axis/Calculator.jws"))
> 			{
> 				Ret = m_pCall->getElementAsInt("addReturn", 0);
> 			}
> 		}
> 	m_pCall->unInitialize();
> 		xsd__int r = *Ret;
> 		delete Ret;
> 		return r;
> 	}
> 	catch(AxisException& e)
> 	{
> 		int iExceptionCode = e.getExceptionCode();
> 		if(AXISC_NODE_VALUE_MISMATCH_EXCEPTION != iExceptionCode)
> 		{
> 			throw SoapFaultException(e);
> 		}
> 		ISoapFault* pSoapFault = (ISoapFault*)
> 			m_pCall->checkFault("Fault","http://localhost:8080/axis/Calculator.jws" );
> 		if(pSoapFault)
> 		{
> 			m_pCall->unInitialize();
> 			throw SoapFaultException(e);
> 		}
> 		else throw;
> 	}
> }

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