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 Radoslav Dorcik <di...@gmail.com> on 2007/06/27 14:57:37 UTC

Axis C 1.4 support for 64bit architecture - unknown exception

Hello Guys,

we decided to use Axis C 1.4 for our project (simple SOAP client
communication). Problem is that 64 bit compiled version of libraries doesn't
work:
I got unknown exception in (found by tracing in gdb)
axispp::SoapMethod::serializeOutputParam() and program is aborted

This part of code causes the Exception in Axis library:
for(<list<Param*>::iterator it = m_OutputParams.begin(); it !=
m_OutputParams.end(); it++)

This part of code causes the Exception in STL (probably list):
{ return static_cast<_Node*>(_M_node)->_M_data; }

It happens during "invoke" call of WS client generated by WSDL2C but also
with Soap Test suite included in Axis C++ 1.4.

With 1.6b we were able to run SOAP client communication. Param.h/Param.cpp
is different between 1.6b and 1.4 version of Axis C++.

sk1u05r9@sk16496c:~> uname -a
Linux sk16496c 2.6.5-7.244-smp #1 SMP Mon Dec 12 18:32:25 UTC 2005 x86_64
x86_64 x86_64 GNU/Linux

Can be Axis 1.4 C used on above machine ? Do you need more informations ?

32bit version (libs and apps) are working fine with that machine but our
application should be compiled as 64 binary.

Thanks,
Radoslav Dorcik

Re: Axis C 1.4 support for 64bit architecture - unknown exception

Posted by Radoslav Dorcik <di...@gmail.com>.
Hi Guys,

we finaly found issue with Axis 1.4 C lib on 64 bit architecture since they
are using "unsigned int" as storage for "string::npos"
but string::npos on 64 bit architecture is 8 bytes. And when they do
something like this:
unsigned int npos = string.find...("fo");  /* not found, returns npos */
if(npos == string::npos)
{
   //not reached on 64 bit
}

These classes are affected:
BasicTypeSerializer.cpp
Axis2Transport.cpp

Now i don't know what to do...

Regards,
Radoslav


On 6/27/07, Radoslav Dorcik <di...@gmail.com> wrote:
>
> Hello Guys,
>
> we decided to use Axis C 1.4 for our project (simple SOAP client
> communication). Problem is that 64 bit compiled version of libraries doesn't
> work:
> I got unknown exception in (found by tracing in gdb)
> axispp::SoapMethod::serializeOutputParam() and program is aborted
>
> This part of code causes the Exception in Axis library:
> for(<list<Param*>::iterator it = m_OutputParams.begin(); it !=
> m_OutputParams.end(); it++)
>
> This part of code causes the Exception in STL (probably list):
> { return static_cast<_Node*>(_M_node)->_M_data; }
>
> It happens during "invoke" call of WS client generated by WSDL2C but also
> with Soap Test suite included in Axis C++ 1.4.
>
> With 1.6b we were able to run SOAP client communication. Param.h/Param.cpp
> is different between 1.6b and 1.4 version of Axis C++.
>
> sk1u05r9@sk16496c:~> uname -a
> Linux sk16496c 2.6.5-7.244-smp #1 SMP Mon Dec 12 18:32:25 UTC 2005 x86_64
> x86_64 x86_64 GNU/Linux
>
> Can be Axis 1.4 C used on above machine ? Do you need more informations ?
>
> 32bit version (libs and apps) are working fine with that machine but our
> application should be compiled as 64 binary.
>
> Thanks,
> Radoslav Dorcik
>
>