Index: fedd/fedd.py
===================================================================
--- fedd/fedd.py	(revision 0b466d139e8d6900984920bdc08afa4fe01c2ab8)
+++ fedd/fedd.py	(revision d199ced66166621a0a766dbb70e8c960014e1f6a)
@@ -20,5 +20,5 @@
 from threading import *
 from signal import signal, pause, SIGINT, SIGTERM
-from select import select
+from select import select, error
 from time import sleep
 import logging
@@ -251,4 +251,5 @@
     """
     global servers_active, flog
+
     servers_active = False
     flog.info("Received signal %d, shutting down" % sig);
@@ -267,6 +268,12 @@
 
     while servers_active:
-	i, o, e = select((s,), (), (), 5.0)
-	if s in i: s.handle_request()
+	try:
+	    i, o, e = select((s,), (), (), 1.0)
+	    if s in i: s.handle_request()
+	except error:
+	    # The select call seems to get interrupted by signals as well as
+	    # the main thread.  This essentially ignores signals in this
+	    # thread.
+	    pass
 
     # Done.  Remove us from the list
@@ -356,5 +363,5 @@
 # Main thread waits for signals
 while servers_active:
-    pause()
+    sleep(1.0)
 
 #Once shutdown starts wait for all the servers to terminate.
Index: fedd/fedd_experiment_control.py
===================================================================
--- fedd/fedd_experiment_control.py	(revision 0b466d139e8d6900984920bdc08afa4fe01c2ab8)
+++ fedd/fedd_experiment_control.py	(revision d199ced66166621a0a766dbb70e8c960014e1f6a)
@@ -344,9 +344,12 @@
 	    f = open(self.state_filename, "r")
 	    self.state = pickle.load(f)
+	    self.log.debug("[read_state]: Read state from %s" % \
+		    self.state_filename)
 	except IOError, e:
-	    self.log.warning("No saved state: Can't open %s: %s" % \
-		    (self.state_filename, e))
+	    self.log.warning("[read_state]: No saved state: Can't open %s: %s"\
+		    % (self.state_filename, e))
 	except pickle.UnpicklingError, e:
-	    self.log.warning("No saved state: Unpickling failed: %s" % e)
+	    self.log.warning(("[read_state]: No saved state: " + \
+		    "Unpickling failed: %s") % e)
 
     def scp_file(self, file, user, host, dest=""):
@@ -359,7 +362,14 @@
 	rv = 0
 
+	try:
+	    dnull = open("/dev/null", "r")
+	except IOError:
+	    self.log.debug("[ssh_file]: failed to open /dev/null for redirect")
+	    dnull = Null
+
 	self.log.debug("[scp_file]: %s" % " ".join(scp_cmd))
 	if not self.debug:
-	    rv = call(scp_cmd, stdout=trace, stderr=trace)
+	    if dnull: rv = call(scp_cmd, stdout=dnull, stderr=dnull)
+	    else: rv = call(scp_cmd)
 
 	return rv == 0
@@ -372,7 +382,16 @@
 	sh_str = "%s %s@%s %s" % (self.ssh_exec, user, host, cmd)
 
+	try:
+	    dnull = open("/dev/null", "r")
+	except IOError:
+	    self.log.debug("[ssh_cmd]: failed to open /dev/null for redirect")
+	    dnull = Null
+
 	self.log.debug("[ssh_cmd]: %s" % sh_str)
 	if not self.debug:
-	    sub = Popen(sh_str, shell=True, stdout=trace, stderr=trace)
+	    if dnull:
+		sub = Popen(sh_str, shell=True, stdout=dnull, stderr=dnull)
+	    else:
+		sub = Popen(sh_str, shell=True)
 	    return sub.wait() == 0
 	else:
Index: fedd/fedd_util.py
===================================================================
--- fedd/fedd_util.py	(revision 0b466d139e8d6900984920bdc08afa4fe01c2ab8)
+++ fedd/fedd_util.py	(revision d199ced66166621a0a766dbb70e8c960014e1f6a)
@@ -286,5 +286,5 @@
 
 
-def generate_fedid(subj, bits=2048, log=None, dir=None, trace=None):
+def generate_fedid(subj, bits=2048, log=None, dir=None, trace=sys.stderr):
     """
     Create a new certificate and derive a fedid from it.
@@ -302,7 +302,8 @@
 		    suffix=".pem")
 
-	    cmd = ["openssl", "req", "-text", "-newkey", "rsa:%d" % bits, 
-		    "-keyout", keypath,  "-nodes", "-subj", "/CN=%s" % subj,
-		    "-x509", "-days", "30", "-out", certpath]
+	    cmd = ["/usr/bin/openssl", "req", "-text", "-newkey", 
+		    "rsa:%d" % bits, "-keyout", keypath,  "-nodes", 
+		    "-subj", "/CN=%s" % subj, "-x509", "-days", "30", 
+		    "-out", certpath]
 
 	    if log:
@@ -310,7 +311,10 @@
 
 	    if trace: call_out = trace
-	    else: call_out = open("/dev/null", "w")
+	    else: 
+		log.debug("set to dev/null")
+		call_out = open("/dev/null", "w")
 
 	    rv = subprocess.call(cmd, stdout=call_out, stderr=call_out)
+	    log.debug("rv = %d" % rv)
 	    if rv == 0:
 		cert = ""
@@ -323,5 +327,5 @@
 		return (fid, cert)
 	    else:
-		return None
+		return (None, None)
 	except IOError, e:
 	    raise e
