zsh-users
 help / color / mirror / code / Atom feed
From: Bart Schaefer <schaefer@brasslantern.com>
To: zsh-users@zsh.org
Subject: Re: precmd: write error: interrupted
Date: Thu, 25 Apr 2013 11:16:46 -0700	[thread overview]
Message-ID: <130425111646.ZM17258@torch.brasslantern.com> (raw)
In-Reply-To: <klbmnc$ieh$1@ger.gmane.org>

On Apr 25,  6:47pm, Yuri D'Elia wrote:
} 
} I still have the error, as I didn't find any way to silence it (braces 
} around print do not work?!).

That's curious, but try using parentheses to force a fork and redirect
the stderr of the subshell.

} I have no idea which write is actually failing in that function (I 
} suppose it's some "fputs" in bin_print).

strace should be able to show you what bytes are being written, which
would narrow it down.

} :(. I really wished I had dtrace here...

On every host where I have dtrace, I wish I had strace.
 
} What's happening is that the terminal is being resized immediately after 
} starting, and a SIGWINCH is emitted while the actual "precmd" write is 
} being done on stdout. The call is not restarted and the write fails.

Yes, the zsh signal handler setup explicitly prevents system call restart
whenever possible, so that (among other reasons) behavior from traps is
consistent across operating systems.

} 1) SIGWINCH should either be masked or allow write to restart.

This requires some thought about the appropriate layer to handle this.
bin_print does already do some signal queuing when writing to internal
data structures (print -z, print -s), but that's deliberately isolated
to bin_print, whereas all sorts of other things might write to the
terminal -- including other error messages! -- so patching bin_print is
not covering all the bases.

On the other hand we probably don't want to build a wrapper around the
entire stdio library just to differentiate terminal writes.

} 2) Why "precmd() { { print "HELLO" } >&- 2>&-; } doesn't suppress the 
} error in this case?

It's not the same error.  Try 2>/dev/null instead of 2>&- ... with the
stderr closed, you're actually getting a second error from outside the
braces, about not being able to write the first error from inside!

torch% print -u99 "Hello"    
print: bad file number: -1
torch% { print -u99 "Hello" } 2>&-
zsh: write error
torch% { print -u99 "Hello" } 2>/dev/null
torch% 


  parent reply	other threads:[~2013-04-25 18:16 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-25 16:47 Yuri D'Elia
2013-04-25 17:44 ` Yuri D'Elia
2013-04-25 18:27   ` Bart Schaefer
2013-04-25 18:16 ` Bart Schaefer [this message]
2013-04-25 18:38   ` Peter Stephenson
2013-04-25 22:18     ` Bart Schaefer
2013-04-26  0:52       ` Bart Schaefer
2013-04-25 19:38   ` Yuri D'Elia
2013-04-26  0:53     ` Bart Schaefer
2013-04-25 20:05   ` Yuri D'Elia
2013-04-25 20:58     ` Yuri D'Elia
2013-04-26 15:08     ` Bart Schaefer
     [not found]     ` <130426080805.ZM18619__18102.73175729$1366989065$gmane$org@torch.brasslantern.com>
2013-04-26 17:59       ` Yuri D'Elia

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=130425111646.ZM17258@torch.brasslantern.com \
    --to=schaefer@brasslantern.com \
    --cc=zsh-users@zsh.org \
    /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).