I know that a recursive trap in a script is probably a bug, but I think that it shouldn't make bash segfault:
| dualbus@hp ...local/src/bash % ./bash -c 'trap "kill \$\$" TERM; kill $$' | [...] | ./bash: line 1: warning: run_pending_traps: recursive invocation while running trap for signal 15 | ./bash: line 1: warning: run_pending_traps: recursive invocation while running trap for signal 15 | ./bash: line 1: warning: run_pending_traps: recursive invocation while running trap for signal 15 | ./bash: line 1: warning: run_pending_traps: recursive invocation while running trap for signal 15 | ./bash: line 1: warning: run_pending_traps: recursive invocation while running trap for signal 15 | zsh: segmentation fault ./bash -c 'trap "kill \$\$" TERM; kill $$' Other shells that also segfault: - dash: | dualbus@hp ~/local/src/dash-0.5.8 | % ./src/dash -c 'trap "kill \$\$" TERM; kill $$' | zsh: segmentation fault ./src/dash -c 'trap "kill \$\$" TERM; kill $$' - mksh: | dualbus@hp ~ % mksh -c 'echo $KSH_VERSION' | @(#)MIRBSD KSH R50 2014/10/19 - busybox sh: |dualbus@hp ~ % busybox sh -c 'trap "kill \$\$" TERM; kill $$' |zsh: segmentation fault busybox sh -c 'trap "kill \$\$" TERM; kill $$' |dualbus@hp ~ % busybox|head -n1 |BusyBox v1.22.1 (Debian 1:1.22.0-13) multi-call binary. Shells that do not: - zsh - ksh93 - heirloom's (BTW, I do know that I should be doing: | -c 'trap "trap - TERM; kill \$\$"; kill $$', but, my point is that it should probably have a recursion limit, just like functions have)