zsh-workers
 help / color / mirror / code / Atom feed
* trap .. EXIT doesn't execute when exit is due to a signal
@ 2005-02-12 11:26 Matthias B.
  2005-02-12 21:04 ` Dan Nelson
  0 siblings, 1 reply; 4+ messages in thread
From: Matthias B. @ 2005-02-12 11:26 UTC (permalink / raw)
  To: Zsh hackers list

trap ... EXIT doesn't execute ... when the shell is terminated due to a
signal (e.g. Ctrl-C). I think this is a bug. It's certainly undesirable,
because it causes cleanup tasks to not be executed. Bash doesn't have this
problem.

MSB

-- 
Physics is about prediction, not truth.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: trap .. EXIT doesn't execute when exit is due to a signal
  2005-02-12 11:26 trap .. EXIT doesn't execute when exit is due to a signal Matthias B.
@ 2005-02-12 21:04 ` Dan Nelson
  2005-02-12 21:29   ` Bart Schaefer
  0 siblings, 1 reply; 4+ messages in thread
From: Dan Nelson @ 2005-02-12 21:04 UTC (permalink / raw)
  To: Matthias B.; +Cc: Zsh hackers list

In the last episode (Feb 12), Matthias B. said:
> trap ... EXIT doesn't execute ... when the shell is terminated due to
> a signal (e.g. Ctrl-C). I think this is a bug. It's certainly
> undesirable, because it causes cleanup tasks to not be executed. Bash
> doesn't have this problem.

zsh-users 3513 describes what is happening here, I think.  Ash and
/Solaris bin/sh have the same behaviour.

-- 
	Dan Nelson
	dnelson@allantgroup.com


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: trap .. EXIT doesn't execute when exit is due to a signal
  2005-02-12 21:04 ` Dan Nelson
@ 2005-02-12 21:29   ` Bart Schaefer
  2005-02-14 15:33     ` Peter Stephenson
  0 siblings, 1 reply; 4+ messages in thread
From: Bart Schaefer @ 2005-02-12 21:29 UTC (permalink / raw)
  To: Dan Nelson, Matthias B.; +Cc: Zsh hackers list

On Feb 12,  3:04pm, Dan Nelson wrote:
} Subject: Re: trap .. EXIT doesn't execute when exit is due to a signal
}
} In the last episode (Feb 12), Matthias B. said:
} > trap ... EXIT doesn't execute ... when the shell is terminated due to
} > a signal (e.g. Ctrl-C). I think this is a bug. It's certainly
} > undesirable, because it causes cleanup tasks to not be executed. Bash
} > doesn't have this problem.
} 
} zsh-users 3513 describes what is happening here, I think.  Ash and
} /Solaris bin/sh have the same behaviour.

Yep, that's exactly it.

It just occured to me that it may very well be the case that bash is
using the POSIX atexit() handler to execute its exit traps, which I
believe would handle the situation described in 3513 without having
to do any special handling of SIGINT.

However, I'm not positive that covers all the cases in which zsh runs
the exit trap, and it'd have to be used carefully to be sure the exit
trap wasn't run more than once.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: trap .. EXIT doesn't execute when exit is due to a signal
  2005-02-12 21:29   ` Bart Schaefer
@ 2005-02-14 15:33     ` Peter Stephenson
  0 siblings, 0 replies; 4+ messages in thread
From: Peter Stephenson @ 2005-02-14 15:33 UTC (permalink / raw)
  To: Zsh hackers list

Bart Schaefer wrote:
> It just occured to me that it may very well be the case that bash is
> using the POSIX atexit() handler to execute its exit traps, which I
> believe would handle the situation described in 3513 without having
> to do any special handling of SIGINT.
> 
> However, I'm not positive that covers all the cases in which zsh runs
> the exit trap, and it'd have to be used carefully to be sure the exit
> trap wasn't run more than once.

No, it's not good enough for traps exiting functions.  bash only has an
EXIT trap for the whole shell.

bash-2.05b$ fn() { trap 'echo exiting' EXIT; echo fn run; }
bash-2.05b$ fn
fn run
bash-2.05b$ exit
exit
exiting

You couldn't use atexit() to fix the problem in zsh.  You'd need to
return from the interrupt and unwind the call stack to the top, then
exit.

It is a nuisance that EXIT traps aren't always run, however.

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR PLC, Churchill House, Cambridge Business Park, Cowley Road
Cambridge, CB4 0WZ, UK                          Tel: +44 (0)1223 692070


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

**********************************************************************


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2005-02-14 15:34 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-02-12 11:26 trap .. EXIT doesn't execute when exit is due to a signal Matthias B.
2005-02-12 21:04 ` Dan Nelson
2005-02-12 21:29   ` Bart Schaefer
2005-02-14 15:33     ` Peter Stephenson

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).