From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13094 invoked by alias); 12 Nov 2001 18:39:58 -0000 Mailing-List: contact gdb-patches-help@sourceware.cygnus.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 6544 invoked from network); 12 Nov 2001 18:22:21 -0000 Received: from unknown (HELO localhost.cygnus.com) (216.138.202.10) by sourceware.cygnus.com with SMTP; 12 Nov 2001 18:22:21 -0000 Received: from cygnus.com (localhost [127.0.0.1]) by localhost.cygnus.com (Postfix) with ESMTP id 9609F3EF7 for ; Mon, 12 Nov 2001 13:22:21 -0500 (EST) Message-ID: <3BF0135D.9000902@cygnus.com> Date: Thu, 01 Nov 2001 15:10:00 -0000 From: Andrew Cagney User-Agent: Mozilla/5.0 (X11; U; NetBSD macppc; en-US; rv:0.9.3) Gecko/20011020 X-Accept-Language: en-us MIME-Version: 1.0 To: gdb-patches@sources.redhat.com Subject: [rfa/dejagnu] Work around cygwin / expect background problem Content-Type: multipart/mixed; boundary="------------070405040702010401060706" X-SW-Source: 2001-11/txt/msg00012.txt.bz2 This is a multi-part message in MIME format. --------------070405040702010401060706 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-length: 422 Hello, The attached patch tweeks dejagnu/lib/remote/exp so that it uses the shell's background rather than the TCL background operator when trying to kill a GDB that's gone wallkabout. Turns out that expect on cygwin occasionaly and mysteriously die when executing the TCL background. While the cygwin problems now appear fixed, the problem is still out there in the field :-( look ok (fernando I guess?), Andrew --------------070405040702010401060706 Content-Type: text/plain; name="diffs" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="diffs" Content-length: 2580 2001-11-12 Andrew Cagney * lib/remote.exp (local_exec, standard_close): Use SHELL background instead of tcl background to background the kill processes. Work around cygwin/expect problem. Index: lib/remote.exp =================================================================== RCS file: /cvs/src/src/dejagnu/lib/remote.exp,v retrieving revision 1.2 diff -p -r1.2 remote.exp *** remote.exp 2001/10/30 15:20:05 1.2 --- remote.exp 2001/11/12 18:12:52 *************** proc local_exec { commandline inp outp t *** 179,185 **** # command in order to execute the execution. (English. Gotta love it.) if { ! $got_eof } { verbose "killing $pid $pgid"; ! exec sh -c "exec > /dev/null 2>&1 && (kill -2 $pgid || kill -2 $pid) && sleep 5 && (kill -15 $pgid || kill $pid) && sleep 5 && (kill -9 $pgid || kill -9 $pid)" &; } # This will hang if the kill doesn't work. Nothin' to do, and it's not ok. catch "close -i $spawn_id"; --- 179,188 ---- # command in order to execute the execution. (English. Gotta love it.) if { ! $got_eof } { verbose "killing $pid $pgid"; ! # This is very, very nasty. SH, instead of EXPECT, is used to ! # run this in the background since, on cygwin, a strange file ! # I/O error occures. ! exec sh -c "exec > /dev/null 2>&1 && (kill -2 $pgid || kill -2 $pid) && sleep 5 && (kill -15 $pgid || kill $pid) && sleep 5 && (kill -9 $pgid || kill -9 $pid) &"; } # This will hang if the kill doesn't work. Nothin' to do, and it's not ok. catch "close -i $spawn_id"; *************** proc standard_close { host } { *** 314,323 **** } if { $pid > 0 } { verbose "doing kill, pid is $pid"; ! # This is very, very nasty. Then again, if after did something ! # reasonable... set pgid "-[join $pid { -}]"; ! exec sh -c "exec > /dev/null 2>&1 && (kill -2 $pgid || kill -2 $pid) && sleep 5 && (kill $pgid || kill $pid) && sleep 5 && (kill -9 $pgid || kill -9 $pid)" &; } verbose "pid is $pid"; catch "close -i $shell_id"; --- 317,327 ---- } if { $pid > 0 } { verbose "doing kill, pid is $pid"; ! # This is very, very nasty. SH, instead of EXPECT, is used to ! # run this in the background since, on cygwin, a strange file ! # I/O error occures. set pgid "-[join $pid { -}]"; ! exec sh -c "exec > /dev/null 2>&1 && (kill -2 $pgid || kill -2 $pid) && sleep 5 && (kill $pgid || kill $pid) && sleep 5 && (kill -9 $pgid || kill -9 $pid) &"; } verbose "pid is $pid"; catch "close -i $shell_id"; --------------070405040702010401060706--