Bug 632847 - gcc-c++ ICE dwarf2out_finish, at dwarf2out.c:19640
Summary: gcc-c++ ICE dwarf2out_finish, at dwarf2out.c:19640
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: gcc
Version: 13
Hardware: All
OS: Linux
low
medium
Target Milestone: ---
Assignee: Jakub Jelinek
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2010-09-11 12:02 UTC by Tavis Ormandy
Modified: 2010-09-27 03:56 UTC (History)
1 user (show)

Fixed In Version: gcc-4.5.1-4.fc14
Clone Of:
Environment:
Last Closed: 2010-09-27 03:56:45 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)
reduced reproducer (139 bytes, text/x-c++src)
2010-09-11 12:02 UTC, Tavis Ormandy
no flags Details


Links
System ID Private Priority Status Summary Last Updated
GNU Compiler Collection 45660 0 None None None Never

Description Tavis Ormandy 2010-09-11 12:02:30 UTC
Created attachment 446656 [details]
reduced reproducer

Description of problem:

ICE while compiling c++, compilation failure.

Version-Release number of selected component (if applicable):

$ g++ -v
Using built-in specs.
Target: i686-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch=i686 --build=i686-redhat-linux
Thread model: posix
gcc version 4.4.4 20100630 (Red Hat 4.4.4-10) (GCC) 
$ rpm -q gcc-c++
gcc-c++-4.4.4-10.fc13.i686
$ uname -a
Linux thinkstation 2.6.34.6-54.fc13.i686.PAE #1 SMP Sun Sep 5 17:33:43 UTC 2010 i686 i686 i386 GNU/Linux
$ lsb_release -v
LSB Version:	:core-4.0-ia32:core-4.0-noarch


How reproducible:

Reliably.

Steps to Reproduce:
1. g++ -g minimal.cc (also reproduces with env -i g++ -g minimal.cc)
2.
3.
  
Actual results:

$ env -i g++ -g minimal.cc 
minimal.cc:8: internal compiler error: in dwarf2out_finish, at dwarf2out.c:19640
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://bugzilla.redhat.com/bugzilla> for instructions.
Preprocessed source stored into /tmp/ccXp2Hb3.out file, please attach this to your bugreport.
$ gdb -q /usr/libexec/gcc/i686-redhat-linux/4.4.4/cc1plus 
Reading symbols from /usr/libexec/gcc/i686-redhat-linux/4.4.4/cc1plus...(no debugging symbols found)...done.
(gdb) symbol-file /usr/lib/debug/usr/libexec/gcc/i686-redhat-linux/4.4.4/cc1plus.debug 
(gdb) list dwarf2out.c:19640
19635		      else if (TYPE_P (node->created_for))
19636			context = TYPE_CONTEXT (node->created_for);
19637	
19638		      gcc_assert (context
19639				  && (TREE_CODE (context) == FUNCTION_DECL
19640				      || TREE_CODE (context) == NAMESPACE_DECL));
19641	
19642		      origin = lookup_decl_die (context);
19643		      if (origin)
19644		        add_child_die (origin, die);
(gdb) b dwarf2out.c:19638
Breakpoint 1 at 0x8364d99: file ../../gcc/dwarf2out.c, line 19638.
(gdb) r -quiet -D_GNU_SOURCE minimal.cc -quiet -dumpbase minimal.cc -mtune=generic -march=i686 -auxbase minimal -g -o - -frandom-seed=0 &>/dev/null
Breakpoint 1, dwarf2out_finish (filename=can't compute CFA for this frame
) at ../../gcc/dwarf2out.c:19638
19638		      gcc_assert (context
(gdb) bt
#0  dwarf2out_finish (filename=can't compute CFA for this frame
) at ../../gcc/dwarf2out.c:19638
#1  0x0847d7e7 in compile_file (argc=can't compute CFA for this frame
) at ../../gcc/toplev.c:1032
#2  do_compile (argc=can't compute CFA for this frame
) at ../../gcc/toplev.c:2257
#3  toplev_main (argc=can't compute CFA for this frame
) at ../../gcc/toplev.c:2289
#4  0x08779d56 in ?? ()
#5  0x2e6c616d in ?? ()
#6  0x2d006363 in ?? ()
#7  0x65697571 in ?? ()
#8  0x642d0074 in ?? ()
#9  0x62706d75 in ?? ()
#10 0x00657361 in dl_main () from /lib/ld-linux.so.2
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
(gdb) info locals 
context = <value optimized out>
origin = <value optimized out>
node = 0xb7daa3cc
next_node = 0xb7daa024
die = 0xb7daff88
i = <value optimized out>
__FUNCTION__ = "dwarf2out_finish"
(gdb) i r
eax            0xb7da7410	-1210420208
ecx            0x23	35
edx            0x10	16
ebx            0xb7daa3cc	-1210407988
esp            0xbfffed30	0xbfffed30
ebp            0xbfffee58	0xbfffee58
esi            0xb7daa024	-1210408924
edi            0xb7daff88	-1210384504
eip            0x8364d99	0x8364d99 <dwarf2out_finish+4649>
eflags         0x200297	[ CF PF AF SF IF ID ]
cs             0x73	115
ss             0x7b	123
ds             0x7b	123
es             0x7b	123
fs             0x0	0
gs             0x33	51
(gdb) x/10i $pc
=> 0x8364d99 <dwarf2out_finish+4649>:	mov    DWORD PTR [esp+0x8],0x8745ac2
   0x8364da1 <dwarf2out_finish+4657>:	mov    DWORD PTR [esp+0x4],0x4cb8
   0x8364da9 <dwarf2out_finish+4665>:	mov    DWORD PTR [esp],0x874231c
   0x8364db0 <dwarf2out_finish+4672>:	call   0x8072b59 <fancy_abort>
   0x8364db5 <dwarf2out_finish+4677>:	mov    DWORD PTR [esp+0x8],0x8745ac2
   0x8364dbd <dwarf2out_finish+4685>:	mov    DWORD PTR [esp+0x4],0x4caf
   0x8364dc5 <dwarf2out_finish+4693>:	mov    DWORD PTR [esp],0x874231c
   0x8364dcc <dwarf2out_finish+4700>:	call   0x8072b59 <fancy_abort>
   0x8364dd1 <dwarf2out_finish+4705>:	mov    eax,DWORD PTR [eax+0x58]
   0x8364dd4 <dwarf2out_finish+4708>:	test   eax,eax
(gdb) q

I minimised the input file.

$ cat minimal.cc 
void function ()
{
    struct {
        typedef void (**type_t)(void);
        static inline type_t i(void) { }
    } s;
    *s.i() = 0;
}
$ cat /tmp/ccXp2Hb3.out
// /usr/libexec/gcc/i686-redhat-linux/4.4.4/cc1plus -quiet -iprefix ../lib/gcc/i686-redhat-linux/4.4.4/ -D_GNU_SOURCE minimal.cc -quiet -dumpbase minimal.cc -mtune=generic -march=i686 -auxbase minimal -g -o - -frandom-seed=0
# 1 "minimal.cc"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "minimal.cc"
void function ()
{
    struct {
        typedef void (**type_t)(void);
        static inline type_t i(void) { }
    } s;
    *s.i() = 0;
}


Expected results:

No ICE.

Additional info:

This was the original input file before reduction:

http://code.google.com/p/seccompsandbox/source/browse/trunk/sandbox.cc

$ make testbin32
g++ -g -O0 -Wall -Werror -Wextra -Wno-missing-field-initializers -Wno-unused-parameter -I.  -MMD -MF sandbox.o32.d -m32 -fPIC -c -o sandbox.o32 sandbox.cc
sandbox.cc:874: internal compiler error: in dwarf2out_finish, at dwarf2out.c:19640
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://bugzilla.redhat.com/bugzilla> for instructions.
Preprocessed source stored into /tmp/cclXO5zg.out file, please attach this to your bugreport.
make: *** [sandbox.o32] Error 1

Comment 1 Jakub Jelinek 2010-09-15 08:41:15 UTC
Fixed upstream, will show up whenever new errata is prepared.

Comment 2 Fedora Update System 2010-09-24 22:14:23 UTC
gcc-4.5.1-4.fc14 has been submitted as an update for Fedora 14.
https://admin.fedoraproject.org/updates/gcc-4.5.1-4.fc14

Comment 3 Fedora Update System 2010-09-25 05:10:37 UTC
gcc-4.5.1-4.fc14 has been pushed to the Fedora 14 testing repository.  If problems still persist, please make note of it in this bug report.
 If you want to test the update, you can install it with 
 su -c 'yum --enablerepo=updates-testing update gcc'.  You can provide feedback for this update here: https://admin.fedoraproject.org/updates/gcc-4.5.1-4.fc14

Comment 4 Fedora Update System 2010-09-27 03:56:36 UTC
gcc-4.5.1-4.fc14 has been pushed to the Fedora 14 stable repository.  If problems still persist, please make note of it in this bug report.


Note You need to log in before you can comment on or make changes to this bug.