http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60745
Bug ID: 60745
Summary: Many ICEs running libstdc++ testsuite with ubsan,
maybe due to PCH
Product: gcc
Version: 4.9.0
Status: UNCONFIRMED
Keywords: ice-on-valid-code
Severity: normal
Priority: P3
Component: sanitizer
Assignee: unassigned at gcc dot gnu.org
Reporter: redi at gcc dot gnu.org
CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org,
jakub at gcc dot gnu.org, kcc at gcc dot gnu.org,
mpolacek at gcc dot gnu.org
In the $target/libstdc++-v3 build dir:
LD_LIBRARY_PATH=$PWD/../libsanitizer/ubsan/.libs \
make check \
RUNTESTFLAGS="conformance.exp=20_util/allocator/33807.cc \
--target_board=unix/-fsanitize=undefined"
that test (and many others) FAILs with an ICE:
In file included from
/home/jwakely/build/x86_64-unknown-linux-gnu/libstdc++-v3/include/list:64:0,
from
/home/jwakely/src/gcc/libstdc++-v3/include/precompiled/stdc++.h:78:
/home/jwakely/build/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/list.tcc:
In instantiation of 'std::list<_Tp, _Alloc>::iterator std::list<_Tp,
_Alloc>::erase(std::list<_Tp, _Alloc>::iterator) [with _Tp = foo; _Alloc =
std::allocator<foo>; std::list<_Tp, _Alloc>::iterator =
std::_List_iterator<foo>]':
/home/jwakely/build/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/stl_list.h:1270:27:
required from 'std::list<_Tp, _Alloc>::iterator std::list<_Tp,
_Alloc>::erase(std::list<_Tp, _Alloc>::iterator, std::list<_Tp,
_Alloc>::iterator) [with _Tp = foo; _Alloc = std::allocator<foo>;
std::list<_Tp, _Alloc>::iterator = std::_List_iterator<foo>]'
/home/jwakely/build/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/list.tcc:239:29:
required from 'std::list<_Tp, _Alloc>& std::list<_Tp,
_Alloc>::operator=(const std::list<_Tp, _Alloc>&) [with _Tp = foo; _Alloc =
std::allocator<foo>]'
/home/jwakely/src/gcc/libstdc++-v3/testsuite/20_util/allocator/33807.cc:31:6:
required from here
/home/jwakely/build/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/list.tcc:156:5:
internal compiler error: Segmentation fault
}
^
0xb62985 crash_signal
/home/jwakely/src/gcc/gcc/toplev.c:337
0x7d7b93 contains_struct_check
/home/jwakely/src/gcc/gcc/tree.h:2826
0x7d7b93 build_call_expr_loc_array(unsigned int, tree_node*, int, tree_node**)
/home/jwakely/src/gcc/gcc/builtins.c:11263
0x7d9796 build_call_expr_loc(unsigned int, tree_node*, int, ...)
/home/jwakely/src/gcc/gcc/builtins.c:11296
0x7b1416 ubsan_instrument_return(unsigned int)
/home/jwakely/src/gcc/gcc/c-family/c-ubsan.c:191
0x730376 cp_ubsan_maybe_instrument_return
/home/jwakely/src/gcc/gcc/cp/cp-gimplify.c:1256
0x730376 cp_genericize(tree_node*)
/home/jwakely/src/gcc/gcc/cp/cp-gimplify.c:1324
0x60f790 cp_write_global_declarations()
/home/jwakely/src/gcc/gcc/cp/decl2.c:4312
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.
The source of that test is:
// { dg-do compile }
// Copyright (C) 2007-2014 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
#include <list>
// libstdc++/33807
template <class T>
bool operator != (const T& x, const T& y) { return !(x == y); }
struct foo { };
void fnx()
{
std::list<foo> l1, l2;
l1 = l2;
}
but compiling the same file with an installed compiler, or compiling
preprocessed source, doesn't fail.
Running the command used by the testsuite doesn't crash if I remove the
"-include stdc++.h" so it may be related to PCH.
GDB shows:
Program received signal SIGSEGV, Segmentation fault.
build_call_expr_loc_array (loc=11088345, fndecl=0x0, n=1,
argarray=0x7fffffffd2a0) at /home/jwakely/src/gcc/gcc/gcc/builtins.c:11263
11263 tree fntype = TREE_TYPE (fndecl);
(gdb) p fndecl
$1 = (tree_node *) 0x0
(gdb) bt
#0 build_call_expr_loc_array (loc=11088345, fndecl=0x0, n=1,
argarray=0x7fffffffd2a0) at /home/jwakely/src/gcc/gcc/gcc/builtins.c:11263
#1 0x00000000007ebdce in build_call_expr_loc (loc=<optimized out>,
fndecl=fndecl@entry=0x0, n=n@entry=1) at
/home/jwakely/src/gcc/gcc/gcc/builtins.c:11296
#2 0x00000000007bf747 in ubsan_instrument_return (loc=11088345) at
/home/jwakely/src/gcc/gcc/gcc/c-family/c-ubsan.c:191
#3 0x0000000000743f25 in cp_ubsan_maybe_instrument_return
(fndecl=0x7ffff1a0f500) at /home/jwakely/src/gcc/gcc/gcc/cp/cp-gimplify.c:1256
#4 cp_genericize (fndecl=fndecl@entry=0x7ffff1a0f500) at
/home/jwakely/src/gcc/gcc/gcc/cp/cp-gimplify.c:1324
#5 0x0000000000578a90 in finish_function (flags=flags@entry=0) at
/home/jwakely/src/gcc/gcc/gcc/cp/decl.c:14023
#6 0x00000000005b1ba2 in instantiate_decl (d=<optimized out>,
d@entry=0x7ffff1a0f500, defer_ok=<optimized out>, defer_ok@entry=0,
expl_inst_class_mem_p=expl_inst_class_mem_p@entry=false) at
/home/jwakely/src/gcc/gcc/gcc/cp/pt.c:19923
#7 0x00000000005f1cf7 in instantiate_pending_templates
(retries=retries@entry=0) at /home/jwakely/src/gcc/gcc/gcc/cp/pt.c:20017
#8 0x000000000062dbf7 in cp_write_global_declarations () at
/home/jwakely/src/gcc/gcc/gcc/cp/decl2.c:4312
#9 0x0000000000b581f5 in compile_file () at
/home/jwakely/src/gcc/gcc/gcc/toplev.c:562
#10 0x0000000000b5a0b8 in do_compile () at
/home/jwakely/src/gcc/gcc/gcc/toplev.c:1914
#11 toplev_main (argc=32, argv=0x7fffffffd708) at
/home/jwakely/src/gcc/gcc/gcc/toplev.c:1990
#12 0x0000003eba021d65 in __libc_start_main (main=0x53fc50 <main(int, char**)>,
argc=32, argv=0x7fffffffd708, init=<optimized out>, fini=<optimized out>,
rtld_fini=<optimized out>, stack_end=0x7fffffffd6f8) at libc-start.c:285
#13 0x000000000053fcd1 in _start ()