On 3/1/26 2:52 PM, Daniel Villeneuve wrote:
    Hi,
    I'm using GNU bash, version 5.1.8(1)-release (x86_64-redhat-linux-gnu),
    on a CentOS Stream 9 machine.
    I am unable to understand what I consider an unexpected behavior from a
    bash script that does the following:
    - use "set -e"
    - install an EXIT trap that takes some time to execute
    - install a TERM trap that just echoes and then re-kills the script
    with TERM
    - start a "sleep infinity" process
    Both traps unset traps for EXIT and TERM on entry.
    On reboot, the TERM signal is not caught immediately because of the
    "sleep" subprocess, which
    is killed and returns an error.  Bash then could start the EXIT trap or
    handle the TERM signal.
    What I observe is that it "starts" the EXIT trap but is then
    immediately interrupted by the TERM signal.

It probably runs the EXIT trap due to the SIGHUP, which is not included
in your testing. I didn't test anything, just looked at the strace
output.


    wait4(-1, [{WIFSIGNALED(s) && WTERMSIG(s) == SIGTERM}], 0, NULL) = 3130
    --- SIGHUP {si_signo=SIGHUP, si_code=SI_USER, si_pid=1, si_uid=0} ---
    --- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=1, si_uid=0} ---
    rt_sigreturn({mask=[CHLD]})             = 3130
    --- SIGTERM {si_signo=SIGTERM, si_code=SI_USER, si_pid=1, si_uid=0} ---

--
``The lyf so short, the craft so long to lerne.'' - Chaucer
                 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU    [email protected]    http://tiswww.cwru.edu/~chet/

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature

Reply via email to