Undefined behavior in several files
When compiling the dune-grid tests with clang's "-fsanitize=undefined", the following errors are reported. In the following I give the output of the mcmgmappertest, many of the other tests show the same five errors.
2: Test command: build/clang-sanitizer/dune-grid/dune/grid/common/test/mcmgmappertest
2: dune-uggrid/dune/uggrid/gm/enrol.cc:262:7: runtime error: index -1 out of bounds for type 'UG::INT [4]'
2: #0 0x7f796ff9526c in UG::D2::CreateFormat(char*, int, int, int (*)(void*, char const*, char*), int (*)(void*, char const*, char*), int (*)(void*, char const*, char*), int (*)(int, void*, char const*, char*), int (*)(int, void*, char const*, char*), int, UG::D2::VectorDescriptor*, int, UG::D2::MatrixDescriptor*, short*, int (*) [4], int, int) dune-uggrid/dune/uggrid/gm/enrol.cc:262:7
2: #1 0x7f796fee36ce in UG::D2::CreateFormatCmd(int, char**) dune-uggrid/dune/uggrid/numerics/formats.cc:1946:15
2: #2 0x7f7972f1b0b2 in Dune::UG_NS<2>::CreateFormatCmd(int, char**) dune-grid/dune/grid/uggrid/ugwrapper.hh:1119:14
2: #3 0x7f7972f19aee in Dune::UGGrid<2>::UGGrid(Dune::Communication<ompi_communicator_t*>) dune-grid/dune/grid/uggrid/uggrid.cc:106:11
2: #4 0x7f7973029ebf in Dune::GridFactory<Dune::UGGrid<2> >::GridFactory() dune-grid/dune/grid/uggrid/uggridfactory.cc:79:15
2: #5 0x629e66 in Dune::ToUniquePtr<Dune::UGGrid<2> > Dune::make2DHybridTestGrid<Dune::UGGrid<2> >() dune-grid/dune/grid/common/test/../../../../doc/grids/gridfactory/hybridtestgrids.hh:25:27
2: #6 0x628475 in main dune-grid/dune/grid/common/test/mcmgmappertest.cc:357:32
2: #7 0x7f796deb90b2 in __libc_start_main /build/glibc-YYA7BZ/glibc-2.31/csu/../csu/libc-start.c:308:16
2: #8 0x57d8ad in _start (build/clang-sanitizer/dune-grid/dune/grid/common/test/mcmgmappertest+0x57d8ad)
2: SUMMARY: UndefinedBehaviorSanitizer: out-of-bounds-index dune-uggrid/dune/uggrid/gm/enrol.cc:262:7
2: dune-uggrid/dune/uggrid/gm/enrol.cc:263:7: runtime error: index -1 out of bounds for type 'UG::INT [4]'
2: #0 0x7f796ff954c5 in UG::D2::CreateFormat(char*, int, int, int (*)(void*, char const*, char*), int (*)(void*, char const*, char*), int (*)(void*, char const*, char*), int (*)(int, void*, char const*, char*), int (*)(int, void*, char const*, char*), int, UG::D2::VectorDescriptor*, int, UG::D2::MatrixDescriptor*, short*, int (*) [4], int, int) dune-uggrid/dune/uggrid/gm/enrol.cc:263:7
2: #1 0x7f796fee36ce in UG::D2::CreateFormatCmd(int, char**) dune-uggrid/dune/uggrid/numerics/formats.cc:1946:15
2: #2 0x7f7972f1b0b2 in Dune::UG_NS<2>::CreateFormatCmd(int, char**) dune-grid/dune/grid/uggrid/ugwrapper.hh:1119:14
2: #3 0x7f7972f19aee in Dune::UGGrid<2>::UGGrid(Dune::Communication<ompi_communicator_t*>) dune-grid/dune/grid/uggrid/uggrid.cc:106:11
2: #4 0x7f7973029ebf in Dune::GridFactory<Dune::UGGrid<2> >::GridFactory() dune-grid/dune/grid/uggrid/uggridfactory.cc:79:15
2: #5 0x629e66 in Dune::ToUniquePtr<Dune::UGGrid<2> > Dune::make2DHybridTestGrid<Dune::UGGrid<2> >() dune-grid/dune/grid/common/test/../../../../doc/grids/gridfactory/hybridtestgrids.hh:25:27
2: #6 0x628475 in main dune-grid/dune/grid/common/test/mcmgmappertest.cc:357:32
2: #7 0x7f796deb90b2 in __libc_start_main /build/glibc-YYA7BZ/glibc-2.31/csu/../csu/libc-start.c:308:16
2: #8 0x57d8ad in _start (build/clang-sanitizer/dune-grid/dune/grid/common/test/mcmgmappertest+0x57d8ad)
SUMMARY: UndefinedBehaviorSanitizer: out-of-bounds-index dune-uggrid/dune/uggrid/gm/enrol.cc:263:7
2: dune-uggrid/dune/uggrid/gm/gm.h:1587:26: runtime error: applying non-zero offset 18446743819571280256 to null pointer
2: #0 0x7f79701daec2 in auto UG::D2::multigrid::FaceHasher::operator()(UG::D2::multigrid::FaceNodes const&) const::'lambda'(auto, auto)::operator()<int, UG::D2::node*>(auto, auto) const dune-uggrid/dune/uggrid/gm/gm.h:1587:26
2: #1 0x7f79701dabd4 in auto std::accumulate<UG::D2::node* const*, int, UG::D2::multigrid::FaceHasher::operator()(UG::D2::multigrid::FaceNodes const&) const::'lambda'(auto, auto)>(auto, auto, auto, UG::D2::multigrid::FaceHasher::operator()(UG::D2::multigrid::FaceNodes const&) const::'lambda'(auto, auto)) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_numeric.h:166:11
2: #2 0x7f79701da973 in UG::D2::multigrid::FaceHasher::operator()(UG::D2::multigrid::FaceNodes const&) const dune-uggrid/dune/uggrid/gm/gm.h:1585:14
2: #3 0x7f79701d8dfb in std::__detail::_Hash_code_base<UG::D2::multigrid::FaceNodes, std::pair<UG::D2::multigrid::FaceNodes const, std::pair<UG::D2::element*, int> >, std::__detail::_Select1st, UG::D2::multigrid::FaceHasher, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, true>::_M_hash_code(UG::D2::multigrid::FaceNodes const&) const /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/hashtable_policy.h:1384:9
2: #4 0x7f79701d816c in std::pair<std::__detail::_Node_iterator<std::pair<UG::D2::multigrid::FaceNodes const, std::pair<UG::D2::element*, int> >, false, true>, bool> std::_Hashtable<UG::D2::multigrid::FaceNodes, std::pair<UG::D2::multigrid::FaceNodes const, std::pair<UG::D2::element*, int> >, std::allocator<std::pair<UG::D2::multigrid::FaceNodes const, std::pair<UG::D2::element*, int> > >, std::__detail::_Select1st, std::equal_to<UG::D2::multigrid::FaceNodes>, UG::D2::multigrid::FaceHasher, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::_M_emplace<UG::D2::multigrid::FaceNodes&, std::pair<UG::D2::element*, int> >(std::integral_constant<bool, true>, UG::D2::multigrid::FaceNodes&, std::pair<UG::D2::element*, int>&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/hashtable.h:1643:21
2: #5 0x7f79701d79f6 in std::pair<std::__detail::_Node_iterator<std::pair<UG::D2::multigrid::FaceNodes const, std::pair<UG::D2::element*, int> >, false, true>, bool> std::_Hashtable<UG::D2::multigrid::FaceNodes, std::pair<UG::D2::multigrid::FaceNodes const, std::pair<UG::D2::element*, int> >, std::allocator<std::pair<UG::D2::multigrid::FaceNodes const, std::pair<UG::D2::element*, int> > >, std::__detail::_Select1st, std::equal_to<UG::D2::multigrid::FaceNodes>, UG::D2::multigrid::FaceHasher, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::emplace<UG::D2::multigrid::FaceNodes&, std::pair<UG::D2::element*, int> >(UG::D2::multigrid::FaceNodes&, std::pair<UG::D2::element*, int>&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/hashtable.h:749:11
2: #6 0x7f79701d29bc in std::pair<std::__detail::_Node_iterator<std::pair<UG::D2::multigrid::FaceNodes const, std::pair<UG::D2::element*, int> >, false, true>, bool> std::unordered_map<UG::D2::multigrid::FaceNodes, std::pair<UG::D2::element*, int>, UG::D2::multigrid::FaceHasher, std::equal_to<UG::D2::multigrid::FaceNodes>, std::allocator<std::pair<UG::D2::multigrid::FaceNodes const, std::pair<UG::D2::element*, int> > > >::emplace<UG::D2::multigrid::FaceNodes&, std::pair<UG::D2::element*, int> >(UG::D2::multigrid::FaceNodes&, std::pair<UG::D2::element*, int>&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unordered_map.h:388:16
2: #7 0x7f79701406a0 in NeighborSearch_O_n(int, UG::D2::element*, UG::D2::node**, UG::D2::multigrid*, int*, UG::D2::element**) dune-uggrid/dune/uggrid/gm/ugm.cc:4599:34
2: #8 0x7f797013c04d in UG::D2::InsertElement(UG::D2::grid*, int, UG::D2::node**, UG::D2::element**, int*, int*) dune-uggrid/dune/uggrid/gm/ugm.cc:4861:5
2: #9 0x7f7973047458 in Dune::GridFactory<Dune::UGGrid<2> >::createGrid() dune-grid/dune/grid/uggrid/uggridfactory.cc:551:9
2: #10 0x62afe2 in Dune::ToUniquePtr<Dune::UGGrid<2> > Dune::make2DHybridTestGrid<Dune::UGGrid<2> >() dune-grid/dune/grid/common/test/../../../../doc/grids/gridfactory/hybridtestgrids.hh:87:20
2: #11 0x628475 in main dune-grid/dune/grid/common/test/mcmgmappertest.cc:357:32
2: #12 0x7f796deb90b2 in __libc_start_main /build/glibc-YYA7BZ/glibc-2.31/csu/../csu/libc-start.c:308:16
2: #13 0x57d8ad in _start (build/clang-sanitizer/dune-grid/dune/grid/common/test/mcmgmappertest+0x57d8ad)
2:
2: SUMMARY: UndefinedBehaviorSanitizer: nullptr-with-nonzero-offset dune-uggrid/dune/uggrid/gm/gm.h:1587:26
2: dune-uggrid/dune/uggrid/gm/ugm.cc:3735:5: runtime error: left shift of 17 by 28 places cannot be represented in type 'UG::INT' (aka 'int')
2: #0 0x7f79713f60d2 in UG::D3::DisposeElement(UG::D3::grid*, UG::D3::element*, int) dune-uggrid/dune/uggrid/gm/ugm.cc:3735:5
2: #1 0x7f79716b5c08 in UnrefineElement(UG::D3::grid*, UG::D3::element*) dune-uggrid/dune/uggrid/gm/refine.cc:3401:9
2: #2 0x7f79716af222 in AdaptLocalGrid(UG::D3::grid*, int*) dune-uggrid/dune/uggrid/gm/refine.cc:5747:11
2: #3 0x7f797164ef18 in AdaptGrid(UG::D3::grid*, int, int, int, int*) dune-uggrid/dune/uggrid/gm/refine.cc:5892:9
2: #4 0x7f7971640f3d in UG::D3::AdaptMultiGrid(UG::D3::multigrid*, int, int, int) dune-uggrid/dune/uggrid/gm/refine.cc:6619:11
2: #5 0x7f7972f44f8c in Dune::UGGrid<3>::adapt() dune-grid/dune/grid/uggrid/uggrid.cc:309:12
2: #6 0x7f7972f5842f in Dune::UGGrid<3>::globalRefine(int) dune-grid/dune/grid/uggrid/uggrid.cc:346:5
2: #7 0x6289e6 in main dune-grid/dune/grid/common/test/mcmgmappertest.cc:375:11
2: #8 0x7f796deb90b2 in __libc_start_main /build/glibc-YYA7BZ/glibc-2.31/csu/../csu/libc-start.c:308:16
2: #9 0x57d8ad in _start (build/clang-sanitizer/dune-grid/dune/grid/common/test/mcmgmappertest+0x57d8ad)
2:
2: SUMMARY: UndefinedBehaviorSanitizer: invalid-shift-base dune-uggrid/dune/uggrid/gm/ugm.cc:3735:5
2: dune-uggrid/dune/uggrid/gm/ugm.cc:3741:5: runtime error: left shift of 18 by 28 places cannot be represented in type 'UG::INT' (aka 'int')
2: #0 0x7f79713f6aeb in UG::D3::DisposeElement(UG::D3::grid*, UG::D3::element*, int) dune-uggrid/dune/uggrid/gm/ugm.cc:3741:5
2: #1 0x7f79716b5c08 in UnrefineElement(UG::D3::grid*, UG::D3::element*) dune-uggrid/dune/uggrid/gm/refine.cc:3401:9
2: #2 0x7f79716af222 in AdaptLocalGrid(UG::D3::grid*, int*) dune-uggrid/dune/uggrid/gm/refine.cc:5747:11
2: #3 0x7f797164ef18 in AdaptGrid(UG::D3::grid*, int, int, int, int*) dune-uggrid/dune/uggrid/gm/refine.cc:5892:9
2: #4 0x7f7971640f3d in UG::D3::AdaptMultiGrid(UG::D3::multigrid*, int, int, int) dune-uggrid/dune/uggrid/gm/refine.cc:6619:11
2: #5 0x7f7972f44f8c in Dune::UGGrid<3>::adapt() dune-grid/dune/grid/uggrid/uggrid.cc:309:12
2: #6 0x7f7972f5842f in Dune::UGGrid<3>::globalRefine(int) dune-grid/dune/grid/uggrid/uggrid.cc:346:5
2: #7 0x6289e6 in main dune-grid/dune/grid/common/test/mcmgmappertest.cc:375:11
2: #8 0x7f796deb90b2 in __libc_start_main /build/glibc-YYA7BZ/glibc-2.31/csu/../csu/libc-start.c:308:16
2: #9 0x57d8ad in _start (build/clang-sanitizer/dune-grid/dune/grid/common/test/mcmgmappertest+0x57d8ad)
2:
2: SUMMARY: UndefinedBehaviorSanitizer: invalid-shift-base dune-uggrid/dune/uggrid/gm/ugm.cc:3741:5 in