[omniORB] MARSHAL exception

Markus Redeker markus@ibp.de
Fri, 14 Apr 2000 17:39:29 +0200


Hi,

there is still another, smaller, problem that can be seen from the example
programs, in this case, from echo_dsiimpl.

The program runs without visible problems, but a MARSHAL exception is thrown
twice. The statement responsible for it is

    a.replace(CORBA::_tc_string, 0);

in MyDynImplementation::invoke(). Is the exception caused by the value of
the second parameter of Any::replace()? (Following the CORBA specification,
it can be a NULL pointer.)

What does this MARSHAL exception mean and would it cause problems in "real"
applications?

I include a short debug session and a backtrace at the first occurence of
the exception. The breakpoint is in the function
MemBufferedStream::overrun_error() in the file mbufferedStream.cc. The
client program is, as before, echo_diiclt.


Markus



(gdb) run -ORBtraceLevel 10 -ORBtraceInvocations
Starting program: /home/markus/omni/src/examples/dsi/echo_dsiimpl
-ORBtraceLevel 10 -ORBtraceInvocations
Cannot insert breakpoint 1:
Temporarily disabling shared library breakpoints:
1 
[New Thread 7064]
[New Thread 7063]
[New Thread 7065]
[New Thread 7066]
omniORB: gateKeeper is tcpwrapGK 1.0 - based on tcp_wrappers_7.6 
omniORB: Creating ref to remote: key<0x494e4954>
 target id      : IDL:omg.org/CORBA/Object:1.0
 most derived id: omg.org/CORBA/InitialReferences:1.0
omniORB: Initialising omniDynamic library.
omniORB: Initialising incoming rope factories.
omniORB: Starting incoming rope factories.
[New Thread 7067]
omniORB: Creating ref to local: root<0> (not activated)
 target id      : IDL:omg.org/CORBA/Object:1.0
 most derived id: IDL:Echo:1.0
omniORB: Activating: root<0> (has local refs)
'IOR:010000000d00000049444c3a4563686f3a312e300000000001000000000000002e000000010100000f0000003139352e3232322e3232372e313700002a0a6f740e000000fea930f73800001b970000000000'
[New Thread 7076]
connect from 195.222.227.17
omniORB: Handling a GIOP LOCATE_REQUEST.
omniORB: Dispatching remote call 'echoString' to: root<0>
[Switching to Thread 7076]

Breakpoint 1, MemBufferedStream::overrun_error (this=0x8062940) at
../mbufferedStream.cc:318
Current language:  auto; currently c++
(gdb) backtrace
#0  MemBufferedStream::overrun_error (this=0x8062940) at
../mbufferedStream.cc:318
#1  0x400cb8a4 in MemBufferedStream::align_and_get_bytes (this=0x8062940,
align=ALIGN_4, nbytes=4) at
../../../../../include/omniORB3/bufferedStream.h:740
#2  0x400d05af in operator<<= (a=@0xbf3ff85c, s=@0x8062940) at
../../../../../include/omniORB3/bufferedStream.h:573
#3  0x4022d810 in void fastCopyUsingTC<MemBufferedStream, MemBufferedStream>
(tc=0x8052218, ibuf=@0x8062940, obuf=@0x80629f0) at ../tcParser.cc:105
#4  0x401bdffd in tcParser::copyFrom (this=0x8062a30, mbuf=@0x8062940,
flush=1) at ../tcParser.cc:518
#5  0x401bdb25 in AnyP::AnyP (this=0x80629d0, existing=0x8062920) at
../anyP.cc:64
#6  0x401a908c in CORBA::Any::Any (this=0x80629c0, a=@0xbf3ff9f4) at
../any.cc:176
#7  0x401cf611 in NamedValueImpl::NamedValueImpl (this=0x8062990,
name=0x804eb0b "", value=@0xbf3ff9f4, flags=1) at ../namedValue.cc:65
#8  0x401d05b6 in NVListImpl::add_value (this=0x80628d8, name=0x804eb0b "",
value=@0xbf3ff9f4, flags=1) at ../nvList.cc:103
#9  0x804a334 in MyDynImpl::invoke (this=0x805e270, request=0xbf3ffa80) at
echo_dsiimpl.cc:43
#10 0x401dc1fb in PortableServer::DynamicImplementation::_dispatch
(this=0x805e270, giop_s=@0xbf3ffbd8) at ../dynamicImplementation.cc:95
#11 0x40079eac in omniOrbPOA::dispatch (this=0x805e080, giop_s=@0xbf3ffbd8,
id=0x805e298) at ../poa.cc:1291
#12 0x4006e371 in omniLocalIdentity::dispatch (this=0x805e298,
giop_s=@0xbf3ffbd8) at ../localIdentity.cc:138
#13 0x4009dd18 in GIOP_S::HandleRequest (this=0xbf3ffbd8, byteorder=true) at
../giopServer.cc:577
#14 0x4009d4f6 in GIOP_S::dispatcher (s=0x805e6b0) at ../giopServer.cc:379
#15 0x400bb18c in tcpSocketWorker::_realRun (arg=0x805e6b0) at
../tcpSocketMTfactory.cc:1395
#16 0x400d2fb0 in omniORB::giopServerThreadWrapper::run (this=0x805cfd0,
fn=0x400bb110 <tcpSocketWorker::_realRun(void *)>, arg=0x805e6b0) at
../../../../../include/omniORB3/omniORB.h:534
#17 0x400bb101 in tcpSocketWorker::run (this=0x8062750, arg=0x805e6b0) at
../tcpSocketMTfactory.cc:1367
#18 0x4029cd93 in omni_thread_wrapper ()
#19 0x402af597 in pthread_start_thread (arg=0xbf3ffea4) at manager.c:192
(gdb) cont
Continuing.
omniORB: throw MARSHAL from mbufferedStream.cc:318
omniORB: Dispatching remote call 'echoString' to: root<0>

Breakpoint 1, MemBufferedStream::overrun_error (this=0x8062970) at
../mbufferedStream.cc:318