diff options
author | vzykov <vzykov@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2010-07-21 10:04:02 +0000 |
---|---|---|
committer | vzykov <vzykov@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2010-07-21 10:04:02 +0000 |
commit | 0a5a03c75cde7f68695ada98646c147413520a23 (patch) | |
tree | c5486250411f36a24837d8322ac1fe93fcd24ca8 /TAO/tao/ORB_Core.cpp | |
parent | b4681974e4e9ed4b999e2b0c7db9d19724ee03b7 (diff) | |
download | ATCD-0a5a03c75cde7f68695ada98646c147413520a23.tar.gz |
Wed Jul 21 09:57:34 UTC 2010 Vladimir Zykov <vladimir.zykov@prismtech.com>
* tao/ORB_Core_TSS_Resources.cpp:
* tao/ORB_Core.cpp:
* tao/ORB_Core.inl:
* tao/ORB_Core_TSS_Resources.h:
* tao/ORB_Core.h:
Fixed bug 2533. Now ORB_Core's TSS resources are cleaned during
orb destroy.
* tests/Portable_Interceptors/Slot/driver.cpp:
Explicitely destroy orb since doing this implicitely when main()
returns is too late.
Diffstat (limited to 'TAO/tao/ORB_Core.cpp')
-rw-r--r-- | TAO/tao/ORB_Core.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/TAO/tao/ORB_Core.cpp b/TAO/tao/ORB_Core.cpp index 86ebf2365e5..092e3a10528 100644 --- a/TAO/tao/ORB_Core.cpp +++ b/TAO/tao/ORB_Core.cpp @@ -2368,6 +2368,15 @@ TAO_ORB_Core::destroy (void) // Invoke Interceptor::destroy() on all registered interceptors. this->destroy_interceptors (); + // Clean TSS resources. This cannot be done in shutdown() since the later + // can be called during an upcall and once it's done it will remove + // resources such as PICurrent that are required after the upcall. And this + // cannot be postponed to TAO_ORB_Core's destructor as fini() needs access + // to orb core and what is more important orb core can be destroyed too late + // when some required libraries are already unloaded and we'll get + // 'pure virtual method called' during cleanup. + this->get_tss_resources ()->fini (); + // Now remove it from the ORB table so that it's ORBid may be // reused. TAO::ORB_Table::instance ()->unbind (this->orbid_); |