diff options
author | bala <balanatarajan@users.noreply.github.com> | 2004-11-16 17:41:18 +0000 |
---|---|---|
committer | bala <balanatarajan@users.noreply.github.com> | 2004-11-16 17:41:18 +0000 |
commit | f557331bec53ba9d87d9d60e741388140806c669 (patch) | |
tree | 7cea80cf4707a0fe831bcd47b60b7adf8d899216 | |
parent | fa41fe05c58876a661c3d5f29baa0f39cab3e37f (diff) | |
download | ATCD-f557331bec53ba9d87d9d60e741388140806c669.tar.gz |
ChangeLogTag:Tue Nov 16 14:05:33 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
-rw-r--r-- | TAO/ChangeLog | 34 | ||||
-rw-r--r-- | TAO/tao/ORB_Core.cpp | 4 |
2 files changed, 32 insertions, 6 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index 89f6117e772..0b09c9c727f 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,23 @@ +Tue Nov 16 14:05:33 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu> + + * tao/ORB_Core.cpp (run): + + A simple fix for thread-per-connection. Servers could crash + randomly if the orb was shutdown during the upcall. The + thread that was in the upcall is an ORB spawned thread. When we + call ORB::shutdown () from the upcall thread, the main thread + (which is in ORB::run ()) is woken up and removed from the + ORB. The main thread exits from the program leaving the thread + shutting down the ORB in limbo. Bunch of allocations done by the + main thread in the service configurator and object manager are + all destroyed crashing the spawned thread. + + This fix addresses the above problem by making the thread in + ORB::run () wait on Thread_Manager::wait (), if the ORB is + shutting down and iff TPC is used. + + Thanks to Carlos O'Ryan for bringing this to my notice. + Tue Nov 16 09:45:26 2004 Jeff Parsons <j.parsons@vanderbilt.edu> * TAO_IDL/be/be_visitor_traits.cpp: @@ -37,10 +57,10 @@ Tue Nov 16 13:04:12 UTC 2004 Martin Corino <mcorino@remedy.nl> * tao/Messaging/MessagingC.cpp: * tao/PortableServer/PortableServerA.cpp: * tao/IORManipulation/IORA.cpp: - Fixed missing includes for f.i. VxWorks builds because of IDL compiler - bug in case of special build configs. - IDL compiler has also been fixed so files will be correctly regenerated - next time (when POA refactoring is complete). + Fixed missing includes for f.i. VxWorks builds because of IDL + compiler bug in case of special build configs. IDL compiler has + also been fixed so files will be correctly regenerated next time + (when POA refactoring is complete). * tao/Any.cpp: * tao/Codeset_Manager.cpp: @@ -61,10 +81,12 @@ Tue Nov 16 13:04:12 UTC 2004 Martin Corino <mcorino@remedy.nl> * tests/IORManipulation/IORTest.cpp: * tests/POA/Policies/Policies.cpp: * tests/Smart_Proxies/Collocation/Smart_Proxy_Impl.cpp: - Fixed missing includes and iostream incompatibilities for VxWorks builds. + Fixed missing includes and iostream incompatibilities for + VxWorks builds. * tests/Servant_To_Reference_Test/Servant_to_Reference.mpc: - Fixed double link of Test_i.o because .h was added to Source_Files. + Fixed double link of Test_i.o because .h was added to + Source_Files. Mon Nov 15 15:06:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl> diff --git a/TAO/tao/ORB_Core.cpp b/TAO/tao/ORB_Core.cpp index 444ee0e1e7f..f769ff98941 100644 --- a/TAO/tao/ORB_Core.cpp +++ b/TAO/tao/ORB_Core.cpp @@ -1925,6 +1925,10 @@ TAO_ORB_Core::run (ACE_Time_Value *tv, // Otherwise just continue.. } + if (this->has_shutdown () == 1 && + this->server_factory_->activate_server_connections ()) + this->tm_.wait (); + if (TAO_debug_level > 2) { ACE_DEBUG ((LM_DEBUG, |