From: Jonathan Nieder <jrnieder@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, Jeff King <peff@peff.net>
Subject: Re: [REGRESSION] git-wrapper to run-commands codepath regression
Date: Mon, 18 Apr 2011 17:17:20 -0500 [thread overview]
Message-ID: <20110418221720.GA16977@elie> (raw)
In-Reply-To: <7v4o5v8dlp.fsf@alter.siamese.dyndns.org>
Junio C Hamano wrote:
> if (write(...))
> ; /* yes, yes, there was an error. */
>
> No, a non-zero return is not an error from the write(2) system call.
> I cannot believe both of us didn't spot it. What were we smoking?
Yagh.
if (write(child_err, "fatal: ", 7) ||
write(child_err, msg, len) ||
write(child_err, "\n", 1))
; /* yes, gcc -D_FORTIFY_SOURCE, we know there was an error. */
There are two unusual conditions in which this could fail:
- it doesn't write anything at all, in which case the return value
is -1.
- a partial write, for example if writing to an almost-full pipe.
I suppose in a calmer time, a better fix will look like
if (write_in_full(child_err, "fatal: ", 7) != 7 ||
write_in_full(child_err, msg, len) != len ||
write_in_full(child_err, "\n", 1) != 1)
/* yes, yes, ...
and gcc will have told us something potentially useful.
Thanks for catching it.
next prev parent reply other threads:[~2011-04-18 22:17 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-18 20:54 [REGRESSION] git-wrapper to run-commands codepath regression Junio C Hamano
2011-04-18 21:11 ` Jeff King
2011-04-18 21:18 ` Jeff King
2011-04-18 21:40 ` Junio C Hamano
2011-04-18 21:43 ` Jeff King
2011-04-18 22:10 ` Junio C Hamano
2011-04-18 22:11 ` Andreas Schwab
2011-04-18 21:16 ` Junio C Hamano
2011-04-18 22:17 ` Jonathan Nieder [this message]
2011-04-19 7:05 ` [PATCH] run-command: write full error message in die_child Jonathan Nieder
2011-04-20 7:42 ` Johannes Sixt
2011-04-20 10:33 ` [PATCH v2 0/2] " Jonathan Nieder
2011-04-20 10:35 ` [PATCH 1/2] tests: check error message from run_command Jonathan Nieder
2011-04-20 10:40 ` [PATCH 2/2] run-command: handle short writes and EINTR in die_child Jonathan Nieder
2011-04-19 0:07 ` [REGRESSION] git-wrapper to run-commands codepath regression Junio C Hamano
2011-04-20 4:01 ` [PATCH] report which $PATH entry had trouble running execvp(3) Junio C Hamano
2011-04-20 5:51 ` Jeff King
2011-04-21 0:00 ` Junio C Hamano
2011-04-20 7:37 ` Johannes Sixt
2011-04-20 11:21 ` Jonathan Nieder
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=20110418221720.GA16977@elie \
--to=jrnieder@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=peff@peff.net \
/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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.