← Back to team overview

group.of.nepali.translators team mailing list archive

[Bug 1697501] Re: ksh segfault on job_chksave () after it receive a SIGCHLD (Signal 17)

 

I have also reported a bug / submitted the patch to Debian upstream via
:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=867181

- Eric

** Bug watch added: Debian Bug tracker #867181
   http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=867181

** Also affects: ksh (Debian) via
   http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=867181
   Importance: Unknown
       Status: Unknown

** Description changed:

  [Impact]
  
   * The compiler optimization dropped parts from the ksh job
  locking mechanism from the binary code. As a consequence, ksh could terminate
  unexpectedly with a segmentation fault after it received the SIGCHLD signal.
  
  [Test Case]
  
   Unfortunately, there is no clear and easy way to reproduce the
  segfault.
  
   * But the original reporter of this bug can randomly reproduce the
  problem using an in-house ksh script that only works inside his
  infrastructure as follow : "ksh <in-house-script.ksh>" and then once in
  a while ksh will segfault as follow :
  
  (gdb) bt
  #0  job_chksave (pid=pid@entry=19003) at /build/ksh-6IEHIC/ksh-93u+20120801/src/cmd/ksh93/sh/jobs.c:1948
  #1  0x00000000004282ab in job_reap (sig=17) at /build/ksh-6IEHIC/ksh-93u+20120801/src/cmd/ksh93/sh/jobs.c:428
  #2  <signal handler called>
  ...
  
  [Regression Potential]
  
   * This update implements a fix to ensure the compiler does not drop
  parts of the ksh mechanism for the crash to no longer occurs.
  
   * The fix has been written by RH and has been proven to work for them
  for the last 3 years.
  
     Note that the RH fix has never been merged upstream (ksh is a
  unmaintained project) and/or possibly never been proposed to upstream
  (to be verified).
+ 
+  * A test package including the RH fix has been tested and verified
+ (pre-SRU) by an affected user with positive feedbacks using his
+ reproducer.
+ 
+ * Feedbacks : 
+ "I've confirmed that our users have not had a single occurrence of core dump on ksh with the patched package. They have run the script sequence over 3000 times since we updated with no issues."
+ 
  
  [Other Info]
  
   * ksh project is unmaintained nowadays [https://github.com/att/ast],
  thus no new development is made upstream nor in debian upstream.
  
   * Details about the RH bug :
  --
     - https://bugzilla.redhat.com/show_bug.cgi?id=1123467
     - https://bugzilla.redhat.com/show_bug.cgi?id=1112306
     - https://access.redhat.com/solutions/1253243
     - http://rhn.redhat.com/errata/RHBA-2014-1015.html
  
    # ksh.spec
        Fri Jul 25 2014 Michal Hlavinka <mhlavink@xxxxxxxxxx> - 20120801-10.8
      - job locking mechanism did not survive compiler optimization (#1123467)
  
    # patch
      - ksh-20120801-locking.patch
  --
  
  [Original Description]
  
  # gdb
  [New LWP 3882]
  Core was generated by `/bin/ksh <KSH_SCRIPT>.ksh'.
  Program terminated with signal SIGSEGV, Segmentation fault.
  #0 job_chksave (pid=pid@entry=19385) at /build/ksh-6IEHIC/ksh-93u+20120801/src/cmd/ksh93/sh/jobs.c:1948
  1948 if(jp->pid==pid)
  
  (gdb) p *jp
  Cannot access memory at address 0xb
  
  (gdb) p *jp->pid
  Cannot access memory at address 0x13
  
  (gdb) p pid
  $2 = 19385
  
  (gdb) p *jpold
  $1 = {next = 0xb, pid = -604008960, exitval = 11124}
  
  The struct is corrupted at some point looking at the next,pid and
  exitval struct members values which isn't valid data.
  
  # assembly code
  => 0x0000000000427159 <+41>: cmp %edi,0x8(%rdx)
  
  (gdb) p $edi  ## pid variable
  $1 = 19385
  
  (gdb) p *($rdx + 8) ## jp->pid struct
  Cannot access memory at address 0x13
  --
  
  ksh is segfaulting because it can't access struct "jp" ($rdx) thus
  cannot de-reference the struct member "jp>pid" ($rdx + 8) at line :
  src/cmd/ksh93/sh/jobs.c:1948 when looking if jp->pid is equal to pid
  ($edi) variable.
  
  I have looked at the github project "att/ast" upstream repo and some
  patches here and there, and nothing seems to apply.
  
  Note that the project seems unmaintained nowadays.

-- 
You received this bug notification because you are a member of नेपाली
भाषा समायोजकहरुको समूह, which is subscribed to Xenial.
Matching subscriptions: Ubuntu 16.04 Bugs
https://bugs.launchpad.net/bugs/1697501

Title:
  ksh segfault on  job_chksave () after it receive a SIGCHLD (Signal 17)

Status in ksh package in Ubuntu:
  In Progress
Status in ksh source package in Trusty:
  In Progress
Status in ksh source package in Xenial:
  In Progress
Status in ksh source package in Yakkety:
  In Progress
Status in ksh source package in Zesty:
  In Progress
Status in ksh source package in Artful:
  In Progress
Status in ksh package in Debian:
  Unknown

Bug description:
  [Impact]

   * The compiler optimization dropped parts from the ksh job
  locking mechanism from the binary code. As a consequence, ksh could terminate
  unexpectedly with a segmentation fault after it received the SIGCHLD signal.

  [Test Case]

   Unfortunately, there is no clear and easy way to reproduce the
  segfault.

   * But the original reporter of this bug can randomly reproduce the
  problem using an in-house ksh script that only works inside his
  infrastructure as follow : "ksh <in-house-script.ksh>" and then once
  in a while ksh will segfault as follow :

  (gdb) bt
  #0  job_chksave (pid=pid@entry=19003) at /build/ksh-6IEHIC/ksh-93u+20120801/src/cmd/ksh93/sh/jobs.c:1948
  #1  0x00000000004282ab in job_reap (sig=17) at /build/ksh-6IEHIC/ksh-93u+20120801/src/cmd/ksh93/sh/jobs.c:428
  #2  <signal handler called>
  ...

  [Regression Potential]

   * This update implements a fix to ensure the compiler does not drop
  parts of the ksh mechanism for the crash to no longer occurs.

   * The fix has been written by RH and has been proven to work for them
  for the last 3 years.

     Note that the RH fix has never been merged upstream (ksh is a
  unmaintained project) and/or possibly never been proposed to upstream
  (to be verified).

   * A test package including the RH fix has been tested and verified
  (pre-SRU) by an affected user with positive feedbacks using his
  reproducer.

  * Feedbacks : 
  "I've confirmed that our users have not had a single occurrence of core dump on ksh with the patched package. They have run the script sequence over 3000 times since we updated with no issues."

  
  [Other Info]

   * ksh project is unmaintained nowadays [https://github.com/att/ast],
  thus no new development is made upstream nor in debian upstream.

   * Details about the RH bug :
  --
     - https://bugzilla.redhat.com/show_bug.cgi?id=1123467
     - https://bugzilla.redhat.com/show_bug.cgi?id=1112306
     - https://access.redhat.com/solutions/1253243
     - http://rhn.redhat.com/errata/RHBA-2014-1015.html

    # ksh.spec
        Fri Jul 25 2014 Michal Hlavinka <mhlavink@xxxxxxxxxx> - 20120801-10.8
      - job locking mechanism did not survive compiler optimization (#1123467)

    # patch
      - ksh-20120801-locking.patch
  --

  [Original Description]

  # gdb
  [New LWP 3882]
  Core was generated by `/bin/ksh <KSH_SCRIPT>.ksh'.
  Program terminated with signal SIGSEGV, Segmentation fault.
  #0 job_chksave (pid=pid@entry=19385) at /build/ksh-6IEHIC/ksh-93u+20120801/src/cmd/ksh93/sh/jobs.c:1948
  1948 if(jp->pid==pid)

  (gdb) p *jp
  Cannot access memory at address 0xb

  (gdb) p *jp->pid
  Cannot access memory at address 0x13

  (gdb) p pid
  $2 = 19385

  (gdb) p *jpold
  $1 = {next = 0xb, pid = -604008960, exitval = 11124}

  The struct is corrupted at some point looking at the next,pid and
  exitval struct members values which isn't valid data.

  # assembly code
  => 0x0000000000427159 <+41>: cmp %edi,0x8(%rdx)

  (gdb) p $edi  ## pid variable
  $1 = 19385

  (gdb) p *($rdx + 8) ## jp->pid struct
  Cannot access memory at address 0x13
  --

  ksh is segfaulting because it can't access struct "jp" ($rdx) thus
  cannot de-reference the struct member "jp>pid" ($rdx + 8) at line :
  src/cmd/ksh93/sh/jobs.c:1948 when looking if jp->pid is equal to pid
  ($edi) variable.

  I have looked at the github project "att/ast" upstream repo and some
  patches here and there, and nothing seems to apply.

  Note that the project seems unmaintained nowadays.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ksh/+bug/1697501/+subscriptions