gcc 4.0.0 build 20041024 segfault in the case where a multidimensional array 
is inited with variable size dimension based on a variable declared 
dynamically earlyier in the same block, eg: 
foo(int y){ 
  const int a= y? 1 : 2; 
  int b[2][a][4]; 
  [...] (code acessing b); 
} 
 
The bug happened to me compiling libavcodec/ffv1.c from current-cvs FFmpeg. 
The affected code segment looks like this (also see attached preprocessed 
source): 
---snip--- 
static void encode_rgb_frame(FFV1Context *s, uint32_t *src, int w, int h, int 
stride){ 
    int x, y, p, i; 
    const int ring_size= s->avctx->context_model ? 3 : 2; 
    int_fast16_t sample_buffer[3][ring_size][w+6], *sample[3][ring_size]; 
    s->run_index=0; 
    memset(sample_buffer, 0, sizeof(sample_buffer)); 
    [...more code...] 
} 
---snip--- 
 
The commandline used was: 
---snip--- 
gcc4 -save-temps -I../libvo -I../../libvo -I/usr/X11R6/include -fno-PIC -g -O4 
-march=pentium4 -mtune=pentium4 -pipe -ffast-math -fomit-frame-pointer 
-D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -DHAVE_AV_CONFIG_H 
-I.. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE  -c -o ffv1.o 
ffv1.c 
---snip--- 
 
Resulting output: 
---snip--- 
gcc4: warning: -pipe ignored because -save-temps specified 
ffv1.c: In function 'encode_rgb_frame': 
ffv1.c:443: internal compiler error: Segmentation fault 
Please submit a full bug report, 
with preprocessed source if appropriate. 
See <URL:http://gcc.gnu.org/bugs.html> for instructions. 
---snip--- 
 
GCC Build Info: 
---snip--- 
 Reading specs from /usr/lib/gcc/i686-pc-linux-gnu/4.0.0/specs 
Configured with: /var/tmp/portage/gcc-4.0.0/work/gcc-4.0-20041024/configure 
--prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/4.0 
--includedir=/usr/lib/gcc/i686-pc-linux-gnu/4.0.0/include 
--datadir=/usr/share/gcc-data/i686-pc-linux-gnu/4.0 
--mandir=/usr/share/gcc-data/i686-pc-linux-gnu/4.0/man 
--infodir=/usr/share/gcc-data/i686-pc-linux-gnu/4.0/info --enable-shared 
--host=i686-pc-linux-gnu --target=i686-pc-linux-gnu --with-system-zlib 
--enable-languages=c,c++,java --enable-threads=posix --enable-long-long 
--disable-checking --enable-cstdio=stdio --enable-clocale=generic 
--enable-__cxa_atexit --enable-version-specific-runtime-libs 
--with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/4.0.0/include/g++-v4 
--with-local-prefix=/usr/local --disable-werror --enable-shared --enable-nls 
--without-included-gettext --x-includes=/usr/X11R6/include 
--x-libraries=/usr/X11R6/lib --enable-interpreter --enable-java-awt=xlib 
--with-x --disable-multilib 
Thread model: posix 
gcc version 4.0.0 20041024 (experimental) 
---snip--- 
 
GCC was build with gentoo gcc-3.4.2-r2 using inofficial gentoo gcc-4.0.0 
ebuild from: 
http://jaysonking.com/gcc-4.0.0.ebuild 
 
(Now hopefully I can attach the preproessed source, after adding the bug :-)

-- 
           Summary: segfault on dynamic size array init
           Product: gcc
           Version: 4.0.0
            Status: UNCONFIRMED
          Severity: critical
          Priority: P2
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: atmosfear at users dot sourceforge dot net
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18253

Reply via email to