From 6e7181c4479dc3b8d9acb65a73b0f8e61f05ad4e Mon Sep 17 00:00:00 2001 From: parsons Date: Wed, 4 Jun 2008 14:44:53 +0000 Subject: ChangeLogTag: Wed Jun 4 14:36:55 UTC 2008 Jeff Parsons --- ACE/ChangeLog | 31 +++++++++++++++++++++++++------ ACE/ace/Monitor_Base.cpp | 12 +++++++++--- ACE/ace/Monitor_Point_Registry.cpp | 14 ++++++++++---- 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 + + * 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 - * 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 Sun Jun 1 02:01:38 UTC 2008 Ken Sedgwick - * 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 { -- cgit v1.2.1