zsh-workers
 help / color / mirror / code / Atom feed
From: P.Stephenson@swansea.ac.uk
To: zsh-workers@math.gatech.edu (Zsh hackers list)
Subject: Re: BIG bug!
Date: Mon, 05 Jun 95 10:33:04 +0100	[thread overview]
Message-ID: <22836.9506050933@pyro.swan.ac.uk> (raw)
In-Reply-To: "david.sainty@comp.vuw.ac.nz"'s message of "Sun, 04 Jun 1995 19:25:53 +1200." <199506040725.TAA26352@bats.comp.vuw.ac.nz>

david.sainty@comp.vuw.ac.nz wrote:
> This bug has a very weird effect that could cause a lot of strife! The
> effect appears to be that at the end of .'ing a script (including
> login scripts), zsh is likely to jump back into the middle of the
> script and start again! This causes infinite loops, or weird errors
> with no apparent cause (I could not see where the unmatched " was,
> because my login script was being jumped into halfway through a line
> with a " near the start!)
> 
> And yeah.... That did take a lot of hunting! But I have so much work
> to do, I was just looking for a reason to procrastinate! :-)

Thanks for the work on this... You'll be gratified/annoyed to know it
only took me a few minutes to track down with the information you
gave.  These are classic symptoms for exit() being called instead of
_exit(), so the culprit had to be the exit for builtins with an exec.
The problem was the new code which allows an exec at the end of a
subshell turns on CFLAG_EXEC, and the forked variable isn't enough to
tell you if you're in a subshell, so I added the explicit test for
`subsh'.

(Translation:  You're likely to get this when doing something like
backtick expansion where the last command was a builtin --- that was
the case in Dave's script.)

Anyway, this disposes of that spurious `return' call on OSF/1 3.0.
If anyone still experiences similar problems, let me know a.s.a.p.
Looking at the exit in execlist(), it may well be that needs the same
treatment.  (The symptoms would then show up when ERREXIT was set in a
subshell which terminated on an error.)

*** Src/exec.c.exit	Mon Jun  5 10:16:00 1995
--- Src/exec.c	Mon Jun  5 10:16:14 1995
***************
*** 1450,1456 ****
  
  	    if (!forked) {
  		if (cmd->flags & CFLAG_EXEC)
! 		    exit(lastval);
  		if (savelist) {
  		    /* Restore variables, freeing the list but not data. */
  		    Savepm savenode;
--- 1450,1459 ----
  
  	    if (!forked) {
  		if (cmd->flags & CFLAG_EXEC)
! 		    if (subsh)
! 			_exit(lastval);
! 		    else
! 			exit(lastval);
  		if (savelist) {
  		    /* Restore variables, freeing the list but not data. */
  		    Savepm savenode;

-- 
Peter Stephenson <P.Stephenson@swansea.ac.uk>  Tel: +44 1792 205678 extn. 4461
WWW:  http://python.swan.ac.uk/~pypeters/      Fax: +44 1792 295324
Department of Physics, University of Wales, Swansea,
Singleton Park, Swansea, SA2 8PP, U.K.


      reply	other threads:[~1995-06-05  9:40 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1995-06-04  7:25 Dave Sainty
1995-06-05  9:33 ` P.Stephenson [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=22836.9506050933@pyro.swan.ac.uk \
    --to=p.stephenson@swansea.ac.uk \
    --cc=zsh-workers@math.gatech.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).