Re: Problems marshalling an any



Hi Marc,

It seems that I just stumbled over the same problem.

The line
>     case CORBA_tk_string :
>         ulval = strlen(*(char **)*val) + 1;
segfaults when using the orbit-ird and the test-ird client (together
with a previous bug-fix in the CORBA_PrimitiveDef__create() method).

The Final Report of the C-Revision Task Force (ptc/2000-05-10) Issue
2563 addresses this problem:

http://cgi.omg.org/issues/c_mapping-rtf.html#Issue2563


When using gdb to analyze the problem it prints the following:

(gdb) p *(char**)val
$5 0x80a58bc

(gdb) p *(char**)*val
$5 0x0

The second case which is used in the code lets the strlen segfault. The
first one shows an empty string (in my case). So I assume that this
should be the right way to go. I try this and send a patch if it turns
out to be correct.

Michael

"Verwerft, Marc" wrote:
> 
> Hi Sebastian,
> 
> No, I'm not using the ORBit event server. I noticed in the documentation
> that it wasn't ready.
> I am using the JavaORB event service to attach to as an (ORBit) client.
> 
> The problems I'm having now are related to sending an 'any' value across.
> I'm currently using the test-any-client/server to track down what's going on
> and found what's happening.
> 
> Snippet from ORBit_marshal_value() in corba_any.c :
>          case CORBA_tk_string :
>         ulval = strlen(*(char **)*val) + 1;
> 
>         *val = ALIGN_ADDRESS(*val, ALIGNOF_CORBA_POINTER);
> 
>         giop_send_buffer_append_mem_indirect_a(buf,
>                                                &ulval,
>                                                sizeof(CORBA_unsigned_long));
>         giop_message_buffer_append_mem(GIOP_MESSAGE_BUFFER(buf), *(char
> **)*val, ulval);
> 
> For marshalling the data, the ALIGN_ADDRESS(addr,boundary) macro is used.
> However in the config.h file I have a #define ALIGNOF_CORBA_POINTER 0 (All
> other ALIGNOF_ defines are also 0). Using this I invariably get as result 0
> and the program crashes when invoking giop_message_buffer_append_mem().
> 
> So, I should probably alter these definitions. Since I cannot run the
> configure script on OpenVMS, could you mail me your settings (and probably
> CPU type) to use as a starting point ?
> 
> Thanks for helping me out.
> 
> Marc.
> 
> I've got an enormous mind. Sometimes it takes me a whole week to make it up.
> 
> > ----------
> > From:         Sebastian Wilhelmi[SMTP:wilhelmi ira uka de]
> > Reply To:     orbit-list gnome org
> > Sent:         Wednesday 4 October 2000 12:18
> > To:   orbit-list gnome org
> > Subject:      Re: Problems marshalling an any
> >
> > Hi Marc,
> >
> > > I'm currently testing a client (in ORBit 0-5-3 stable but ported to VMS,
> > > using C bindings) program that attaches to an eventchannel as a
> > > pushsupplier. Everything seems to work, I get the channel from an ior,
> > > invoke the for_suppliers() and obtain_push_consumer() methods. Things
> > break
> > > when I try to send something (any-thing ;-) ) and it appears to go wrong
> > in
> > > the ORBit_marshal_any() call. I invariably get an access violation (VMS
> > > terms for telling me that I'm reading/writing outside of my memory
> > space)
> >
> > Just one question: Are you using the event server from ORBit? It's not
> > ready.
> > Actually it is not even close to be ready, honestly, it should be removed
> > from
> > the surface of the earth to make it a better place. It's all my fault.
> >
> > Bye,
> > Sebastian
> > --
> > Sebastian Wilhelmi                   |            här ovanför alla molnen
> > mailto:wilhelmi ira uka de           |     är himmlen så förunderligt blå
> > http://goethe.ira.uka.de/~wilhelmi   |
> >
> > _______________________________________________
> > orbit-list mailing list
> > orbit-list gnome org
> > http://mail.gnome.org/mailman/listinfo/orbit-list
> >
> 
> _______________________________________________
> orbit-list mailing list
> orbit-list gnome org
> http://mail.gnome.org/mailman/listinfo/orbit-list




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]