Guard the _active.remove() call to avoid errors when there is no _active list.
diff --git a/Lib/popen2.py b/Lib/popen2.py
index 67ebd26..b966d4c 100644
--- a/Lib/popen2.py
+++ b/Lib/popen2.py
@@ -72,8 +72,9 @@
         # In case the child hasn't been waited on, check if it's done.
         self.poll(_deadstate=sys.maxint)
         if self.sts < 0:
-            # Child is still running, keep us alive until we can wait on it.
-            _active.append(self)
+            if _active:
+                # Child is still running, keep us alive until we can wait on it.
+                _active.append(self)
 
     def _run_child(self, cmd):
         if isinstance(cmd, basestring):