]> granicus.if.org Git - icinga2/commitdiff
Fixed crash while shutting down Icinga.
authorGunnar Beutner <gunnar.beutner@netways.de>
Tue, 14 Aug 2012 12:04:05 +0000 (14:04 +0200)
committerGunnar Beutner <gunnar.beutner@netways.de>
Tue, 14 Aug 2012 12:04:05 +0000 (14:04 +0200)
base/application.cpp
icinga-app/icinga.cpp

index c17edeeb55607514565122cca95457236a5a8cdb..25c96a3a3cb7d49b6ecd43a92c77b09d782de5e8 100644 (file)
@@ -69,8 +69,6 @@ Application::~Application(void)
 
        m_ShuttingDown = true;
 
-       DynamicObject::DeactivateObjects();
-
 #ifdef _WIN32
        WSACleanup();
 #endif /* _WIN32 */
@@ -300,8 +298,6 @@ int Application::Run(int argc, char **argv)
 
                DynamicObject::FinishTx();
                DynamicObject::DeactivateObjects();
-
-               assert(m_Instance == NULL);
        } catch (const exception& ex) {
                Logger::Write(LogCritical, "base", "---");
                Logger::Write(LogCritical, "base", "Exception: " + Utility::GetTypeName(typeid(ex)));
index 41b9f8b5007ceda9f8b891be61eb248036d013ad..4356cebad3e1569631e0b0326284fc23a360c183 100644 (file)
@@ -45,6 +45,8 @@ int main(int argc, char **argv)
        lt_dlinit();
 #endif /* _WIN32 */
 
+       /* This must be done before calling any other functions
+        * in the base library. */
        Application::SetMainThread();
 
 #ifdef _WIN32
@@ -60,14 +62,13 @@ int main(int argc, char **argv)
                return EXIT_FAILURE;
        }
 
-       String configFile = argv[2];
-
        String componentDirectory = Utility::DirName(Application::GetExePath(argv[0])) + "/../lib/icinga2";
        Component::AddSearchDir(componentDirectory);
 
        DynamicObject::BeginTx();
 
        /* load config file */
+       String configFile = argv[2];
        vector<ConfigItem::Ptr> configItems = ConfigCompiler::CompileFile(configFile);
 
        Logger::Write(LogInformation, "icinga", "Executing config items...");  
@@ -83,6 +84,8 @@ int main(int argc, char **argv)
        if (!app)
                throw_exception(runtime_error("Configuration must create an Application object."));
 
+       /* The application class doesn't need to know about the "-c configFile"
+        * command-line arguments. */
        return app->Run(argc - 2, &(argv[2]));
 }