I've tried John's suggestion and it helps but is not enough. I believe I would 
have to trap the outer make invocation as well. Unfortunately wrapping make in 
a script just to be able to to use ctrl-\ is probably not worth it.

I'm instead using jstack though it can be harder to get timing right. 

Mike

diff -r b88cdacd404a common/bin/logger.sh
--- a/common/bin/logger.sh      Tue Jan 28 20:09:25 2014 +0000
+++ b/common/bin/logger.sh      Thu Feb 20 10:33:46 2014 -0800
@@ -41,5 +41,5 @@
 trap "rm -rf \"$RCDIR\"" EXIT
 LOGFILE=$1
 shift
-(exec 3>&1 ; ("$@" 2>&1 1>&3; echo $? > "$RCDIR/rc") | tee -a $LOGFILE 1>&2 ; 
exec 3>&-) | tee -a $LOGFILE
+(exec 3>&1 ; ( trap '' QUIT; "$@" 2>&1 1>&3; echo $? > "$RCDIR/rc") | sh -c 
"trap '' QUIT; tee -a $LOGFILE 1>&2" ; exec 3>&-) | sh -c "trap '' QUIT; tee -a 
$LOGFILE"
 exit `cat "$RCDIR/rc"`

On Feb 6 2014, at 17:50 , John Rose <john.r.r...@oracle.com> wrote:

> On Feb 4, 2014, at 10:48 PM, David Holmes <david.hol...@oracle.com> wrote:
> 
>> I don't see how make and all the intervening shells could know to pass the 
>> signal through to the JVM process. ??
> 
> IIRC they don't need to pass the signal, because the signal goes from the tty 
> to the current group of processes.  A waiting shell or make probably 
> disregards such signals and pays more attention to the response to the thing 
> it is waiting for.  In this case, perhaps the "tee" command gets sick from 
> the signal and causes the pipeline to fail.  Perhaps the "tee" command needs 
> to be wrapped in some kind of trappy thing like:  sh -c 'trap "" 2 3; tee'
> 
> — John

Reply via email to