summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Mesnier <mesnier_p@ociweb.com>2007-08-16 16:35:29 +0000
committerPhil Mesnier <mesnier_p@ociweb.com>2007-08-16 16:35:29 +0000
commit4ed4bbac2138e68f50803b1a890e4a03b8ee1fad (patch)
tree033568702aeb7b9e6a8d5d68d0234df3bad314e7
parent032ab395520ec79f0d472841d7a67755e5837a31 (diff)
downloadATCD-4ed4bbac2138e68f50803b1a890e4a03b8ee1fad.tar.gz
Thu Aug 16 15:28:45 UTC 2007 Phil Mesnier <mesnier_p@ociweb.com>
-rw-r--r--ACE/ChangeLog16
-rw-r--r--ACE/ace/Service_Config.cpp15
-rw-r--r--ACE/ace/Service_Types.cpp2
3 files changed, 27 insertions, 6 deletions
diff --git a/ACE/ChangeLog b/ACE/ChangeLog
index ddf006c2767..7613360002c 100644
--- a/ACE/ChangeLog
+++ b/ACE/ChangeLog
@@ -1,5 +1,19 @@
+Thu Aug 16 15:28:45 UTC 2007 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * ace/Service_Config.cpp:
+
+ Part of fix for bug 2995. Both the Service Config and Service
+ Gestalt have separate open counts, but multiple calls to open_i
+ on the Service Config were not propogated to Service Gestalt.
+ This led to a problem where closing a multiply opened Service
+ Config would result in a premature clean up of resources in the
+ Gestalt, triggering a crash later on.
+
+ * ace/Service_Types.cpp:
+ Make debugging output more clear.
+
Thu Aug 16 00:04:21 UTC 2007 Abdullah Sowayan <abdullah.sowayan@lmco.com>
-
+
* protocols/ace/HTBP/HTBP_Environment.cpp:
* protocols/ace/TMCast/FaultDetector.hpp:
Untabify.
diff --git a/ACE/ace/Service_Config.cpp b/ACE/ace/Service_Config.cpp
index c4d6d005f18..1fb104d97f4 100644
--- a/ACE/ace/Service_Config.cpp
+++ b/ACE/ace/Service_Config.cpp
@@ -47,8 +47,10 @@ ACE_Service_Config_Guard::ACE_Service_Config_Guard (ACE_Service_Gestalt * psg)
{
if (ACE::debug ())
ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("ACE (%P|%t) Service_Config_Guard:<ctor>")
- ACE_TEXT (" - repo=%@ superceded by repo=%@\n"),
+ ACE_TEXT ("ACE (%P|%t) Service_Config_Guard:<ctor=%@>")
+ ACE_TEXT (" - config=%@ repo=%@ superceded by repo=%@\n"),
+ this,
+ this->saved_,
this->saved_->repo_,
psg->repo_));
@@ -63,8 +65,9 @@ ACE_Service_Config_Guard::~ACE_Service_Config_Guard (void)
if (ACE::debug ())
ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("ACE (%P|%t) Service_Config_Guard:<dtor>")
+ ACE_TEXT ("ACE (%P|%t) Service_Config_Guard:<dtor=%@>")
ACE_TEXT (" - new repo=%@\n"),
+ this,
this->saved_->repo_));
}
@@ -182,7 +185,11 @@ ACE_Service_Config::open_i (const ACE_TCHAR program_name[],
// The base class open_i increments this and we are
// forwarding to it, so we don't have to increment here.
if (this->is_opened_ != 0)
- return 0;
+ return ACE_Service_Gestalt::open_i (program_name,
+ logger_key,
+ ignore_static_svcs,
+ ignore_default_svc_conf_file,
+ ignore_debug_flag);
// Check for things we need to do on a per-process basis and which
// may not be safe, or wise to do an a per instance basis
diff --git a/ACE/ace/Service_Types.cpp b/ACE/ace/Service_Types.cpp
index 20665ea2c7d..0aa6fa02d3f 100644
--- a/ACE/ace/Service_Types.cpp
+++ b/ACE/ace/Service_Types.cpp
@@ -60,7 +60,7 @@ ACE_Service_Type_Impl::fini (void) const
ACE_TRACE ("ACE_Service_Type_Impl::fini");
if (ACE::debug ())
ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("destroying %s, flags = %d\n"),
+ ACE_TEXT ("(%P|%t) ST::fini - destroying %s, flags = %d\n"),
this->name_,
this->flags_));