GCC Bugzilla – Bug 9799
mismatching structure initializer with nested flexible array member, segfaults
Last modified: 2003-07-25 17:33:46 UTC
Error message is... gcc_seg_fault.c:14: internal error: Segmentation fault Please submit a full bug report... The following illegal code caused a segfault instead of being flagged as an illegal structure initializer. Of course I stripped this down and changed the data and identifier names from my original code :). There are actually two errors in my code which I suppose "aligned" to trigger the segfault. Here is the code... // gcc_seg_fault.c typedef struct { int aaa; } s1_t; typedef struct { int bbb; s1_t s1_array[]; // <-- oops, array has no size } s2_t; static s2_t s2_array[]= { { 1, 4}, // <-- 4 should really be inside { } { 2, 5}, { 3, 6} }; The following code does work... // gcc_ok1.c typedef struct { int aaa; } s1_t; typedef struct { int bbb; s1_t s1_array[]; } s2_t; static s2_t s2_array[]= { { 1, {4}}, { 2, {5}}, { 3, {6}} }; and this works also... // gcc_ok2.c typedef struct { int aaa; } s1_t; typedef struct { int bbb; s1_t s1_array[2]; } s2_t; static s2_t s2_array[]= { { 1, 4}, { 2, 5}, { 3, 6} }; Release: 3.1 Environment: linux 2.4 How-To-Repeat: gcc -c gcc_seg_fault.c
Responsible-Changed-From-To: unassigned->ebotcazou Responsible-Changed-Why: Patching.
State-Changed-From-To: open->analyzed State-Changed-Why: Lack of sanity check.
From: ebotcazou@gcc.gnu.org To: gcc-gnats@gcc.gnu.org Cc: Subject: c/9799 Date: 5 Mar 2003 08:37:57 -0000 CVSROOT: /cvs/gcc Module name: gcc Changes by: ebotcazou@gcc.gnu.org 2003-03-05 08:37:57 Modified files: gcc : ChangeLog c-typeck.c gcc/testsuite : ChangeLog Added files: gcc/testsuite/gcc.c-torture/compile: 20030305-1.c Log message: PR c/9799 * c-typeck.c (push_init_level): Add sanity check. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=1.16944&r2=1.16945 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/c-typeck.c.diff?cvsroot=gcc&r1=1.222&r2=1.223 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.2468&r2=1.2469 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.c-torture/compile/20030305-1.c.diff?cvsroot=gcc&r1=NONE&r2=1.1
From: ebotcazou@gcc.gnu.org To: gcc-gnats@gcc.gnu.org Cc: Subject: c/9799 Date: 5 Mar 2003 08:48:32 -0000 CVSROOT: /cvs/gcc Module name: gcc Branch: gcc-3_3-branch Changes by: ebotcazou@gcc.gnu.org 2003-03-05 08:48:31 Modified files: gcc : ChangeLog c-typeck.c gcc/testsuite : ChangeLog Added files: gcc/testsuite/gcc.c-torture/compile: 20030305-1.c Log message: PR c/9799 * c-typeck.c (push_init_level): Add sanity check. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=1.16114.2.263&r2=1.16114.2.264 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/c-typeck.c.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=1.213.2.2&r2=1.213.2.3 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=1.2261.2.71&r2=1.2261.2.72 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.c-torture/compile/20030305-1.c.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=NONE&r2=1.1.2.1
From: ebotcazou@gcc.gnu.org To: gcc-gnats@gcc.gnu.org Cc: Subject: c/9799 Date: 5 Mar 2003 09:00:43 -0000 CVSROOT: /cvs/gcc Module name: gcc Branch: gcc-3_2-branch Changes by: ebotcazou@gcc.gnu.org 2003-03-05 09:00:43 Modified files: gcc : ChangeLog c-typeck.c gcc/testsuite : ChangeLog Added files: gcc/testsuite/gcc.c-torture/compile: 20030305-1.c Log message: PR c/9799 * c-typeck.c (push_init_level): Add sanity check. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.13152.2.657.2.246&r2=1.13152.2.657.2.247 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/c-typeck.c.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.180.2.2.4.5&r2=1.180.2.2.4.6 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.1672.2.166.2.102&r2=1.1672.2.166.2.103 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.c-torture/compile/20030305-1.c.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=NONE&r2=1.1.4.1
State-Changed-From-To: analyzed->closed State-Changed-Why: Fixed.