Public bug reported: Binary package hint: dash
With set -e, dash executes only the first command of an INT (Ctrl-C) trap handler: #!/bin/sh set -e trap 'sorry' INT trap 'echo EXIT' EXIT zero() { return 0; } sorry() { #zero echo "Ignored 1"; echo "Ignored 2" sleep 1 echo Back } for i in 3 2 1; do echo "$i" sleep 1 # || true done echo OUT Actual result: $ ./x # Press ^C right away 3 ^CIgnored 1 EXIT Expected result: 3 ^CIgnored 1 Ignored 2 Back 2 1 OUT EXIT By un-commenting the call to function zero, or the "|| true" in the main loop, the problem disapears. Bash also exits prematurely, but at least it runs the "trap INT" handler code to completion. ProblemType: Bug DistroRelease: Ubuntu 10.04 Package: dash 0.5.5.1-3ubuntu2 ProcVersionSignature: Ubuntu 2.6.32-25.45-generic 2.6.32.21+drm33.7 Uname: Linux 2.6.32-25-generic i686 NonfreeKernelModules: nvidia Architecture: i386 Date: Tue Nov 9 19:12:41 2010 ProcEnviron: PATH=(custom, user) LANG=en_US.UTF-8 SHELL=/bin/bash SourcePackage: dash ** Affects: dash (Ubuntu) Importance: Undecided Status: New ** Tags: apport-bug i386 lucid -- dash "set -e" breaks "trap action INT" https://bugs.launchpad.net/bugs/673119 You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs