diff --git a/lib/daemon.py b/lib/daemon.py
index f5e18a25bc0252b6320633f8403580fb23b02793..31447277d900fcf8552c925dc6ed4bdbb5b7f32d 100644
--- a/lib/daemon.py
+++ b/lib/daemon.py
@@ -687,7 +687,12 @@ def GenericMain(daemon_name, optionparser,
   signal.signal(signal.SIGHUP,
                 compat.partial(_HandleSigHup, [log_reopen_fn, stdio_reopen_fn]))
 
-  utils.WritePidFile(utils.DaemonPidFileName(daemon_name))
+  try:
+    utils.WritePidFile(utils.DaemonPidFileName(daemon_name))
+  except errors.PidFileLockError, err:
+    print >> sys.stderr, "Error while locking PID file:\n%s" % err
+    sys.exit(constants.EXIT_FAILURE)
+
   try:
     try:
       logging.info("%s daemon startup", daemon_name)