Package: ksh Version: 93u+-1.2 Severity: normal Tags: patch This is basically a mirror of bug #1053938 reported for Fedora: https://bugzilla.redhat.com/show_bug.cgi?id=1053938
The bug exists for the ksh package on Debian too (tried both stable and sid on PowerPC) and can be reproduced pretty reliable with the details in the above mentioned bug report. Michal Hlavinka was able to provide a fix that has been included the latest Fedora package of ksh. I'll attach Michal's patch to that bug report. Moving this to debian/patches and editing the series file built the package just fine and fixed the bug. -- System Information: Debian Release: 7.3 APT prefers stable-updates APT policy: (500, 'stable-updates'), (500, 'proposed-updates'), (500, 'stable') Architecture: powerpc (ppc) Kernel: Linux 3.13.0-rc8 Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages ksh depends on: ii libc6 2.13-38+deb7u1 ksh recommends no packages. ksh suggests no packages. -- no debconf information
diff -up ksh-20120801/src/cmd/ksh93/include/defs.h.longer ksh-20120801/src/cmd/ksh93/include/defs.h --- ksh-20120801/src/cmd/ksh93/include/defs.h.longer 2012-06-25 20:47:47.000000000 +0200 +++ ksh-20120801/src/cmd/ksh93/include/defs.h 2014-01-17 13:10:49.624714556 +0100 @@ -162,8 +162,8 @@ struct shared Namval_t *prev_table; /* previous table used in nv_open */ \ Sfio_t *outpool; /* ouput stream pool */ \ long timeout; /* read timeout */ \ - short curenv; /* current subshell number */ \ - short jobenv; /* subshell number for jobs */ \ + long curenv; /* current subshell number */ \ + long jobenv; /* subshell number for jobs */ \ int infd; /* input file descriptor */ \ short nextprompt; /* next prompt is PS<nextprompt> */ \ short poolfiles; \ diff -up ksh-20120801/src/cmd/ksh93/include/jobs.h.longer ksh-20120801/src/cmd/ksh93/include/jobs.h --- ksh-20120801/src/cmd/ksh93/include/jobs.h.longer 2011-12-19 13:36:37.000000000 +0100 +++ ksh-20120801/src/cmd/ksh93/include/jobs.h 2014-01-17 13:10:49.625714536 +0100 @@ -87,7 +87,7 @@ struct process unsigned short p_exit; /* exit value or signal number */ unsigned short p_exitmin; /* minimum exit value for xargs */ unsigned short p_flag; /* flags - see below */ - int p_env; /* subshell environment number */ + long p_env; /* subshell environment number */ #ifdef JOBS off_t p_name; /* history file offset for command */ struct termios p_stty; /* terminal state for job */ diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.longer ksh-20120801/src/cmd/ksh93/sh/subshell.c --- ksh-20120801/src/cmd/ksh93/sh/subshell.c.longer 2014-01-17 13:10:49.559715864 +0100 +++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2014-01-17 13:13:41.392290104 +0100 @@ -98,7 +98,7 @@ static struct subshell #endif /* SHOPT_COSHELL */ } *subshell_data; -static int subenv; +static long subenv; /* @@ -171,7 +171,7 @@ void sh_subfork(void) { register struct subshell *sp = subshell_data; Shell_t *shp = sp->shp; - int curenv = shp->curenv; + long curenv = shp->curenv; pid_t pid; char *trap = shp->st.trapcom[0]; if(trap) @@ -461,7 +461,7 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_ struct subshell sub_data; register struct subshell *sp = &sub_data; int jmpval,nsig=0,duped=0; - int savecurenv = shp->curenv; + long savecurenv = shp->curenv; int savejobpgid = job.curpgid; int *saveexitval = job.exitval; int16_t subshell;