2011-03-15 H.J. Lu <hjl.tools@gmail.com>
authorBen Elliston <bje@gnu.org>
Mon, 14 Mar 2011 23:07:50 +0000 (10:07 +1100)
committerBen Elliston <bje@gnu.org>
Mon, 14 Mar 2011 23:07:50 +0000 (10:07 +1100)
* lib/remote.exp (local_exec): Ignore SIGHUP.

ChangeLog
lib/remote.exp

index 07f3254..550931c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2011-03-15  H.J. Lu  <hjl.tools@gmail.com>
+
+       * lib/remote.exp (local_exec): Ignore SIGHUP.
+
 2011-03-14  Ben Elliston  <bje@gnu.org>
 
        * runtest.exp (frame_version): Set to 1.5.1.
index f0bf269..e270f85 100644 (file)
@@ -86,11 +86,15 @@ proc local_exec { commandline inp outp timeout } {
     # doesn't assign process groups correctly and we can't reliably kill
     # programs that bear children. We can't use tcl's exec because it has
     # no way to timeout programs that hang. *sigh*
-
+    #
+    # The expect command will close the connection when it sees
+    # EOF. Closing the connection may send SIGHUP to the child and
+    # cause it to exit before it can exit normally.  The child should
+    # ignore SIGHUP.
     global errorInfo
     if { "$inp" == "" && "$outp" == "" } {
        set id -1
-       set result [catch "eval spawn \{${commandline}\}" pid]
+       set result [catch "eval spawn -ignore SIGHUP \{${commandline}\}" pid]
        if { $result == 0 } {
            set result2 0
        } else {
@@ -130,7 +134,7 @@ proc local_exec { commandline inp outp timeout } {
            return [list -1 "open of $commandline $inp $outp failed: $errorInfo"]
        }
        set pid [pid $id]
-       set result [catch "spawn -leaveopen $id" result2]
+       set result [catch "spawn -ignore SIGHUP -leaveopen $id" result2]
     }
     # Prepend "-" to each pid, to generate the "process group IDs" needed by
     # kill.