From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28448 invoked by alias); 8 Nov 2016 12:48:01 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 39870 Received: (qmail 18705 invoked from network); 8 Nov 2016 12:48:01 -0000 X-Qmail-Scanner-Diagnostics: from mailout4.w1.samsung.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(210.118.77.14):SA:0(-2.8/5.0):. Processed in 0.457128 secs); 08 Nov 2016 12:48:01 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.8 required=5.0 tests=RP_MATCHES_RCVD autolearn=unavailable autolearn_force=no version=3.4.1 X-Envelope-From: p.stephenson@samsung.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: none (ns1.primenet.com.au: domain at samsung.com does not designate permitted sender hosts) X-AuditID: cbfec7f1-f79f46d0000008eb-ac-5821c979443c Date: Tue, 08 Nov 2016 12:47:50 +0000 From: Peter Stephenson To: Zsh hackers list Subject: Re: 'exit' in trap handler does not execute EXIT trap Message-id: <20161108124750.62932bd3@pwslap01u.europe.root.pri> In-reply-to: <4d3151fc-715b-dbe3-86fe-89a8d9fe5d75@inlv.org> Organization: Samsung Cambridge Solution Centre X-Mailer: Claws Mail 3.7.9 (GTK+ 2.22.0; i386-redhat-linux-gnu) MIME-version: 1.0 Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrLIsWRmVeSWpSXmKPExsWy7djP87pVJxUjDN5uZbE42PyQyYHRY9XB D0wBjFFcNimpOZllqUX6dglcGTO75jMXfOGqWP/1K1sD4wqOLkZODgkBE4mZG1rYIWwxiQv3 1rN1MXJxCAksZZRYdv0uM0hCSKCXSeJMdwRMw8mrE1ghipYxSix8fJIRwpnGJLH36FF2COc0 o8TZjtMsEM4ZRomb19awgPSzCKhK3J54mhHEZhMwlJi6aTaYLSKgJbHj5EkmEFtYwE7i2ZM7 YLt5Bewl1k1fxgpicwrYSHx5ehyshl9AX+Lq309MEDfZS8y8coYRol5Q4sfke2C7mAV0JLZt e8wOYctLbF7zlhnkIAmB/2wSyyY8B2rmAHJkJTYdYIaY4yLxaMZdVghbWOLV8S3QgJGR6Ow4 CLWrn1HiSbcvxJwZjBKnz+xgg0hYS/TdvsgIsYxPYtK26cwQ83klOtqEIEo8JBa9PwJV7ihx +edbtgmMirOQnD0LydmzkJy9gJF5FaNIamlxbnpqsZFecWJucWleul5yfu4mRmAiOP3v+Mcd jO9PWB1iFOBgVOLhfdGvECHEmlhWXJl7iFGCg1lJhLfjoGKEEG9KYmVValF+fFFpTmrxIUZp DhYlcd49C66ECwmkJ5akZqemFqQWwWSZODilGhhFmV5P+qJ8etMGkc8xZlePTHqyTmu/UPW0 i6dVfj8rf6xv4te63sLdZcFd3oMN3zhCV+ocEtHr/WYXpMPPvUi8wXKO2oIa/qXz+H695YgQ Kfsu0XBKSGgNe22x9dP315Q5yifzRZ7hf9e46fGv70kzAxUkxft+fFL+KXtuS/f/o/b3CxZo V4gpsRRnJBpqMRcVJwIA1q2CUwADAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrKIsWRmVeSWpSXmKPExsVy+t/xq7oVJxUjDCbfMrY42PyQyYHRY9XB D0wBjFFuNhmpiSmpRQqpecn5KZl56bZKoSFuuhZKCnmJuam2ShG6viFBSgpliTmlQJ6RARpw cA5wD1bSt0twy5jZNZ+54AtXxfqvX9kaGFdwdDFyckgImEicvDqBFcIWk7hwbz0biC0ksIRR 4sy+Ygh7BpPEmQ3lXYxcQPZpRokLnadZIZwzjBJ7Fy1nAqliEVCVuD3xNCOIzSZgKDF102ww W0RAS2LHyZNgNcICdhLPntxhBrF5Bewl1k1fBraZU8BG4svT40wQQycySrxeOhkswS+gL3H1 7ycmiPPsJWZeOcMI0Swo8WPyPRYQmxloweZtTawQtrzE5jVvmSHOVpe4cXc3+wRG4VlIWmYh aZmFpGUBI/MqRpHU0uLc9NxiQ73ixNzi0rx0veT83E2MwCjaduzn5h2MlzYGH2IU4GBU4uF9 0a8QIcSaWFZcmXuIUYKDWUmEt+OgYoQQb0piZVVqUX58UWlOavEhRlNgyExklhJNzgdGeF5J vKGJobmloZGxhYW5kZGSOG/JhyvhQgLpiSWp2ampBalFMH1MHJxSDYwzXs05xyIYH1c+//8S ZeHzxhMy+0p7tu4MXprzRfKuqOcO1m9feF6/CZo6d8vEvwaf9iyoWOtcM2OKUF/C2zddVqsu 1mewnjxkdOzmP5/o/0/n3+6ZV/HOX8vju872n3c8i62l63um9Ubue6Ry6+iUJd/+OKXt27xY 739F7vE+9wnP/Cy/XD12QYmlOCPRUIu5qDgRADFnJ0C4AgAA X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20161108124753eucas1p13976c8d480cbf738e9f871a2bb0da103 X-Msg-Generator: CA X-Sender-IP: 182.198.249.179 X-Local-Sender: =?UTF-8?B?UGV0ZXIgU3RlcGhlbnNvbhtTQ1NDLURhdGEgUGxhbmUb?= =?UTF-8?B?7IK87ISx7KCE7J6QG1ByaW5jaXBhbCBFbmdpbmVlciwgU29mdHdhcmU=?= X-Global-Sender: =?UTF-8?B?UGV0ZXIgU3RlcGhlbnNvbhtTQ1NDLURhdGEgUGxhbmUbU2Ft?= =?UTF-8?B?c3VuZyBFbGVjdHJvbmljcxtQcmluY2lwYWwgRW5naW5lZXIsIFNvZnR3YXJl?= X-Sender-Code: =?UTF-8?B?QzEwG0VIURtDMTBDRDA1Q0QwNTAwNTg=?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20161107184855epcas2p40d3b5bf0dbe89e79bcc94c501a4d1562 X-RootMTR: 20161107184855epcas2p40d3b5bf0dbe89e79bcc94c501a4d1562 References: <4d3151fc-715b-dbe3-86fe-89a8d9fe5d75@inlv.org> On Mon, 7 Nov 2016 18:18:47 +0000 Martijn Dekker wrote: > zsh does not execute the EXIT trap if the trap handler for another trap > exits the shell. I cannot find anything about this in the POSIX spec, > but this is different from all the other shells, which do execute the > EXIT trap. diff --git a/Src/builtin.c b/Src/builtin.c index 6c9d058..6969719 100644 --- a/Src/builtin.c +++ b/Src/builtin.c @@ -5435,6 +5435,11 @@ zexit(int val, int from_where) } } lastval = val; + /* + * Now we are committed to exiting any previous state + * is irrelevant. Ensure trap can run. + */ + errflag = intrap = 0; if (sigtrapped[SIGEXIT]) dotrap(SIGEXIT); callhookfunc("zshexit", NULL, 1, NULL); diff --git a/Test/C03traps.ztst b/Test/C03traps.ztst index 74b83f3..828a3d1 100644 --- a/Test/C03traps.ztst +++ b/Test/C03traps.ztst @@ -626,6 +626,21 @@ F:Must be tested with a top-level script rather than source or function >before-out >before-in + if zmodload zsh/system 2>/dev/null; then + ( + trap 'echo TERM; exit 2' TERM + trap 'echo EXIT' EXIT + kill -s TERM "$sysparams[pid]" + echo 'FATAL: we should never get here!' 1>&2 + exit 1 + ) + else + ZTST_skip="zsh/system library not found." + fi +2:EXIT trap from TERM trap +>TERM +>EXIT + %clean rm -f TRAPEXIT