[Bug c++/103832] New: vectorized code segfaults due to misaligned access

joakim.rosqvist at gmail dot com gcc-bugzilla@gcc.gnu.org
Sun Dec 26 11:58:40 GMT 2021


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103832

            Bug ID: 103832
           Summary: vectorized code segfaults due to misaligned access
           Product: gcc
           Version: 11.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: joakim.rosqvist at gmail dot com
  Target Milestone: ---

Created attachment 52059
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=52059&action=edit
preprocessed version of source file optim.cc

The attached code, which adds up values in an array, crashes due to a
misaligned memory access. The array is properly aligned at index 0, but the sum
starts at index 1 and so I expected the optimizer to either not vectorize the
loop or to add up the first few elements separately and vectorize the sum from
the first "aligned" index. 

>g++ -v
Using built-in specs.
COLLECT_GCC=g++orig
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.2.0-7ubuntu2'
--with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs
--enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr
--with-gcc-major-version-only --program-suffix=-11
--program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id
--libexecdir=/usr/lib --without-included-gettext --enable-threads=posix
--libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu
--enable-libstdcxx-debug --enable-libstdcxx-time=yes
--with-default-libstdcxx-abi=new --enable-gnu-unique-object
--disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib
--enable-libphobos-checking=release --with-target-system-zlib=auto
--enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet
--with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32
--enable-multilib --with-tune=generic
--enable-offload-targets=nvptx-none=/build/gcc-11-ZPT0kp/gcc-11-11.2.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-11-ZPT0kp/gcc-11-11.2.0/debian/tmp-gcn/usr
--without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu
--host=x86_64-linux-gnu --target=x86_64-linux-gnu
--with-build-config=bootstrap-lto-lean --enable-link-serialization=2
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.2.0 (Ubuntu 11.2.0-7ubuntu2)

System used is Ubuntu 21.10 on an AMD Ryzen 3700X cpu.

Commandline used to compile, which gives no output:
>g++ -O -Wall -Wextra -ftree-loop-vectorize -fno-strict-aliasing -fwrapv -fno-aggressive-loop-optimizations -fsanitize=undefined -save-temps -o optim optim.cc

Commandline to trigger the issue with output
>./optim
optim.cc:12:15: runtime error: load of misaligned address 0x564849975f04 for
type 'aligned_float', which requires 64 byte alignment
0x564849975f04: note: pointer points here
  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00
00 00 00 00 00 00 00
              ^


More information about the Gcc-bugs mailing list