From: Johannes Sixt <j6t@kdbg.org>
To: Vincent van Ravesteijn <vfr@lyx.org>
Cc: git@vger.kernel.org, msysgit@googlegroups.com, gitster@pobox.com,
kusmabite@gmail.com, Johannes.Schindelin@gmx.de
Subject: Re: [msysGit] [PATCH 1/2] MSVC: Do not close stdout to prevent a crash
Date: Sat, 19 Nov 2011 21:11:48 +0100 [thread overview]
Message-ID: <4EC80D84.2010202@kdbg.org> (raw)
In-Reply-To: <1321710345-2299-1-git-send-email-vfr@lyx.org>
Am 19.11.2011 14:45, schrieb Vincent van Ravesteijn:
> When compiled with MSVC, git crashes on Windows when calling
> fstat(stdout) when stdout is closed. fstat is being called at the end of
> run_builtin and this will thus be a problem for builtin command that close
> stdout. This happens for 'format-patch' which closes stdout after a call to
> freopen which directs stdout to the format patch file.
This crash happens because of the some drainbramage in the MS's newer C
runtime: Its functions never return EINVAL (like fstat should in this
case), but it is assumed that cases where EINVAL should be returned are
programming errors, and the application is redirected, via an "invalid
agument handler" to abort() instead. (It is advertized as a security
feature.)
> To prevent the crash and to prevent git from writing cruft into the patch
> file, we do not close stdout, but redirect it to "nul" instead.
A more robust solution is to add invalidcontinue.obj to the linker
command line. This installs an invalid argument handler that does not
abort, and restores a sane behavior.
-- Hannes
next prev parent reply other threads:[~2011-11-19 20:11 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-19 13:45 [PATCH 1/2] MSVC: Do not close stdout to prevent a crash Vincent van Ravesteijn
2011-11-19 13:52 ` [PATCH 2/2] MSVC: Use _putenv instead of putenv " Vincent van Ravesteijn
2011-11-19 14:41 ` [PATCH 1/2] MSVC: Do not close stdout " Andreas Schwab
2011-11-19 19:11 ` Junio C Hamano
2011-11-19 20:16 ` Andreas Schwab
2011-11-20 3:27 ` Junio C Hamano
2011-11-20 9:05 ` Andreas Schwab
2011-11-20 9:27 ` [msysGit] " Johannes Sixt
2011-11-20 21:10 ` Junio C Hamano
2011-11-19 20:52 ` Vincent van Ravesteijn
2011-11-19 20:11 ` Johannes Sixt [this message]
2011-11-22 6:45 ` [msysGit] " Vincent van Ravesteijn
2011-11-22 20:24 ` Johannes Sixt
2011-11-22 21:27 ` Vincent van Ravesteijn
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=4EC80D84.2010202@kdbg.org \
--to=j6t@kdbg.org \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=kusmabite@gmail.com \
--cc=msysgit@googlegroups.com \
--cc=vfr@lyx.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.
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).