not tracking unstarted sessions
diff --git a/gexec/session.go b/gexec/session.go
index 1dd5068..987e472 100644
--- a/gexec/session.go
+++ b/gexec/session.go
@@ -92,9 +92,9 @@
 	err := command.Start()
 	if err == nil {
 		go session.monitorForExit(exited)
+		trackedSessions = append(trackedSessions, session)
 	}
 
-	trackedSessions = append(trackedSessions, session)
 	return session, err
 }
 
diff --git a/gexec/session_test.go b/gexec/session_test.go
index 5a7af74..f8018b8 100644
--- a/gexec/session_test.go
+++ b/gexec/session_test.go
@@ -152,6 +152,25 @@
 				Eventually(session2).Should(Exit(128 + 9))
 				Eventually(session3).Should(Exit(128 + 9))
 			})
+
+			It("should not track unstarted sessions", func() {
+				_, err := Start(exec.Command("does not exist", "10000000"), GinkgoWriter, GinkgoWriter)
+				Ω(err).Should(HaveOccurred())
+
+				session2, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+				Ω(err).ShouldNot(HaveOccurred())
+
+				session3, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+				Ω(err).ShouldNot(HaveOccurred())
+
+				Kill()
+				Ω(session2).ShouldNot(Exit(), "Should not exit immediately...")
+				Ω(session3).ShouldNot(Exit(), "Should not exit immediately...")
+
+				Eventually(session2).Should(Exit(128 + 9))
+				Eventually(session3).Should(Exit(128 + 9))
+			})
+
 		})
 
 		Describe("killAndWait", func() {