delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2011/12/09/15:37:29

X-Recipient: archive-cygwin AT delorie DOT com
X-Spam-Check-By: sourceware.org
Date: Fri, 9 Dec 2011 21:36:44 +0100
From: Corinna Vinschen <corinna-cygwin AT cygwin DOT com>
To: cygwin AT cygwin DOT com
Subject: Re: gcc-4.5.3 segfaults wrt alloca
Message-ID: <20111209203644.GN6602@calimero.vinschen.de>
Reply-To: cygwin AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
References: <20111209105801 DOT GA10388 AT po8371> <4EE22156 DOT 4080402 AT cs DOT utoronto DOT ca> <4EE24037 DOT 1000105 AT redhat DOT com> <4EE2483C DOT 3080809 AT cs DOT utoronto DOT ca>
MIME-Version: 1.0
In-Reply-To: <4EE2483C.3080809@cs.utoronto.ca>
User-Agent: Mutt/1.5.21 (2010-09-15)
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie DOT com AT cygwin DOT com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

On Dec  9 12:41, Ryan Johnson wrote:
> On 09/12/2011 12:07 PM, Eric Blake wrote:
> >On 12/09/2011 07:55 AM, Ryan Johnson wrote:
> >>On 09/12/2011 5:58 AM, Denis Excoffier wrote:
> >>>I use the latest packages and cygwin snapshots. The problem described
> >>>below began several snapshots in the past, around beginning of December.
> >>>
> >>>The following program, with static allocation of a reasonable amount
> >>>of data, segfaults, maybe in alloca(). With a smaller size
> >>>(eg 10000) it's ok. With new/malloc (even with 100 times more) it's
> >>>ok. With C or C++. 100% reproducible.
> >>>    unsigned int const SIZE = 689471;
> >>>    int foo[SIZE];
> >>Reasonable? You're trying to stack-allocate 2.5MB of data. Don't do that
> >>-- stack sizes are 2MB or less in most operating systems. Besides, doing
> >>anything useful with a buffer that size would completely drown out the
> >>overhead of calling malloc.
> >Not only that, but stack allocating more than 64k in a single function
> >is a recipe for bypassing the guard page and causing windows to silently
> >quit your program, rather than letting cygwin catch the guard page
> >access and convert it to normal SIGSEGV handling.  To be portable to all
> >OS, you should never stack allocate more than 4k in a single function.
> It's kind of interesting: when I ran that test case with my
> home-brew gcc-4.6, its alloca() explicitly walks through the
> proposed allocation in 4kB increments to ensure that a stack
> overflow triggers SIGSEGV right away, rather than allow silent data
> corruption later. I don't know if older versions also do this, but
> maybe that's why it used to "work" and now "doesn't work."

alloca works this way for ages, as far as I know.


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019