This is the mail archive of the
mailing list for the Cygwin project.
Re: bug in pipe() and pipe2()
- From: Corinna Vinschen <corinna-cygwin at cygwin dot com>
- To: cygwin at cygwin dot com
- Date: Thu, 30 Jun 2011 11:38:25 +0200
- Subject: Re: bug in pipe() and pipe2()
- References: <4E0B9959.firstname.lastname@example.org>
- Reply-to: cygwin at cygwin dot com
On Jun 29 15:30, Eric Blake wrote:
> I was testing the behavior when pipe() fails, in order to propose an
> update to POSIX wording: http://austingroupbugs.net/view.php?id=467
> However, cygwin's pipe implementation dumps core when it runs out of
> fds, [...]
> Expected behavior is EMFILE and fd unchanged, after however many
> iterations it takes to reach the ulimit on max fd.
The problem is that Cygwin uses a placement new operator to allocate
new fhandlers. This type of new operator calls the constructor even
if the placement pointer is NULL. This in turn crashes in a rather
Since we need the placement new for fhandlers to make sure they are
allocated on the cygheap, and since there is no such operator which
only calls the constructor, I only see a very ugly workaround for this
I checked it in, together with two more fixes to avoid a crash.
If somebody has a better solution, feel free to mention it.
Thanks for the report,
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Problem reports: http://cygwin.com/problems.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple