Summary: | Dynamically linking/unlinking the ORB and sharing resources between ORB and application | ||
---|---|---|---|
Product: | TAO | Reporter: | Irfan Pyarali <irfan> |
Component: | ORB | Assignee: | DOC Center Support List (internal) <tao-support> |
Status: | NEW --- | ||
Severity: | normal | CC: | Detlef.Becker, Dietrich.Quehl, Karlheinz.Dorn |
Priority: | P2 | ||
Version: | 1.1.10 | ||
Hardware: | All | ||
OS: | All | ||
Bug Depends on: | 846 | ||
Bug Blocks: | 662 |
Description
Irfan Pyarali
1999-12-04 16:10:45 CST
This problem is related to Bug 225 and both should be solved simultaneously. *** Bug 409 has been marked as a duplicate of this bug. *** TAO 1.1.8 has a series of updates that address all of these issues. Reopening this bug report. Since I implemented the updates, I'll accept responsibility for this bug report. All of the issues discussed in this bug report have been addressed. However, I'd like to make sure that issue "(b)" above has been dealt with properly. Specifically, I need to ensure that the default resource factories are behaving as described above with respect to the reactor life cycle. Note that the reactor issues should have been addressed back in TAO 1.1.7. Specifically, TAO now keeps track of all open connections when the "reactive" ORB concurrency model is used. Upon ORB destruction, all event handlers associated with those open connections are removed from whatever reactor is in use, and explicitly closed during this process. This allows application-level reactors (as opposed to ORB-level) to be shared safely with the ORB and other entities. The "thread-per-connection" ORB concurrency model shouldn't be a problem since connections are ORB threads are shutdown when the ORB is destroyed. Issue "(b)" was not handled by the recent DLL ORB changes. I'll fix this problem ASAP. This bug is fixed for TAO 1.1.10. Relevant details are in the following ChangeLog entry: ChangeLogTag:Mon Sep 11 12:53:03 2000 Ossama Othman <ossama@uci.edu> I just discovered a potential problem. TSS types used in TAO (i.e. ACE_TSS types) register TSS keys and destructors with the ACE_Cleanup_TSS class which is invoked by the ACE_Object_Manager when the Object Manager goes out of scope. This is a problem since the pointers, for example, used in the TSS destructor may be dangling pointers by the time the destructor is invoked. I ran into this problem while testing the new "set_tss_resource()" method in the ORB Core. The set_tss_resource() method sets the ORB Core pointer in current thread's TAO_ORB_Core_TSS_Resources instance. This is a problem since the ORB Core may have already been destroyed by the time the ACE_TSS_Cleanup class destroys the TSS resource instance. This means that the ORB core pointer in TAO_ORB_Core_TSS_Resources may no longer be valid by the time the ~TAO_ORB_Core_TSS_Resources destructor is invoked! We need to examine all other uses of the ACE_TSS class in TAO, including the TAO_TSS_Singleton. Mine again, I guess. Ossama, could you please capture the latest status? Nothing has changed, which is why I haven't added anything further to this bug report. When I have more comments, I'll add them. Looks line bug 846 needs to be fixed if this one is ever going to be solved. Notice that 846 contains the beginning of a solution to the problem--although it was made to a 1.1.x beta. However, perhaps it could serve as a starting point. |