veyron/lib/modules: Clean up stderr files on Shutdown

Change-Id: I35cedaacec3dfd211b5a36fa9333a76abd243796
diff --git a/lib/modules/exec.go b/lib/modules/exec.go
index 74acf2f..2d517d7 100644
--- a/lib/modules/exec.go
+++ b/lib/modules/exec.go
@@ -196,6 +196,7 @@
 
 	// Transcribe stderr.
 	outputFromFile(eh.stderr, stderr)
+	os.Remove(eh.stderr.Name())
 
 	return procErr
 }
diff --git a/lib/modules/func.go b/lib/modules/func.go
index 8fd0523..381c9de 100644
--- a/lib/modules/func.go
+++ b/lib/modules/func.go
@@ -121,13 +121,15 @@
 	fh.mu.Unlock()
 
 	// Safe to close stderr now.
+	stderrName := stderr.Name()
 	stderr.Close()
+	defer os.Remove(stderrName)
 	if stderr_w != nil {
-		if stderr, err := os.Open(stderr.Name()); err == nil {
+		if stderr, err := os.Open(stderrName); err == nil {
 			io.Copy(stderr_w, stderr)
 			stderr.Close()
 		} else {
-			fmt.Fprintf(os.Stderr, "failed to open %q: %s\n", stderr.Name(), err)
+			fmt.Fprintf(os.Stderr, "failed to open %q: %s\n", stderrName, err)
 		}
 	}
 
diff --git a/lib/modules/util.go b/lib/modules/util.go
index b38e767..b2a62fa 100644
--- a/lib/modules/util.go
+++ b/lib/modules/util.go
@@ -16,7 +16,7 @@
 
 func newLogfile(prefix, name string) (*os.File, error) {
 	nameHash := adler32.Checksum([]byte(name))
-	f, err := ioutil.TempFile("", fmt.Sprintf("__modules__%s-%x", prefix, nameHash))
+	f, err := ioutil.TempFile("", fmt.Sprintf("__modules__%s-%x-", prefix, nameHash))
 	if err != nil {
 		return nil, err
 	}