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

X-Recipient: archive-cygwin AT delorie DOT com
X-SWARE-Spam-Status: No, hits=0.9 required=5.0 tests=AWL,BAYES_00,BUG6152_INVALID_DATE_TZ_ABSURD,INVALID_DATE_TZ_ABSURD,L_SPAM_TOOL_13
X-Spam-Check-By: sourceware.org
Date: Fri, 9 Dec 2011 11:57:37 +0059
From: Denis Excoffier <cygwin AT Denis-Excoffier DOT org>
To: cygwin AT cygwin DOT com
Subject: gcc-4.5.3 segfaults wrt alloca
Message-ID: <20111209105801.GA10388@po8371>
MIME-Version: 1.0
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-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

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.

Thank you for your help.

Regards,

Denis Excoffier.



% uname -a
CYGWIN_NT-5.1 %%EDITED%% 1.7.10s(0.255/5/3) 20111209 06:57:51 i686 Cygwin
% cat foo.cc
//
// /usr/bin/g++ -o foo foo.cc
//
#define DONT_USE_NEW
int main() {
//
#ifdef DONT_USE_NEW
  unsigned int const SIZE = 689471;
  int foo[SIZE];
#else
  unsigned int const SIZE = 68947100;
  int *const foo = new int [SIZE];
#endif
  for ( unsigned int i = 0 ; i < SIZE ; ++i ) {
    foo[i] = i;
  };
#ifdef DONT_USE_NEW
#else
  // missing free
#endif
  return(0);
};
% /usr/bin/g++ -o foo foo.cc
% ./foo
Segmentation fault (core dumped)
% /usr/bin/gdb ./foo
GNU gdb (GDB) 7.3.50.20111026-cvs (cygwin-special)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-cygwin".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from %%EDITED%%/foo...done.
(gdb) run
Starting program: %%EDITED%%/foo 
[New Thread 3256.0xf44]
[New Thread 3256.0x1908]

Program received signal SIGSEGV, Segmentation fault.
_alloca ()
    at /gnu/gcc/releases/respins/4.5.3-3/gcc4-4.5.3-3/src/gcc-4.5.3/libgcc/../gcc/config/i386/cygwin.asm:45
45	/gnu/gcc/releases/respins/4.5.3-3/gcc4-4.5.3-3/src/gcc-4.5.3/libgcc/../gcc/config/i386/cygwin.asm: No such file or directory.
	in /gnu/gcc/releases/respins/4.5.3-3/gcc4-4.5.3-3/src/gcc-4.5.3/libgcc/../gcc/config/i386/cygwin.asm
(gdb) quit
A debugging session is active.

	Inferior 1 [process 3256] will be killed.

Quit anyway? (y or n) y
%

--
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