Thorsten Glaser
2014-Oct-03 12:12 UTC
[klibc] Fwd: mksh-static segfaults on continued jobs
Hi there, something to look at, maybe? ---------- Forwarded message ---------- From: Kacper Gutowski <mwgamera at gmail.com> Message-ID: <20141003053550.GA8510 at gmail.com> Date: Fri, 3 Oct 2014 07:35:50 +0200 Subject: Bug#763842: mksh-static segfaults on continued jobs Package: mksh Version: 50b-1 Severity: normal Dear Maintainer, When a job is continued after being stopped in interactive mksh-static or lksh, they crash with segmentation fault. The simplest way to reproduce is to call "fg" for any stopped job in interactive mksh-static or lksh (full mksh is not affected); it results in job being continued but shell crashing immediately after that. The crash happens in j_print() at jobs.c:1560 where the expression sigtraps[WSTOPSIG(p->status)] is out-of-bounds. It seems to be introduced with revision 1.101 of jobs.c that added WCONTINUED flag to wait(2) and then updated the state after checking status with WIFCONTINUED. Apparently, when compiling with klibc, WCONTINUED flag is defined but WIFCONTINUED macro is not. The result is that p->state and p->status are not consistent. This fixes it for me: --- jobs.c 10 Jun 2014 22:17:33 -0000 1.104 +++ jobs.c 3 Oct 2014 04:33:32 -0000 @@ -1339,7 +1339,7 @@ do { #ifndef MKSH_NOPROSPECTOFWORK pid = waitpid(-1, &status, (WNOHANG | -#ifdef WCONTINUED +#if defined(WCONTINUED) && defined(WIFCONTINUED) WCONTINUED | #endif WUNTRACED)); -- System Information: Debian Release: jessie/sid APT prefers testing APT policy: (900, 'testing'), (700, 'unstable') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 3.14-2-amd64 (SMP w/4 CPU cores) Locale: LANG=pl_PL.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages mksh depends on: ii libc6 2.19-11 mksh recommends no packages. Versions of packages mksh suggests: ii ed 1.10-2 -- no debconf information