[Bug sanitizer/80269] New: ICE with compile time constant sized array when using address sanitizer
nils at os dot inf.tu-dresden.de
gcc-bugzilla@gcc.gnu.org
Fri Mar 31 09:23:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80269
Bug ID: 80269
Summary: ICE with compile time constant sized array when using
address sanitizer
Product: gcc
Version: 6.3.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: sanitizer
Assignee: unassigned at gcc dot gnu.org
Reporter: nils at os dot inf.tu-dresden.de
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
Target Milestone: ---
Created attachment 41093
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=41093&action=edit
Preprocessed test file
I experience an internal compiler error when assigning to an array with
constant size, given by an expression, and building with C++11 and address
sanitizers. Here is a minimal example:
#include <stdio.h>
#include <algorithm>
const int LIM = std::max(10, 12);
int main() {
char array[LIM] = "";
printf("%s\n", array);
return 0;
}
And compiling with:
g++ -std=c++11 -fsanitize=address test.cc
The result is:
test.cc:10:1: internal compiler error: in tree_to_uhwi, at tree.h:4044
}
^
0xae594f tree_to_uhwi(tree_node const*)
../../gcc/gcc/tree.h:4044
0xae594f asan_add_global
../../gcc/gcc/asan.c:2269
0xae59b2 add_string_csts(constant_descriptor_tree**,
asan_add_string_csts_data*)
../../gcc/gcc/asan.c:2483
0xae5e2a void hash_table<tree_descriptor_hasher,
xcallocator>::traverse_noresize<asan_add_string_csts_data*,
&(add_string_csts(constant_descriptor_tree**,
asan_add_string_csts_data*))>(asan_add_string_csts_data*)
../../gcc/gcc/hash-table.h:950
0xae5e2a void hash_table<tree_descriptor_hasher,
xcallocator>::traverse<asan_add_string_csts_data*,
&(add_string_csts(constant_descriptor_tree**,
asan_add_string_csts_data*))>(asan_add_string_csts_data*)
../../gcc/gcc/hash-table.h:972
0xae5e2a asan_finish_file()
../../gcc/gcc/asan.c:2555
My system is:
$ uname -a
Linux erwin 4.9.5 #1 SMP Mon Jan 23 14:42:51 CET 2017 x86_64 GNU/Linux
$ g++ -v
Using built-in specs.
COLLECT_GCC=/usr/local/gcc/host-x86_64/6/bin/g++
COLLECT_LTO_WRAPPER=/usr/local/gcc/host-x86_64/6/libexec/gcc/x86_64-pc-linux-gnu/6.3.1/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc/configure --prefix=/usr/local/gcc/host-x86_64/6
--enable-shared --enable-__cxa_atexit
--enable-languages=c,c++,fortran,go,java,lto,objc --enable-libmpx
--enable-plugin --enable-default-pie --with-system-zlib
--disable-browser-plugin --enable-objc-gc=auto --enable-multiarch
--with-arch-32=i686 --with-abi=m64 --enable-multilib --with-tune=generic :
(reconfigured) ../gcc/configure --prefix=/usr/local/gcc/host-x86_64/6
--enable-shared --enable-__cxa_atexit
--enable-languages=c,c++,fortran,go,java,lto,objc --enable-libmpx
--enable-plugin --enable-default-pie --with-system-zlib
--disable-browser-plugin --enable-objc-gc=auto --enable-multiarch
--with-arch-32=i686 --with-abi=m64 --enable-multilib --with-tune=generic
Thread model: posix
gcc version 6.3.1 20170326 (GCC)
I've attached the preprocessor output, just in case.
More information about the Gcc-bugs
mailing list