summaryrefslogtreecommitdiff
path: root/ACE/ace/Process_Manager.cpp
diff options
context:
space:
mode:
authorJohnny Willemsen <jwillemsen@remedy.nl>2009-01-15 07:57:27 +0000
committerJohnny Willemsen <jwillemsen@remedy.nl>2009-01-15 07:57:27 +0000
commit7bcf346410d13a031025bcdeb87c4bed4bc4dd5a (patch)
tree9f76a93c1df2e2eb8387f634b70d1df6aec721a6 /ACE/ace/Process_Manager.cpp
parent903a1678de138d6dbb4711be1decb816ab86bb88 (diff)
downloadATCD-7bcf346410d13a031025bcdeb87c4bed4bc4dd5a.tar.gz
Thu Jan 15 07:56:02 UTC 2009 Johnny Willemsen <jwillemsen@remedy.nl>
* ace/Cleanup.{h,cpp}: Added a const char* name member to ACE_Cleanup_Info_Node, this can be passed in when registering an at_exit hook. This string can then be used during debugging to detect problems at shutdown. It can happen that the cleanup hook is from a dll that already is unloaded and then we get a crash with no information, the string at least can tell us which hook we are calling. This fixes bugzilla 3544. * ace/Log_Msg.cpp: * ace/Object_Manager.{h,cpp,inl}: * ace/Object_Manager_Base.{h,cpp}: * ace/OS_NS_stdlib.{h,inl}: * ace/Process_Manager.cpp: * ace/Singleton.cpp: * ace/Token_Invariants.cpp: * ace/Token_Manager.cpp: Pass in the typeid of the object when registering an at_exit hook * ace/Thread.cpp: Moved local variable inside the loop
Diffstat (limited to 'ACE/ace/Process_Manager.cpp')
-rw-r--r--ACE/ace/Process_Manager.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/ACE/ace/Process_Manager.cpp b/ACE/ace/Process_Manager.cpp
index 773326da2c9..3599cfe15b5 100644
--- a/ACE/ace/Process_Manager.cpp
+++ b/ACE/ace/Process_Manager.cpp
@@ -19,6 +19,7 @@
#include "ace/OS_NS_signal.h"
#include "ace/OS_NS_unistd.h"
#include "ace/OS_NS_sys_time.h"
+#include "ace/os_include/os_typeinfo.h"
#include "ace/Truncate.h"
ACE_RCSID (ace,
@@ -131,11 +132,13 @@ ACE_Process_Manager::instance (void)
#if defined ACE_HAS_SIG_C_FUNC
ACE_Object_Manager::at_exit (ACE_Process_Manager::instance_,
ACE_Process_Manager_cleanup,
- 0);
+ 0,
+ typeid (*ACE_Process_Manager::instance_).name ());
#else
ACE_Object_Manager::at_exit (ACE_Process_Manager::instance_,
ACE_Process_Manager::cleanup,
- 0);
+ 0,
+ typeid (*ACE_Process_Manager::instance_).name ());
#endif /* ACE_HAS_SIG_C_FUNC */
}
@@ -162,11 +165,13 @@ ACE_Process_Manager::instance (ACE_Process_Manager *tm)
#if defined ACE_HAS_SIG_C_FUNC
ACE_Object_Manager::at_exit (ACE_Process_Manager::instance_,
ACE_Process_Manager_cleanup,
- 0);
+ 0,
+ typeid (*ACE_Process_Manager::instance_).name ());
#else
ACE_Object_Manager::at_exit (ACE_Process_Manager::instance_,
ACE_Process_Manager::cleanup,
- 0);
+ 0,
+ typeid (*ACE_Process_Manager::instance_).name ());
#endif /* ACE_HAS_SIG_C_FUNC */
ACE_Process_Manager::instance_ = tm;
@@ -686,7 +691,7 @@ ACE_Process_Manager::find_proc (pid_t pid)
{
ACE_TRACE ("ACE_Process_Manager::find_proc");
- for (size_t i = 0; i < this->current_count_; ++i)
+ for (size_t i = 0; i < this->current_count_; ++i)
{
if (pid == this->process_table_[i].process_->getpid ())
{