[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Assigning to BASHPID fails silently
From: |
Martijn Dekker |
Subject: |
Re: Assigning to BASHPID fails silently |
Date: |
Thu, 20 Oct 2016 17:32:38 +0200 |
User-agent: |
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 |
Op 20-10-16 om 14:22 schreef Greg Wooledge:
> On Wed, Oct 19, 2016 at 11:53:37PM +0200, Martijn Dekker wrote:
>> Assigning to BASHPID most certainly does have an effect. Since you
>> didn't quote that part, I think you might have missed my point that
>> attempting this will silently exit the shell without any error message,
>> causing the problem to be hard to track down.
>
> Cannot reproduce:
>
> imadev:~$ bash
> imadev:~$ echo $$
> 5659
> imadev:~$ BASHPID=923
> imadev:~$ echo $$
> 5659
> imadev:~$ exit
> imadev:~$
Urgh...
#! /usr/local/bin/bash
insubshell() {
return "$((BASHPID=$$))"
# ^ fatal typo
}
insubshell
echo continuing
The above script failed to produce output *once* (when run as 'bash
test.sh' with bash 4.4) and then output "continuing" ever since, so I
was suspecting a race condition. I can't reproduce it that way now for
the life of me, though.
However, a tweak proves I didn't lose my mind after all:
#! /usr/local/bin/bash
insubshell() {
return "$((BASHPID=$$))"
# ^ fatal typo
}
for ((i=0; i<10000; i++)); do insubshell; done
echo $i
insubshell || echo ok
echo continuing
The output of this script on my copy of bash-4.4.0 is consistently:
| 0
| continuing
Clearly, that 0 should be 10000. The 'insubshell' function somehow
manages to interrupt the 'for' loop.
So, in some contexts this bug causes a premature exit of the shell, in
others it causes a premature exit of a loop. This bug hunt could get
interesting.
This is on bash 4.4.0-release compiled by myself with default options on
Mac OS X 10.11.6 using "Apple LLVM version 7.3.0 (clang-703.0.31)",
architecture x86_64.
HTH,
- M.
- Assigning to BASHPID fails silently, Martijn Dekker, 2016/10/17
- Re: Assigning to BASHPID fails silently, Eduardo A . Bustamante López, 2016/10/18
- Re: Assigning to BASHPID fails silently, Chet Ramey, 2016/10/19
- Re: Assigning to BASHPID fails silently, Chet Ramey, 2016/10/20
- Re: Assigning to BASHPID fails silently, Dan Douglas, 2016/10/20
- Re: Assigning to BASHPID fails silently, Chet Ramey, 2016/10/20
- Re: Assigning to BASHPID fails silently, Chet Ramey, 2016/10/20