Build fails with GCC 16 and -march=native: -Werror=array-bounds in DynamicWorld::soundOclusion()
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 68/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- cmake, cpp
- Ambito
- build-system
Direzione di ricerca
Inizia in common/physics/dynamicworld.cpp, in corrispondenza di DynamicWorld::soundOclusion() attorno alla chiamata a std::sort segnalata vicino alla riga 846; esamina come vengono raccolti e ordinati i dati di CallBack. Riproduci il problema con la configurazione CMake per GCC 16 e -march=native indicata nel report, quindi esegui di nuovo la compilazione per confermare che l’errore di limiti dell’array non impedisce più la compilazione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Building current master with GCC 16 and -march=native fails in dynamicworld.cpp:
[ 94%] Building CXX object CMakeFiles/OpenGothic.dir/common/world/fplock.cpp.o
[ 94%] Building CXX object CMakeFiles/OpenGothic.dir/common/world/objects/globalfx.cpp.o
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/16/include/g++-v16/bits/stl_algo.h:61,
from /usr/lib/gcc/x86_64-pc-linux-gnu/16/include/g++-v16/algorithm:63,
from /home/green/tmp/OpenGothic/lib/Tempest/Engine/include/../utility/utility.h:5,
from /home/green/tmp/OpenGothic/lib/Tempest/Engine/include/Tempest/Vec:1,
from /home/green/tmp/OpenGothic/lib/Tempest/Engine/include/../math/matrix.h:3,
from /home/green/tmp/OpenGothic/lib/Tempest/Engine/include/Tempest/Matrix4x4:1,
from /home/green/tmp/OpenGothic/common/physics/dynamicworld.h:5,
from /home/green/tmp/OpenGothic/common/physics/dynamicworld.cpp:1:
In function ‘constexpr void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = float*; _Distance = long int; _Tp = float; _Compare = less<void>]’,
inlined from ‘constexpr void std::__make_heap(_RandomAccessIterator, _RandomAccessIterator, _Compare&) [with _RandomAccessIterator = float*; _Compare = less<void>]’ at /usr/lib/gcc/x86_64-pc-linux-gnu/16/include/g++-v16/bits/stl_heap.h:357:22,
inlined from ‘constexpr void std::__heap_select(_RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = float*; _Compare = less<void>]’ at /usr/lib/gcc/x86_64-pc-linux-gnu/16/include/g++-v16/bits/stl_algo.h:1593:23,
inlined from ‘constexpr void std::__partial_sort(_RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = float*; _Compare = less<void>]’ at /usr/lib/gcc/x86_64-pc-linux-gnu/16/include/g++-v16/bits/stl_algo.h:1876:25,
inlined from ‘constexpr void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = float*; _Size = long int; _Compare = less<void>]’ at /usr/lib/gcc/x86_64-pc-linux-gnu/16/include/g++-v16/bits/stl_algo.h:1892:27,
inlined from ‘constexpr void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = float*; _Compare = less<void>]’ at /usr/lib/gcc/x86_64-pc-linux-gnu/16/include/g++-v16/bits/stl_algo.h:1913:25,
inlined from ‘constexpr void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = float*; _Compare = less<void>]’ at /usr/lib/gcc/x86_64-pc-linux-gnu/16/include/g++-v16/bits/stl_algo.h:1908:5,
inlined from ‘constexpr void std::sort(_RAIter, _RAIter) [with _RAIter = float*]’ at /usr/lib/gcc/x86_64-pc-linux-gnu/16/include/g++-v16/bits/stl_algo.h:4817:18,
inlined from ‘float DynamicWorld::soundOclusion(const Tempest::Vec3&, const Tempest::Vec3&) const’ at /home/green/tmp/OpenGothic/common/physics/dynamicworld.cpp:846:12:
/usr/lib/gcc/x86_64-pc-linux-gnu/16/include/g++-v16/bits/stl_heap.h:246:36: error: array subscript 68 is outside array bounds of ‘DynamicWorld::soundOclusion(const Tempest::Vec3&, const Tempest::Vec3&) const::CallBack [1]’ [-Werror=array-bounds=]
246 | *(__first + __holeIndex) = _GLIBCXX_MOVE(*(__first
| ^
/home/green/tmp/OpenGothic/common/physics/dynamicworld.cpp: In member function ‘float DynamicWorld::soundOclusion(const Tempest::Vec3&, const Tempest::Vec3&) const’:
/home/green/tmp/OpenGothic/common/physics/dynamicworld.cpp:834:12: note: at offset 272 into object ‘callback’ of size 272
834 | CallBack callback(CollisionWorld::toMeters(from), CollisionWorld::toMeters(to));
| ^~~~~~~~
[ 94%] Building CXX object CMakeFiles/OpenGothic.dir/common/world/objects/interactive.cpp.o
[ 94%] Building CXX object CMakeFiles/OpenGothic.dir/common/world/objects/item.cpp.o
[ 94%] Building CXX object CMakeFiles/OpenGothic.dir/common/world/objects/itemtorchburning.cpp.o
[ 94%] Building CXX object CMakeFiles/OpenGothic.dir/common/world/objects/npc.cpp.o
[ 95%] Building CXX object CMakeFiles/OpenGothic.dir/common/world/objects/pfxemitter.cpp.o
[ 95%] Building CXX object CMakeFiles/OpenGothic.dir/common/world/objects/sound.cpp.o
[ 95%] Building CXX object CMakeFiles/OpenGothic.dir/common/world/objects/staticobj.cpp.o
cc1plus: all warnings being treated as errors
make[2]: *** [CMakeFiles/OpenGothic.dir/build.make:1325: CMakeFiles/OpenGothic.dir/common/physics/dynamicworld.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/Makefile2:649: CMakeFiles/OpenGothic.dir/all] Error 2
make: *** [Makefile:136: all] Error 2
make: Leaving directory '/home/green/tmp/OpenGothic/build'
Steps to reproduce:
cmake -B build -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_CXX_FLAGS="-march=native"
make -C build -j $(nproc)
Without -march=native it builds fine.
Why -march=native: I'm on Gentoo, everything is built from source with -march=native, which is the usual choice when compiling for your own machine.
$ gcc --version | head -1
gcc (Gentoo 16.2.1_p20260926 p1) 16.2.1 20260926
$ gcc -march=native -Q --help=target | grep -E '^\s+-march=|^\s+-mtune='
-march= alderlake
$ grep -m1 'model name' /proc/cpuinfo
model name : Intel(R) Core(TM) Ultra 7 155H
OS: Gentoo Linux
- Lingua principale
- C++
- Stelle
- 1.6k
- Fork
- 138
- Merge medio
- 1g 22h
- PR unite (30g)
- 14
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Try/OpenGothic
-
Player movement differs from vanilla (stopping, landing, strafe)Forse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
Try/OpenGothic#1033 ·
I maintainer di solito rispondono entro 1 giorno
-
Out of box experienceAperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
Try/OpenGothic#992 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Skeletons and goblins do too little damageForse già presa @kroplabeskidu l’ha presa 1 giorno fa. Apertabug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
Try/OpenGothic#990 ·
I maintainer di solito rispondono entro 1 giorno
-
Jumping as a dragon snapper deals fall damageForse già presa @kroplabeskidu l’ha presa 1 giorno fa. Apertabug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
Try/OpenGothic#986 ·
I maintainer di solito rispondono entro 1 giorno
-
Game crash on deathApertabug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 42/100
Try/OpenGothic#984 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di Try/OpenGothic
Issue simili
-
Windows ARM memory-leakApertabug docs performance
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
I maintainer di solito rispondono entro 3 giorni
-
good first issue help wanted
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
-
good first issue neural P2
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
-
bug goto-symex
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
I maintainer di solito rispondono entro 1 giorno
-
tech-debt
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
prestonbrown/helixscreen#1885 ·
I maintainer di solito rispondono entro 1 giorno