Bug 2934 - The implementation of -ORBMuxedConnectionMax is unsafe.
Summary: The implementation of -ORBMuxedConnectionMax is unsafe.
Status: RESOLVED FIXED
Alias: None
Product: TAO
Classification: Unclassified
Component: ORB (show other bugs)
Version: 1.5.8
Hardware: All All
: P3 major
Assignee: Dale Wilson
URL:
Depends on:
Blocks: 2935
  Show dependency tree
 
Reported: 2007-05-16 10:58 CDT by Dale Wilson
Modified: 2008-08-07 14:22 CDT (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Dale Wilson 2007-05-16 10:58:51 CDT
The implementation of -ORBMuxedConnectionMax in Transport_Cache_Manager simply waits on a condition variable when it determines that it is not allowed to open a new connection.  This is not a safe way to wait for many (most!) TAO configurations.   

For example, if the thread that waits is involved in a nested upcall this blocks everything on the stack -- including possibly code that would allow the request to continue.

I'm working on a test and fix for this, sponsored by ATD.

Dale @ OCI
Comment 1 Dale Wilson 2007-08-01 13:41:35 CDT
Changes checked in for x.6

Wed Aug  1 15:54:01 UTC 2007  Dale Wilson  <wilsond@ociweb.com>
Comment 2 Johnny Willemsen 2007-08-21 09:27:09 CDT
also reopen because changes are reverted
Comment 3 Adam Mitz 2008-08-07 14:10:16 CDT
(In reply to comment #2)
> also reopen because changes are reverted
> 

At this point is this bug a duplicate of 2935?  By that I mean Chad's changes for 2935 should have resolved it.

Comment 4 Adam Mitz 2008-08-07 14:22:54 CDT
(In reply to comment #3)
> (In reply to comment #2)
> > also reopen because changes are reverted
> > 
> 
> At this point is this bug a duplicate of 2935?  By that I mean Chad's changes
> for 2935 should have resolved it.
> 

Based on a discussion with Dale and examination of the code, this particular fix from 1 August 2007 was NOT reverted on 17 August 2007.  I don't see any evidence of using a mutex & condition variable for the wait_for_connection.  It's using the leader-follower stuff.

Resolving.