[vox-tech] cygwin - segfault on array allocation
Peter Jay Salzman
p at dirac.org
Wed Feb 8 09:12:19 PST 2006
i'm finding that cygwin segfaults on a very simple program:
#include <iostream>
using std::cout;
using std::endl;
// 50760 is the last
int main( int argc, char *argv[] )
{
const long int N = strtol(argv[1], (char **)0, 0);
double a[N], b[N], c[N], d[N], ans[N];
return 0;
}
It does not segfault when N=50760 but does segfault when N=50761. In GDB:
$ gdb arg.exe
GNU gdb 6.3.50_2004-12-28-cvs (cygwin-special)
(gdb) set args 50761
(gdb) break 1
Breakpoint 1 at 0x401050: file arg.cc, line 1.
(gdb) run
Starting program: /cygdrive/c/Documents and
Settings/psalzman/home/tests/args/arg.exe 50761
Breakpoint 1, main (argc=2, argv=0x4c2b90) at arg.cc:7
7 {
(gdb) n
Program received signal SIGSEGV, Segmentation fault.
0x610ae938 in pthread_key_create () from /usr/bin/cygwin1.dll
(gdb)
which is odd; I don't believe this line number. I'm guessing the problem is
memory related because when I remove one of the arrays, the largest number
that does not cause a segfault increases.
But it's strange because the machine has a gig of RAM. With 8 byte doubles,
each array is only approximately .4MB.
Any idea what's going on?
Thanks!
Pete
More information about the vox-tech
mailing list