[omniORB] SIGSEGV on deffered request.

Duncan Grisby duncan@grisby.org
Fri Nov 8 14:38:01 2002


On Wednesday 6 November, Vasily Tchekalkin wrote:

> I developing project based on omniORB 4. In this project heavily used 
> CORBA deffered request. And under high load I've got SIGSEGV in 
> omni::omni_RequestImpl_callDesc::marshalArguments.

Very odd. Something somewhere must be corrupting the stack. If you
look at the code at step 5 in your trace, you'll see that just before
the call to omniObjRef::_invoke(), the call descriptor object is
created on the stack, passing the this pointer. The call descriptor
constructor sets pd_impl to that value. The backtrace shows that the
this pointer is not null, so somewhere along the line the pd_impl
member has been corrupted. The other members of the call descriptor
are invalid too.

I don't really know what to suggest to help track this down. You might
try using a memory tracking tool like Purify or valgrind, but those
tools don't tend to notice stack errors, only heap ones. You might be
lucky and find that the corruption hits invalid / heap memory too.

Cheers,

Duncan.

-- 
 -- Duncan Grisby         --
  -- duncan@grisby.org     --
   -- http://www.grisby.org --