diff --git a/castor/tape/tapeserver/daemon/TapeDaemonMain.cpp b/castor/tape/tapeserver/daemon/TapeDaemonMain.cpp
index 4fafefcf08818e33dbc76ceefb889eeb79a7c194..83dc58a6a9ac6cb21631de50355c4b3d9584888d 100644
--- a/castor/tape/tapeserver/daemon/TapeDaemonMain.cpp
+++ b/castor/tape/tapeserver/daemon/TapeDaemonMain.cpp
@@ -37,6 +37,8 @@
 #include "h/vdqm_constants.h"
 #include "h/vmgr_constants.h"
 
+#include <google/protobuf/stubs/common.h>
+#include <memory>
 #include <sstream>
 #include <string>
 
@@ -58,16 +60,16 @@ static int exceptionThrowingMain(const int argc, char **const argv,
 //------------------------------------------------------------------------------
 int main(const int argc, char **const argv) {
   // Try to instantiate the logging system API
-  castor::log::Logger *logPtr = NULL;
+  std::auto_ptr<castor::log::SyslogLogger> logPtr;
   try {
-    logPtr = new castor::log::SyslogLogger("tapeserverd");
+    logPtr.reset(new castor::log::SyslogLogger("tapeserverd"));
   } catch(castor::exception::Exception &ex) {
     std::cerr <<
       "Failed to instantiate object representing CASTOR logging system: " <<
       ex.getMessage().str() << std::endl;
     return 1;
   }
-  castor::log::Logger &log = *logPtr;
+  castor::log::Logger &log = *logPtr.get();
 
   int programRc = 1; // Be pessimistic
   try {
@@ -83,6 +85,7 @@ int main(const int argc, char **const argv) {
     log(LOG_ERR, "Caught an unexpected and unknown exception");
   }
 
+  google::protobuf::ShutdownProtobufLibrary();
   return programRc;
 }