[omniORB] NT & multiple server application with BOAiiop_port sepcified

Arnault Bonafos arnault.bonafos@tumbleweed.com
Wed, 24 Jan 2001 15:08:55 -0800


--------------1F9AEE06BAC29CDBE6CAB9B9
Content-Type: text/plain; 
 charset=us-ascii
Content-Transfer-Encoding: 7bit


Hello,
I'm tracing down a problem we discovered when running in parallel two
times our sample application.
The configuration is NT Server 4.0 + omniORB_2.6.1, and we're specifying
the -BOAiiop_port argument to bind on a "well known" port as server. The
symptom is that both application do their job but the second one does
not quit, it seems that we still have a thread running for the in/out
connection scavenger.
I've traced down the problem when we ask the BOA to shutdown,
CORBA::BOA::impl_shutdown, we end up in
tcpSocketIncomingRope::cancelThreads where we want to wake up the
rendezvouser thread blocked on an accept call by doing a connect on the
socket. Doing so, the thread should exit by itself.

The point is that the first program wakes up by this connect call the
thread in the second program, but not itself, and then later we're
blocked on the call rendezvouser->join(0) in the cancelThread function
in the first program.

So my questions are:
1. should the connect call (I've tried to loop, only one is sucessfull)
wake up all the accept calls
2. is it possible that my wsock32.dll library is buggy ?
3. should the orb kill all the threads somewhere else ? (I've read about
a NT dll global destructor function).

One solution to my problem is to use a different port for every
application, in which case each thread is unblocked seprately.

--
Arnault Bonafos     Software Engineer
Tumbleweed    Communications    Corp.
ph: (650) 216-2027  fx: (650) 216-2003





--------------1F9AEE06BAC29CDBE6CAB9B9
Content-Type: text/html; 
 charset=us-ascii
Content-Transfer-Encoding: 7bit

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
&nbsp;
<br>Hello,
<br>I'm tracing down a problem we discovered when running in parallel two
times our sample application.
<br>The configuration is NT Server 4.0 + omniORB_2.6.1, and we're specifying
the -BOAiiop_port argument to bind on a "well known" port as server. The
symptom is that both application do their job but the second one does not
quit, it seems that we still have a thread running for the in/out connection
scavenger.
<br>I've traced down the problem when we ask the BOA to shutdown, CORBA::BOA::impl_shutdown,
we end up in tcpSocketIncomingRope::cancelThreads where we want to wake
up the rendezvouser thread blocked on an accept call by doing a connect
on the socket. Doing so, the thread should exit by itself.
<p>The point is that the first program wakes up by this connect call the
thread in the second program, but not itself, and then later we're blocked
on the call rendezvouser->join(0) in the cancelThread function in the first
program.
<p>So my questions are:
<br>1. should the connect call (I've tried to loop, only one is sucessfull)
wake up all the accept calls
<br>2. is it possible that my wsock32.dll library is buggy ?
<br>3. should the orb kill all the threads somewhere else ? (I've read
about a NT dll global destructor function).
<p>One solution to my problem is to use a different port for every application,
in which case each thread is unblocked seprately.
<pre>--&nbsp;
Arnault Bonafos&nbsp;&nbsp;&nbsp;&nbsp; Software Engineer
Tumbleweed&nbsp;&nbsp;&nbsp; Communications&nbsp;&nbsp;&nbsp; Corp.
ph: (650) 216-2027&nbsp; fx: (650) 216-2003</pre>
&nbsp;
<p>&nbsp;</html>

--------------1F9AEE06BAC29CDBE6CAB9B9--