Configuration Information [Automatically generated, do not change]:
Machine: x86_64
OS: linux-musl
Compiler: gcc
Compilation CFLAGS: -g -O2 -Wno-parentheses -Wno-format-security
uname output: Linux e4cb51356521 5.11.0-38-generic #42~20.04.1-Ubuntu SMP Tue
Sep 28 20:41:07 UTC 2021 x86_64 Linux
Machine Type: x86_64-pc-linux-musl
Bash Version: 5.1
Patch Level: 8
Release Status: release
Description:
When an ERR trap includes newlines, the line number returned by
"caller 0" is affected.
Repeat-By:
Here are some examples.
$ cat -n 1.bash
1 set -E -e
2 f() { i=0; while caller $((i++)); do :; done; }
3 trap 'f' ERR
4 false
$ bash 1.bash
4 main 1.bash
$ cat -n 2.bash
1 set -E -e
2 f() { i=0; while caller $((i++)); do :; done; }
3 trap '
4 f' ERR
5 false
$ bash 2.bash
6 main 2.bash
$ cat -n 3.bash
1 set -E -e
2 f() { i=0; while caller $((i++)); do :; done; }
3 trap '
4
5 f' ERR
6 false
$ bash 3.bash
8 main 3.bash
$ cat -n 4.bash
1 set -E -e
2 f() { i=0; while caller $((i++)); do :; done; }
3 trap 'f' ERR
4 g() { false; }
5 g
$ bash 4.bash
4 g 4.bash
5 main 4.bash
$ cat -n 5.bash
1 set -E -e
2 f() { i=0; while caller $((i++)); do :; done; }
3 trap '
4 f' ERR
5 g() { false; }
6 g
$ bash 5.bash
6 g 5.bash
6 main 5.bash
$ cat -n 6.bash
1 set -E -e
2 f() { i=0; while caller $((i++)); do :; done; }
3 trap '
4
5 f' ERR
6 g() { false; }
7 g
$ bash 6.bash
8 g 6.bash
7 main 6.bash