[omniORB] Unexpected abort coming from omni_thread_wrapper

Antoine Thierry athierry@alphacent.com
Mon, 28 Jan 2002 16:17:49 +0100


I'm working on a application server running with OmniORB3

first, the client i used for my test is a C++ command line client running 
with omniORB too.
I recently got a problem.
i've got 2 base (let's call them base1 and base2) objects which are used as 
base servant for my client programs (which get the reference through the IORs 
fo this 2 objects)
The problem i got is the following.
call1 : session1 = base1->getSession() (return a handler (session1) on a 
session destinated to be used bye the client)
call2 : base1->close(session1) : closed the session.

Until there, everything works, but, after the last call of my client (and it 
is not dependant of the number of calls a make), the client ends normally, 
but the server aborts. i've noticed too that is depends also of the number of 
time a call the client, and of the number of Corba call it's making. but this 
is quite random.

My server is multithreaded, so i've decided to debug it, because i didn't 
found what bugs.
i've noticed one thing : the aborted is due to a call of the pthread lib 
pthread_kill function. which is called the following way : 

omni_thread_wrapper -> omni_thread::lock -> omni_mutex::lock -> Unknown 
function (x3) -> abort -> raise -> pthread_kill -> __kill

and then .. i got a Segmentation violation.

has anybody got any Id ?

Thanks in advance

Antoine Thierry

ps : i'm going to recompile my OmniORB to try to debug through it
ps2 : for info, i used my own thread specific datas, could it be that ?