diff --git a/3plibs/radvd-1.6/privsep-linux.c b/3plibs/radvd-1.6/privsep-linux.c
index d2c37bc..a4ffb93 100644
--- a/3plibs/radvd-1.6/privsep-linux.c
+++ b/3plibs/radvd-1.6/privsep-linux.c
@@ -53,6 +53,8 @@ privsep_read_loop(void)
 		if (ret <= 0) {
 			/* Error or EOF, give up */
 			close(pfd);
+			flog(LOG_ERR, "Exiting, privsep_read_loop had readn error: %s\n",
+			     strerror(errno));
 			_exit(0);
 		}
 		if (ret != sizeof(cmd)) {
@@ -161,6 +163,7 @@ privsep_init(void)
 
 		privsep_read_loop();
 		close(pfd);
+		flog(LOG_ERR, "Exiting, privsep_read_loop is complete.\n");
 		_exit(0);
 	}
 
diff --git a/3plibs/radvd-1.6/radvd.c b/3plibs/radvd-1.6/radvd.c
index 439ebe0..96ba199 100644
--- a/3plibs/radvd-1.6/radvd.c
+++ b/3plibs/radvd-1.6/radvd.c
@@ -185,22 +185,28 @@ main(int argc, char *argv[])
 		/* username will be switched later */
 	}
 	
-	if (log_open(log_method, pname, logfile, facility) < 0)
+	if (log_open(log_method, pname, logfile, facility) < 0) {
+		perror("log_open");
 		exit(1);
+	}
 
 	flog(LOG_INFO, "version %s started", VERSION);
 
 	/* get a raw socket for sending and receiving ICMPv6 messages */
 	sock = open_icmpv6_socket();
-	if (sock < 0)
+	if (sock < 0) {
+		perror("open_icmpv6_socket");
 		exit(1);
+	}
 
 	/* check that 'other' cannot write the file
          * for non-root, also that self/own group can't either
          */
 	if (check_conffile_perm(username, conf_file) < 0) {
-		if (get_debuglevel() == 0)
+		if (get_debuglevel() == 0) {
+			flog(LOG_ERR, "Exiting, permissions on conf_file invalid.\n");
 			exit(1);
+		}
 		else
 			flog(LOG_WARNING, "Insecure file permissions, but continuing anyway");
 	}
@@ -211,8 +217,10 @@ main(int argc, char *argv[])
 	}
 
 	/* parse config file */
-	if (readin_config(conf_file) < 0)
+	if (readin_config(conf_file) < 0) {
+		flog(LOG_ERR, "Exiting, failed to read config file.\n");
 		exit(1);
+	}
 
 	/* drop root privileges if requested. */
 	if (username) {
@@ -222,8 +230,10 @@ main(int argc, char *argv[])
 				flog(LOG_WARNING, "Failed to initialize privsep.");
 		}
 
-		if (drop_root_privileges(username) < 0)
+		if (drop_root_privileges(username) < 0) {
+			perror("drop_root_privileges");
 			exit(1);
+		}
 	}
 
 	if ((fd = open(pidfile, O_RDONLY, 0)) > 0)
@@ -269,8 +279,10 @@ main(int argc, char *argv[])
 		/* reopen logfiles, but don't log to stderr unless explicitly requested */
 		if (log_method == L_STDERR_SYSLOG)
 			log_method = L_SYSLOG;
-		if (log_open(log_method, pname, logfile, facility) < 0)
+		if (log_open(log_method, pname, logfile, facility) < 0) {
+			perror("log_open");
 			exit(1);
+		}
 
 	}
 
@@ -312,6 +324,7 @@ main(int argc, char *argv[])
 
 		if (sigterm_received || sigint_received) {
 			stop_adverts();
+			flog(LOG_WARNING, "Exiting, sigterm or sigint received.\n");
 			break;
 		}
 
@@ -423,8 +436,10 @@ void reload_config(void)
 	flog(LOG_INFO, "attempting to reread config file");
 
 	dlog(LOG_DEBUG, 4, "reopening log");
-	if (log_reopen() < 0)
+	if (log_reopen() < 0) {
+		perror("log_reopen");
 		exit(1);
+	}
 
 	/* disable timers, free interface and prefix structures */
 	for(iface=IfaceList; iface; iface=iface->next)
@@ -481,8 +496,10 @@ void reload_config(void)
 	IfaceList = NULL;
 
 	/* reread config file */
-	if (readin_config(conf_file) < 0)
+	if (readin_config(conf_file) < 0) {
+		perror("readin_config failed.");
 		exit(1);
+	}
 
 	/* XXX: fails due to lack of permissions with non-root user */
 	config_interface();
diff --git a/3plibs/radvd-1.6/radvdump.c b/3plibs/radvd-1.6/radvdump.c
index f7a7ba7..d328775 100644
--- a/3plibs/radvd-1.6/radvdump.c
+++ b/3plibs/radvd-1.6/radvdump.c
@@ -85,13 +85,17 @@ main(int argc, char *argv[])
 		}
 	}
 	
-	if (log_open(L_STDERR, pname, NULL, 0) < 0)
+	if (log_open(L_STDERR, pname, NULL, 0) < 0) {
+		perror("log_open");
 		exit(1);
+	}
 
 	/* get a raw socket for sending and receiving ICMPv6 messages */
 	sock = open_icmpv6_socket();
-	if (sock < 0)
+	if (sock < 0) {
+		perror("open_icmpv6_socket");
 		exit(1);
+	}
 		
 	for(;;)
 	{
