summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2008-06-04 14:44:53 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2008-06-04 14:44:53 +0000
commit6e7181c4479dc3b8d9acb65a73b0f8e61f05ad4e (patch)
treeb2783ea7f834d963fbf5985acbba7a7c4f0655a0
parentef38557b13374a4248fb45291a080e91627ee931 (diff)
downloadATCD-6e7181c4479dc3b8d9acb65a73b0f8e61f05ad4e.tar.gz
ChangeLogTag: Wed Jun 4 14:36:55 UTC 2008 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--ACE/ChangeLog31
-rw-r--r--ACE/ace/Monitor_Base.cpp12
-rw-r--r--ACE/ace/Monitor_Point_Registry.cpp14
3 files changed, 44 insertions, 13 deletions
diff --git a/ACE/ChangeLog b/ACE/ChangeLog
index bd4b8ff8780..35427541644 100644
--- a/ACE/ChangeLog
+++ b/ACE/ChangeLog
@@ -1,8 +1,27 @@
+Wed Jun 4 14:36:55 UTC 2008 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * ace/Monitor_Point_Registry.cpp:
+ * ace/Monitor_Base.cpp:
+
+ Disabled warning messages reporting an unsuccessful unbind
+ of a monitor from the monitor point registry. In some
+ cases, it appears that the default process reactor singleton
+ is destroyed before the monitor point registry. The reactor
+ has an associated ACE_Message_Queue, which in turn has an
+ associated monitor. Somehow in the destruction of the
+ singleton, the normal chain of destructor calls, which
+ would remove the monitor from the registry, is bypassed,
+ leaving the removal to happen when the registry's
+ destructor is called and the entry in question is no longer
+ valid. In any case, this happens only at process shutdown,
+ and there is no memory leak. Ways to make this happen in
+ a more friendly fashion are being looked into.
+
Tue Jun 3 16:14:39 UTC 2008 Ken Sedgwick <ken+5a4@bonsai.com>
- * rpmbuild/ace-tao.spec:
- * rpmbuild/ace-tao-unusedarg.patch:
- * rpmbuild/ace-tao-strrecvfd.patch:
+ * rpmbuild/ace-tao.spec:
+ * rpmbuild/ace-tao-unusedarg.patch:
+ * rpmbuild/ace-tao-strrecvfd.patch:
Added ace-tao-strrecvfd.patch (related to bug #3291).
Changed make loop construct to abort when subcomponent fails.
Removed PSS from TAO build list.
@@ -17,9 +36,9 @@ Mon Jun 2 15:26:57 UTC 2008 Douglas C. Schmidt <schmidt@dre.vanderbilt.edu>
Sun Jun 1 02:01:38 UTC 2008 Ken Sedgwick <ken+5a4@bonsai.com>
- * rpmbuild/ace-tao.spec:
- * rpmbuild/ace-tao-etc.tar.gz:
- * rpmbuild/ace-tao-orbsvcs-daemon.patch:
+ * rpmbuild/ace-tao.spec:
+ * rpmbuild/ace-tao-etc.tar.gz:
+ * rpmbuild/ace-tao-orbsvcs-daemon.patch:
Added ace-tao-orbsvcs-daemon.patch to workaround
daemonization problems in rpm installed services.
Fixed tao-cosconcurrency command line arguments.
diff --git a/ACE/ace/Monitor_Base.cpp b/ACE/ace/Monitor_Base.cpp
index f932676c539..90b5a6423fb 100644
--- a/ACE/ace/Monitor_Base.cpp
+++ b/ACE/ace/Monitor_Base.cpp
@@ -155,9 +155,15 @@ namespace ACE
{
if (!Monitor_Point_Registry::instance ()->remove (this->name ()))
{
- ACE_ERROR ((LM_ERROR,
- "monitor point %s unregistration failed\n",
- this->name ()));
+// (JP) There is a problem with this failing on a single ACE_Message_Queue
+// monitor per process. I think it is the message queue associated
+// with the default reactor, maybe because at that low level, ACE
+// is using malloc with placement, then free, which may bypass the
+// normal destructors. In any case, it happens only at shutdown
+// and there seems to be no memory leak.
+// ACE_ERROR ((LM_ERROR,
+// "monitor point %s unregistration failed\n",
+// this->name ()));
}
}
diff --git a/ACE/ace/Monitor_Point_Registry.cpp b/ACE/ace/Monitor_Point_Registry.cpp
index 84ec68dd227..03ea39be4ba 100644
--- a/ACE/ace/Monitor_Point_Registry.cpp
+++ b/ACE/ace/Monitor_Point_Registry.cpp
@@ -82,10 +82,16 @@ namespace ACE
if (status == -1)
{
- ACE_ERROR_RETURN ((LM_ERROR,
- "registry remove: unbind failed for %s\n",
- name),
- false);
+// (JP) There is a problem with this failing on a single ACE_Message_Queue
+// monitor per process. I think it is the message queue associated
+// with the default reactor, maybe because at that low level, ACE
+// is using malloc with placement, then free, which may bypass the
+// normal destructors. In any case, it happens only at shutdown
+// and there seems to be no memory leak.
+// ACE_ERROR_RETURN ((LM_ERROR,
+// "registry remove: unbind failed for %s\n",
+// name),
+// false);
}
else
{