[rhmessaging-commits] rhmessaging commits: r3680 - store/trunk/cpp/lib.
rhmessaging-commits at lists.jboss.org
rhmessaging-commits at lists.jboss.org
Thu Oct 22 10:41:36 EDT 2009
Author: tedross
Date: 2009-10-22 10:41:36 -0400 (Thu, 22 Oct 2009)
New Revision: 3680
Modified:
store/trunk/cpp/lib/JournalImpl.cpp
store/trunk/cpp/lib/MessageStoreImpl.cpp
Log:
Close out the use of management objects at finalize time rather than
in the destructor. This ensures that there won't be invalid accesses
to freed heap during the destructor on broker shutdown.
Modified: store/trunk/cpp/lib/JournalImpl.cpp
===================================================================
--- store/trunk/cpp/lib/JournalImpl.cpp 2009-10-22 14:37:50 UTC (rev 3679)
+++ store/trunk/cpp/lib/JournalImpl.cpp 2009-10-22 14:41:36 UTC (rev 3680)
@@ -120,8 +120,10 @@
journalTimerPtr = 0;
}
- if (_mgmtObject != 0)
+ if (_mgmtObject != 0) {
_mgmtObject->resourceDestroy();
+ _mgmtObject = 0;
+ }
::pthread_mutex_destroy(&_getf_mutex);
log(LOG_DEBUG, "Destroyed");
@@ -491,6 +493,11 @@
{
(dynamic_cast<InactivityFireEvent*>(inactivityFireEventPtr.get()))->cancel();
jcntl::stop(block_till_aio_cmpl);
+
+ if (_mgmtObject != 0) {
+ _mgmtObject->resourceDestroy();
+ _mgmtObject = 0;
+ }
}
iores
Modified: store/trunk/cpp/lib/MessageStoreImpl.cpp
===================================================================
--- store/trunk/cpp/lib/MessageStoreImpl.cpp 2009-10-22 14:37:50 UTC (rev 3679)
+++ store/trunk/cpp/lib/MessageStoreImpl.cpp 2009-10-22 14:41:36 UTC (rev 3680)
@@ -366,6 +366,11 @@
JournalImpl* jQueue = i->second;
if (jQueue->is_ready()) jQueue->stop(true);
}
+
+ if (mgmtObject != 0) {
+ mgmtObject->resourceDestroy();
+ mgmtObject = 0;
+ }
}
void MessageStoreImpl::pushDown(const char* dirName, const char* bakDirName)
@@ -460,8 +465,10 @@
QPID_LOG(error, "Unknown error in MessageStoreImpl::~MessageStoreImpl()");
}
- if (mgmtObject != 0)
+ if (mgmtObject != 0) {
mgmtObject->resourceDestroy();
+ mgmtObject = 0;
+ }
}
void MessageStoreImpl::create(PersistableQueue& queue,
More information about the rhmessaging-commits
mailing list