using cilk++ 8503 on cents 5.4 found that a cilk function that sizes a local array dynamically crashes. the problem is avoided when using an explicit malloc and free. the code is attached. run "make check" to reproduce. #include #include #include extern "C" { int n = 0; int foo(void) { return n; } } void testit(void) { int n = foo(); printf("n=%d\\n", n); int a[n] ; // int *a = (int *) malloc(n * sizeof (int)); for (int i = 0; i < n; i++) a[i] = i; // free(a); } int cilk_main(int argc, char *argv[]) { for (int i = 1; i < argc; i++) { n = atoi(argv[i]); testit(); } return 0; } the crash is: Program received signal SIGSEGV, Segmentation fault. 0x00002aaf37e8e915 in __cilkrts_allocate_dynamic () from /usr/local/cilk_8503/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.2.4/../../../../lib64/libcilkrts.so Current language: auto; currently asm (gdb) disass Dump of assembler code for function __cilkrts_allocate_dynamic: 0x00002aaf37e8e912 <__cilkrts_allocate_dynamic+0>: mov %rsp,%rax 0x00002aaf37e8e915 <__cilkrts_allocate_dynamic+3>: mov 0x48(%r10),%rsp 0x00002aaf37e8e919 <__cilkrts_allocate_dynamic+7>: push %rax 0x00002aaf37e8e91a <__cilkrts_allocate_dynamic+8>: callq 0x2aaf37e8add0 <__cilkrts_c_allocate_dynamic> 0x00002aaf37e8e91f <__cilkrts_allocate_dynamic+13>: mov (%rsp),%rsp 0x00002aaf37e8e923 <__cilkrts_allocate_dynamic+17>: retq End of assembler dump. (gdb) info registers rax 0x1ec95c28 516512808 rbx 0x1ec95c30 516512816 rcx 0x3dcbb51780 265410647936 rdx 0x7fffb2904fc0 140736189190080 rsi 0x4 4 rdi 0x1ec95c68 516512872 rbp 0x1ec95c60 0x1ec95c60 rsp 0x1ec95c28 0x1ec95c28 r8 0xffffffff 4294967295 r9 0x3dcb919840 265408321600 r10 0x22 34 r11 0x206 518 r12 0x7fffb2905490 140736189191312 r13 0x909090909090cc02 -8029759185026495486 r14 0x909090909090cc03 -8029759185026495485 r15 0x909090909090cc04 -8029759185026495484 rip 0x2aaf37e8e915 0x2aaf37e8e915 <__cilkrts_allocate_dynamic+3>
Program received signal SIGSEGV, Segmentation fault.0x00002aaf37e8e915 in __cilkrts_allocate_dynamic () from /usr/local/cilk_8503/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.2.4/../../../../lib64/libcilkrts.soCurrent language: auto; currently asm(gdb) disassDump of assembler code for function __cilkrts_allocate_dynamic:0x00002aaf37e8e912 <__cilkrts_allocate_dynamic+0>: mov %rsp,%rax0x00002aaf37e8e915 <__cilkrts_allocate_dynamic+3>: mov 0x48(%r10),%rsp0x00002aaf37e8e919 <__cilkrts_allocate_dynamic+7>: push %rax0x00002aaf37e8e91a <__cilkrts_allocate_dynamic+8>: callq 0x2aaf37e8add0 <__cilkrts_c_allocate_dynamic>0x00002aaf37e8e91f <__cilkrts_allocate_dynamic+13>: mov (%rsp),%rsp0x00002aaf37e8e923 <__cilkrts_allocate_dynamic+17>: retq End of assembler dump.(gdb) info registersrax 0x1ec95c28 516512808rbx 0x1ec95c30 516512816rcx 0x3dcbb51780 265410647936rdx 0x7fffb2904fc0 140736189190080rsi 0x4 4rdi 0x1ec95c68 516512872rbp 0x1ec95c60 0x1ec95c60rsp 0x1ec95c28 0x1ec95c28r8 0xffffffff 4294967295r9 0x3dcb919840 265408321600r10 0x22 34r11 0x206 518r12 0x7fffb2905490 140736189191312r13 0x909090909090cc02 -8029759185026495486r14 0x909090909090cc03 -8029759185026495485r15 0x909090909090cc04 -8029759185026495484rip 0x2aaf37e8e915 0x2aaf37e8e915 <__cilkrts_allocate_dynamic+3>



