http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49378
Summary: [4.7 Regression] C++ is broken
Product: gcc
Version: 4.7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: [email protected]
ReportedBy: [email protected]
On Fedora 15/x86-64, revision 174953 failed most of C++ testcase
for 32bit:
http://gcc.gnu.org/ml/gcc-testresults/2011-06/msg01336.html
(gdb) r
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /export/home/hjl/tmp/bad
Program received signal SIGSEGV, Segmentation fault.
0x0018d7b8 in (anonymous
namespace)::future_error_category::~future_error_category (this=0x18d7a0,
__in_chrg=<optimized out>)
at /export/gnu/import/git/gcc/libstdc++-v3/src/future.cc:29
29 struct future_error_category : public std::error_category
(gdb) bt
#0 0x0018d7b8 in (anonymous
namespace)::future_error_category::~future_error_category (this=0x18d7a0,
__in_chrg=<optimized out>)
at /export/gnu/import/git/gcc/libstdc++-v3/src/future.cc:29
#1 0x00295ec7 in __cxa_finalize () from /lib/libc.so.6
#2 0x001767c4 in __do_global_dtors_aux () from /tmp/libstdc++.so.6
#3 0x001ea860 in _fini () from /tmp/libstdc++.so.6
#4 0x0011f2fd in _dl_fini () from /lib/ld-linux.so.2
#5 0x00295b31 in __run_exit_handlers () from /lib/libc.so.6
#6 0x00295bbd in exit () from /lib/libc.so.6
#7 0x0027d41b in __libc_start_main () from /lib/libc.so.6
#8 0x08048ce1 in _start ()
(gdb) disass
Dump of assembler code for function (anonymous
namespace)::future_error_category::~future_error_category():
0x0018d7a0 <+0>: push %ebx
0x0018d7a1 <+1>: call 0x176847 <__i686.get_pc_thunk.bx>
0x0018d7a6 <+6>: add $0x8784e,%ebx
0x0018d7ac <+12>: sub $0x18,%esp
0x0018d7af <+15>: mov %eax,(%esp)
0x0018d7b2 <+18>: lea -0x2bcc(%ebx),%edx
=> 0x0018d7b8 <+24>: mov %edx,(%eax)
0x0018d7ba <+26>: call 0x173b4c <_ZNSt14error_categoryD2Ev@plt>
0x0018d7bf <+31>: add $0x18,%esp
0x0018d7c2 <+34>: pop %ebx
0x0018d7c3 <+35>: ret
End of assembler dump.
(gdb)
EAX is never initialized.