From: Gunnar Beutner Date: Tue, 10 Jul 2012 11:00:53 +0000 (+0200) Subject: Added assert()s for some common thread-safety problems. X-Git-Tag: v0.0.1~273 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=60c4dce4dd1741c1a54f7e07e1e2d6395e216a0e;p=icinga2 Added assert()s for some common thread-safety problems. --- diff --git a/base/application.cpp b/base/application.cpp index cd05dc756..352cbf2e8 100644 --- a/base/application.cpp +++ b/base/application.cpp @@ -134,6 +134,8 @@ Component::Ptr Application::LoadComponent(const string& path, Component::Ptr component; Component *(*pCreateComponent)(); + assert(Application::IsMainThread()); + Logger::Write(LogInformation, "base", "Loading component '" + path + "'"); #ifdef _WIN32 diff --git a/base/configobject.cpp b/base/configobject.cpp index fea51e131..e196ec109 100644 --- a/base/configobject.cpp +++ b/base/configobject.cpp @@ -113,6 +113,8 @@ time_t ConfigObject::GetCommitTimestamp(void) const void ConfigObject::Commit(void) { + assert(Application::IsMainThread()); + ConfigObject::Ptr dobj = GetObject(GetType(), GetName()); ConfigObject::Ptr self = GetSelf(); assert(!dobj || dobj == self); @@ -125,6 +127,8 @@ void ConfigObject::Commit(void) void ConfigObject::Unregister(void) { + assert(Application::IsMainThread()); + ConfigObject::Ptr self = GetSelf(); m_Container->RemoveObject(self); } diff --git a/base/logger.cpp b/base/logger.cpp index 1ecee90c9..7d7588587 100644 --- a/base/logger.cpp +++ b/base/logger.cpp @@ -61,6 +61,8 @@ void Logger::Write(LogSeverity severity, const string& facility, */ void Logger::RegisterLogger(const Logger::Ptr& logger) { + assert(Application::IsMainThread()); + m_Loggers.push_back(logger); } diff --git a/base/socket.cpp b/base/socket.cpp index b61036688..bdc2561eb 100644 --- a/base/socket.cpp +++ b/base/socket.cpp @@ -34,11 +34,8 @@ Socket::Socket(void) */ Socket::~Socket(void) { - { - mutex::scoped_lock lock(m_Mutex); - - CloseInternal(true); - } + mutex::scoped_lock lock(m_Mutex); + CloseInternal(true); } void Socket::Start(void) diff --git a/base/timer.cpp b/base/timer.cpp index f19a70394..a34e91802 100644 --- a/base/timer.cpp +++ b/base/timer.cpp @@ -136,6 +136,8 @@ long Timer::GetInterval(void) const */ void Timer::Start(void) { + assert(Application::IsMainThread()); + Stop(); Timers.push_back(GetSelf()); @@ -148,6 +150,8 @@ void Timer::Start(void) */ void Timer::Stop(void) { + assert(Application::IsMainThread()); + Timers.remove_if(WeakPtrEqual(this)); }