threads / discuss / 24341

t0005 failing with ksh93 on linux

Subject: t0005 failing with ksh93 on linux

## tl;dr

9 messages between Jul 9, 2010 and Jul 12, 2010.

replies: 8people: 6as markdown or json

Jonathan Nieder· Jul 9, 2010, 03:08 UTC · lore
Hi,
I can’t seem to get test-sigchain to run with ksh93 on linux:
 $ ksh
 
 ksh>$ ../bin-wrappers/test-sigchain 
 three
 two
 one
 Terminated
 ksh>$ echo $?
 271
 ksh>$ exit
 $ ../bin-wrappers/test-sigchain 
 three
 two
 one
 Terminated
 $ echo $?
 143

As a result, t0005-signals.sh fails when run through that shell. Ideas?

$ ksh t0005-signals.sh  -v
Initialized empty Git repository in /dev/shm/alt-git/t/trash directory.t0005-signals/.git/
expecting success: 
[...]
        test_cmp expect actual
not ok - 1 sigchain works
[...]
$ git describe
v1.7.2-rc2
$ ksh --version
  version         sh (AT&T Research) 93s+ 2008-01-31
$ uname -s -r -m
Linux 2.6.26-2-686-bigmem i686
Johannes Sixt· Jul 9, 2010, 07:05 UTC · re: Jonathan Nieder · lore

[PATCH] t0005: work around strange $? in ksh when program terminated by a signal

From: Johannes Sixt <j6t@kdbg.org>

ksh is known to report $? of programs that terminated by a signal as 256 + signal number instead of 128 + signal number like other POSIX compliant shells. (ksh's behavior is still POSIX compliant in this regard.)

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
---
Am 7/9/2010 5:08, schrieb Jonathan Nieder:
Show 11 quoted lines
> I can’t seem to get test-sigchain to run with ksh93 on linux:
> 
>  $ ksh
>  
>  ksh>$ ../bin-wrappers/test-sigchain 
>  three
>  two
>  one
>  Terminated
>  ksh>$ echo $?
>  271
ksh is not wrong, just strange. See http://www.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_08_02 (last sentence).
 -- Hannes
 t/t0005-signals.sh |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/t/t0005-signals.sh b/t/t0005-signals.sh
index 09f855a..93e58c0 100755
--- a/t/t0005-signals.sh
+++ b/t/t0005-signals.sh
@@ -13,6 +13,7 @@ test_expect_success 'sigchain works' '
 	test-sigchain >actual
 	case "$?" in
 	143) true ;; # POSIX w/ SIGTERM=15
+	271) true ;; # ksh w/ SIGTERM=15
 	  3) true ;; # Windows
 	  *) false ;;
 	esac &&
-- 
1.7.1.585.gf3448
Jeff King· Jul 9, 2010, 11:53 UTC · re: Johannes Sixt · lore

Re: [PATCH] t0005: work around strange $? in ksh when program terminated by a signal

On Fri, Jul 09, 2010 at 09:05:16AM +0200, Johannes Sixt wrote:
Show 5 quoted lines
> From: Johannes Sixt <j6t@kdbg.org>
> 
> ksh is known to report $? of programs that terminated by a signal as
> 256 + signal number instead of 128 + signal number like other POSIX
> compliant shells. (ksh's behavior is still POSIX compliant in this regard.)
Thanks, that fix looks good to me.
Acked-by: Jeff King <peff@peff.net>
-Peff
Jonathan Nieder· Jul 9, 2010, 14:39 UTC · re: Johannes Sixt · lore

Re: [PATCH] t0005: work around strange $? in ksh when program terminated by a signal

Johannes Sixt wrote:
> ksh is known to report $? of programs that terminated by a signal as
> 256 + signal number instead of 128 + signal number like other POSIX
> compliant shells. (ksh's behavior is still POSIX compliant in this regard.)
This patch works for me.
 $ ksh t0005-signals.sh
 *   ok 1: sigchain works
 * passed all 1 test(s)
Thanks for the explanation.
Brandon Casey· Jul 9, 2010, 15:45 UTC · re: Johannes Sixt · lore

Re: [PATCH] t0005: work around strange $? in ksh when program terminated by a signal

On 07/09/2010 02:05 AM, Johannes Sixt wrote:
Show 5 quoted lines
> From: Johannes Sixt <j6t@kdbg.org>
> 
> ksh is known to report $? of programs that terminated by a signal as
> 256 + signal number instead of 128 + signal number like other POSIX
> compliant shells. (ksh's behavior is still POSIX compliant in this regard.)

This may only be true for Ksh93. The Ksh88 man page says that the exit status is 128+signum. The Public domain Korn shell, and ksh on IRIX 6.5, Solaris 7, 9, and 10 all exit with the standard behavior of 128+signum. So, it may be appropriate to change the commit message and comment in t0005 to reflect this fact.

-Brandon
Show 15 quoted lines
>  t/t0005-signals.sh |    1 +
>  1 files changed, 1 insertions(+), 0 deletions(-)
> 
> diff --git a/t/t0005-signals.sh b/t/t0005-signals.sh
> index 09f855a..93e58c0 100755
> --- a/t/t0005-signals.sh
> +++ b/t/t0005-signals.sh
> @@ -13,6 +13,7 @@ test_expect_success 'sigchain works' '
>  	test-sigchain >actual
>  	case "$?" in
>  	143) true ;; # POSIX w/ SIGTERM=15
> +	271) true ;; # ksh w/ SIGTERM=15
>  	  3) true ;; # Windows
>  	  *) false ;;
>  	esac &&
Ævar Arnfjörð Bjarmason· Jul 9, 2010, 16:03 UTC · re: Brandon Casey · lore

Re: [PATCH] t0005: work around strange $? in ksh when program terminated by a signal

On Fri, Jul 9, 2010 at 15:45, Brandon Casey <brandon.casey.ctr@nrlssc.navy.mil> wrote:

> the exit status is 128+signum.  The Public domain Korn shell, and
> ksh on IRIX 6.5, Solaris 7, 9, and 10 all exit with the standard
> behavior of 128+signum.  So, it may be appropriate to change the
> commit message and comment in t0005 to reflect this fact.
s/standard/conventional/, no?
Brandon Casey· Jul 9, 2010, 16:07 UTC · re: Ævar Arnfjörð Bjarmason · lore

Re: [PATCH] t0005: work around strange $? in ksh when program terminated by a signal

On 07/09/2010 11:03 AM, Ævar Arnfjörð Bjarmason wrote:
Show 8 quoted lines
> On Fri, Jul 9, 2010 at 15:45, Brandon Casey
> <brandon.casey.ctr@nrlssc.navy.mil> wrote:
>> the exit status is 128+signum.  The Public domain Korn shell, and
>> ksh on IRIX 6.5, Solaris 7, 9, and 10 all exit with the standard
>> behavior of 128+signum.  So, it may be appropriate to change the
>> commit message and comment in t0005 to reflect this fact.
> 
> s/standard/conventional/, no?
sure.
Johannes Sixt· Jul 12, 2010, 06:41 UTC · re: Brandon Casey · lore

[PATCH v2] t0005: work around strange $? in ksh93 when program terminated by a signal

From: Johannes Sixt <j6t@kdbg.org>

ksh93 is known to report $? of programs that terminated by a signal as 256 + signal number instead of 128 + signal number like other POSIX compliant shells. (ksh's behavior is still POSIX compliant in this regard.)

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Acked-by: Jeff King <peff@peff.net>
---
Am 7/9/2010 17:45, schrieb Brandon Casey:
> This may only be true for Ksh93.  The Ksh88 man page says that
> the exit status is 128+signum.  The Public domain Korn shell, and
> ksh on IRIX 6.5, Solaris 7, 9, and 10 all exit with the standard
> behavior of 128+signum.
Thanks for you input!
Hannes
 t/t0005-signals.sh |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/t/t0005-signals.sh b/t/t0005-signals.sh
index 09f855a..e17c96a 100755
--- a/t/t0005-signals.sh
+++ b/t/t0005-signals.sh
@@ -13,6 +13,7 @@ test_expect_success 'sigchain works' '
 	test-sigchain >actual
 	case "$?" in
 	143) true ;; # POSIX w/ SIGTERM=15
+	271) true ;; # ksh93 w/ SIGTERM=15
 	  3) true ;; # Windows
 	  *) false ;;
 	esac &&
-- 
1.7.1.585.gf3448
Junio C Hamano· Jul 12, 2010, 06:47 UTC · re: Johannes Sixt · lore

Re: [PATCH v2] t0005: work around strange $? in ksh93 when program terminated by a signal

Thanks; I've queued this last week already but have been busy this weekend and haven't managed to push anything out.

← back to recent threads