[tao-bugs] Cannot demarshal valuetypes that indirectly support abstract interfaces

Johnny Willemsen jwillemsen at remedy.nl
Wed Sep 9 13:38:59 CDT 2015


Hi,

Thanks for using the PRF form. This is a very special case, maybe
somewhere a small bug in the code generation. Could you rework your
example into a TAO unit test, see https://github.com/DOCGroup/ATCD/ for
the main repository, see TAO/tests/OBV and TAO/tests/Abstract_Interface
for some tests in this area. Make it a fully automated test as the
others so that we can easily build it and run it. Maybe you can see if
you can find the bug, probably in the code generation by TAO_IDL.

Best regards,

Johnny Willemsen
Remedy IT
http://www.theaceorb.nl

On 09/09/2015 05:33 PM, Tadeu Martins wrote:
>     TAO VERSION: 2.3.0
>     ACE VERSION: 6.3.0
> 
>     HOST MACHINE and OPERATING SYSTEM:
>         Linux 4.1.0-2-amd64 #1 SMP Debian 4.1.6-1 (2015-08-23) x86_64
> GNU/Linux
> 
>     THE $ACE_ROOT/ace/config.h FILE:
>         #include "ace/config-linux.h"
> 
>     THE $ACE_ROOT/include/makeinclude/platform_macros.GNU FILE:
>         include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
> 
>     DOES THE PROBLEM AFFECT:
>         COMPILATION?
>             No.
>         LINKING?
>             No.
>         EXECUTION?
>             Yes.
> 
>     SYNOPSIS:
>         A program trying to demarshal a valuetype derived from another
> one that supports an abstract interface throws CORBA::MARSHAL.
> 
>     DESCRIPTION:
>         At some point during the demarshalling, the program calls the
> member function
> `CORBA::ValueFactoryBase::create_for_unmarshal_abstract()`. The source
> code has a comment telling this function should never be called. It
> returns a null pointer. From there on, a series of failures occur until
> `TAO::Synch_Twoway_Invocation::check_reply_status` throws a
> CORBA::MARSHAL.
> 
>     REPEAT BY:
>         I provided a test scenario at
> <https://github.com/tmcb/tao_valuetype_demarshalling_bug>. It consists
> of:
> 
>        - A valuetype that indirectly supports an abstract interface
>          (through another valuetype).
>         - An interface with operations that produce instances of that
>           abstract interface.
>         - An implementation of that producer interface. The operations'
>           implementations produce instances of the derived valuetype.
>         - A client that consumes those operations.
> 
>     WORKAROUND:
>         The client works if support to the abstract interface is added
> to the derived valuetype.
> 
> _______________________________________________
> tao-bugs mailing list
> tao-bugs at list.isis.vanderbilt.edu
> http://list.isis.vanderbilt.edu/cgi-bin/mailman/listinfo/tao-bugs



More information about the tao-bugs mailing list