[Bug 1878517] Re: please apply bash 5.0 patch 17

Matthieu Clemenceau 1878517 at bugs.launchpad.net
Tue Jun 23 21:23:17 UTC 2020


** Description changed:

+ This section is for Focal SRU purpose
+ 
+ [Impact]
+ From https://ftp.gnu.org/gnu/bash
+ There were cases where bash 5.0 patch 16 reaped process substitution file descriptors (or FIFOs) and processes to early. This is a better fix for the problem that bash50-016 attempted to solve.
+ 
+ [Test Case]
+ This simple bash script pass when bash with patch 017 is installed
+ Recommend to run it before and after installing the update to notice the difference
+ 
+ ```
+ #!/usr/bin/bash
+ 
+ ouch() {
+     cat < <(echo bar)
+     cat "$1"
+ }
+ 
+ ouch2() {
+     { cat; } < <(echo bar)
+     cat "$1"
+ }
+ 
+ ouch <(echo "foo")
+ ouch2 <(echo "foo")
+ ```
+ Expected output with the patch installed:
+ 
+ foo
+ bar
+ foo
+ bar
+ 
+ [Regression Potential]
+ This is an upstream patch level update with no additional modification. The regression potential should be fairly low. Also the patch is intended to only fix this problem.
+ Possible regression would be unforeseen additional process substitutions that upstream bash would share.
+   
+ End SRU
+ ------
+ Original Bug Description:
+ 
  I am using Ubuntu 20.04 for development and has hit a bug in bash 5.0
  patch 16.
  
  I can't reproduce it in pure bash, but with bats from https://github.com
  /bats-core/bats-core/ it is very easy to repro:
  
  ```
  # cat << EOF > ya.bats
  check() {
- 	echo "check $@"
- 	ls -l /proc/self/fd
+  echo "check $@"
+  ls -l /proc/self/fd
  }
  
  @test "here file" {
- 	check -p <(echo "hey")
- 	false
+  check -p <(echo "hey")
+  false
  }
  EOF
  
  $ bats ya.bats
  ```
  
  Normally the output should contain the line
  
-    lr-x------ 1 kir kir 64 May 14 02:01 63 -> pipe:[4616918]
+    lr-x------ 1 kir kir 64 May 14 02:01 63 -> pipe:[4616918]
  
  which is a result of a "here file" created by bash via <(echo "hey").
  
  In my testing, about 50% of runs don't have /dev/fd/63 listed.
  
  I found out this is a manifest of a bug introduced in bash 5.0 patch 16
  (see http://ftp.gnu.org/gnu/bash/bash-5.0-patches/bash50-016)
  
  The bug is fixed in 5.0 patch 17 (see
  http://ftp.gnu.org/gnu/bash/bash-5.0-patches/bash50-017).
  
  Please update bash to patchlevel 17.

** Patch added: "debdiff for focal SRU"
   https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1878517/+attachment/5386580/+files/bash-5.0-6ubuntu1.1-focal.debdiff

-- 
You received this bug notification because you are a member of Ubuntu
Sponsors Team, which is subscribed to the bug report.
https://bugs.launchpad.net/bugs/1878517

Title:
  please apply bash 5.0 patch 17

Status in bash package in Ubuntu:
  Fix Released
Status in bash source package in Focal:
  In Progress

Bug description:
  This section is for Focal SRU purpose

  [Impact]
  From https://ftp.gnu.org/gnu/bash
  There were cases where bash 5.0 patch 16 reaped process substitution file descriptors (or FIFOs) and processes to early. This is a better fix for the problem that bash50-016 attempted to solve.

  [Test Case]
  This simple bash script pass when bash with patch 017 is installed
  Recommend to run it before and after installing the update to notice the difference

  ```
  #!/usr/bin/bash

  ouch() {
      cat < <(echo bar)
      cat "$1"
  }

  ouch2() {
      { cat; } < <(echo bar)
      cat "$1"
  }

  ouch <(echo "foo")
  ouch2 <(echo "foo")
  ```
  Expected output with the patch installed:

  foo
  bar
  foo
  bar

  [Regression Potential]
  This is an upstream patch level update with no additional modification. The regression potential should be fairly low. Also the patch is intended to only fix this problem.
  Possible regression would be unforeseen additional process substitutions that upstream bash would share.
    
  End SRU
  ------
  Original Bug Description:

  I am using Ubuntu 20.04 for development and has hit a bug in bash 5.0
  patch 16.

  I can't reproduce it in pure bash, but with bats from
  https://github.com/bats-core/bats-core/ it is very easy to repro:

  ```
  # cat << EOF > ya.bats
  check() {
   echo "check $@"
   ls -l /proc/self/fd
  }

  @test "here file" {
   check -p <(echo "hey")
   false
  }
  EOF

  $ bats ya.bats
  ```

  Normally the output should contain the line

     lr-x------ 1 kir kir 64 May 14 02:01 63 -> pipe:[4616918]

  which is a result of a "here file" created by bash via <(echo "hey").

  In my testing, about 50% of runs don't have /dev/fd/63 listed.

  I found out this is a manifest of a bug introduced in bash 5.0 patch
  16 (see http://ftp.gnu.org/gnu/bash/bash-5.0-patches/bash50-016)

  The bug is fixed in 5.0 patch 17 (see
  http://ftp.gnu.org/gnu/bash/bash-5.0-patches/bash50-017).

  Please update bash to patchlevel 17.

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



More information about the Ubuntu-sponsors mailing list