[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