https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64798
--- Comment #1 from rguenther at suse dot de <rguenther at suse dot de> --- On Mon, 26 Jan 2015, ro at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64798 > > Bug ID: 64798 > Summary: [5 regression] g++.old-deja/g++.eh/badalloc1.C FAILs > Product: gcc > Version: 5.0 > Status: UNCONFIRMED > Severity: normal > Priority: P3 > Component: libstdc++ > Assignee: unassigned at gcc dot gnu.org > Reporter: ro at gcc dot gnu.org > CC: rguenth at gcc dot gnu.org > Host: sparc*-sun-solaris2.* > Target: sparc*-sun-solaris2.* > Build: sparc*-sun-solaris2.* > > Between 20150116 (r219745) and 20150123 (r220039), > g++.old-deja/g++.eh/badalloc1.C > started to FAIL on 32-bit Solaris/SPARC: > > FAIL: g++.old-deja/g++.eh/badalloc1.C -std=c++11 execution test > FAIL: g++.old-deja/g++.eh/badalloc1.C -std=c++14 execution test > FAIL: g++.old-deja/g++.eh/badalloc1.C -std=c++98 execution test > > Program received signal SIGSEGV, Segmentation fault. > [Switching to Thread 1 (LWP 1)] > __cxxabiv1::__cxa_throw (obj=0x2195c <arena+92>, > tinfo=0x73908 <typeinfo for int>, dest=0x0) > at /vol/gcc/src/hg/trunk/local/libstdc++-v3/libsupc++/eh_throw.cc:76 > 76 > __GXX_INIT_PRIMARY_EXCEPTION_CLASS(header->exc.unwindHeader.exception_class); > 1: x/i $pc > => 0xff220314 <__cxxabiv1::__cxa_throw(void*, std::type_info*, void > (*)(void*))+96>: sttw %g2, [ %i0 + -24 ] > (gdb) where > #0 __cxxabiv1::__cxa_throw (obj=0x2195c <arena+92>, > tinfo=0x73908 <typeinfo for int>, dest=0x0) > at /vol/gcc/src/hg/trunk/local/libstdc++-v3/libsupc++/eh_throw.cc:76 > #1 0x00011114 in fn_throw () > at > /vol/gcc/src/hg/trunk/local/gcc/testsuite/g++.old-deja/g++.eh/badalloc1.C:98 > #2 0x000112f8 in main () > at > /vol/gcc/src/hg/trunk/local/gcc/testsuite/g++.old-deja/g++.eh/badalloc1.C:129 > (gdb) p $i0-24 > $3 = 137540 > > The SEGV happens because the sttw target needs to be 8-byte aligned, but is > not. Does malloc return 8-byte aligned memory? Is __alignof__ struct free_entry { std::size_t size; free_entry *next; }; less than 8? Thanks, Richard.