diff --git a/mythtv/programs/mythbackend/main_helpers.cpp b/mythtv/programs/mythbackend/main_helpers.cpp
index bc9d698..04ff974 100644
--- a/mythtv/programs/mythbackend/main_helpers.cpp
+++ b/mythtv/programs/mythbackend/main_helpers.cpp
@@ -656,8 +656,8 @@ int run_backend(MythBackendCommandLineParser &cmdline)
     {
         LOG(VB_GENERAL, LOG_CRIT,
             "Backend exiting, MainServer initialization error.");
-        delete mainServer;
-        return exitCode;
+        cleanup();
+	return exitCode;
     }
 
     if (httpStatus && mainServer)
diff --git a/mythtv/programs/mythbackend/mainserver.cpp b/mythtv/programs/mythbackend/mainserver.cpp
index b5e12e6..de79a9b 100644
--- a/mythtv/programs/mythbackend/mainserver.cpp
+++ b/mythtv/programs/mythbackend/mainserver.cpp
@@ -227,7 +227,7 @@ MainServer::MainServer(bool master, int port,
                        QMap<int, EncoderLink *> *tvList,
                        Scheduler *sched, AutoExpire *expirer) :
     encoderList(tvList), mythserver(NULL),
-    masterFreeSpaceListUpdater((master) ? new FreeSpaceUpdater(*this) : NULL),
+    masterFreeSpaceListUpdater(NULL),
     masterServerReconnect(NULL),
     masterServer(NULL), ismaster(master), threadPool("ProcessRequestPool"),
     masterBackendOverride(false),
@@ -323,6 +323,8 @@ MainServer::MainServer(bool master, int port,
     masterFreeSpaceList << "0";
     masterFreeSpaceList << "0";
     masterFreeSpaceList << "0";
+    
+    master ? masterFreeSpaceListUpdater = new FreeSpaceUpdater(*this) : NULL;
     if (masterFreeSpaceListUpdater)
     {
         MThreadPool::globalInstance()->startReserved(
