JoltPhysics
JoltPhysics copied to clipboard
Could not build release configuration using g++ on Linux
trafficstars
Created cmake files using cmake_linux_clang_gcc.sh Release g++. Start building and getting this error:
[ 21%] Building CXX object CMakeFiles/Jolt.dir/...../git/cpp/JoltPhysics/Jolt/Physics/Character/CharacterVirtual.cpp.o
In file included from ~/git/cpp/JoltPhysics/Build/../Jolt/ObjectStream/ObjectStream.h:7,
from ~/git/cpp/JoltPhysics/Build/../Jolt/ObjectStream/ObjectStreamIn.h:6,
from ~/git/cpp/JoltPhysics/Build/../Jolt/ObjectStream/SerializableAttribute.h:6,
from ~/git/cpp/JoltPhysics/Build/../Jolt/ObjectStream/SerializableObject.h:6,
from ~/git/cpp/JoltPhysics/Build/../Jolt/Physics/Body/MassProperties.h:6,
from ~/git/cpp/JoltPhysics/Build/../Jolt/Physics/Collision/Shape/Shape.h:6,
from ~/git/cpp/JoltPhysics/Build/../Jolt/Physics/Body/BodyCreationSettings.h:6,
from ~/git/cpp/JoltPhysics/Jolt/Physics/Body/BodyCreationSettings.cpp:6:
In member function ‘void JPH::Ref<T>::Release() [with T = JPH::Shape]’,
inlined from ‘JPH::Ref<T>::~Ref() [with T = JPH::Shape]’ at ~/git/cpp/JoltPhysics/Build/../Jolt/Core/Reference.h:98:39,
inlined from ‘void JPH::Result<Type>::Clear() [with Type = JPH::Ref<JPH::Shape>]’ at ~/git/cpp/JoltPhysics/Build/../Jolt/Core/Result.h:115:17,
inlined from ‘void JPH::Result<Type>::Set(const Type&&) [with Type = JPH::Ref<JPH::Shape>]’ at ~/git/cpp/JoltPhysics/Build/../Jolt/Core/Result.h:142:48,
inlined from ‘JPH::Shape::ShapeResult JPH::BodyCreationSettings::ConvertShapeSettings()’ at ~/git/cpp/JoltPhysics/Jolt/Physics/Body/BodyCreationSettings.cpp:89:13:
~/git/cpp/JoltPhysics/Build/../Jolt/Core/Reference.h:132:143: error: ‘*(JPH::Ref<JPH::Shape>*)((char*)&result + offsetof(JPH::ShapeResult, JPH::Result<JPH::Ref<JPH::Shape> >::<unnamed>)).JPH::Ref<JPH::Shape>::mPtr’ may be used uninitialized [-Werror=maybe-uninitialized]
132 | inline void Release() { if (mPtr != nullptr) mPtr->Release(); }
| ^~~~
~/git/cpp/JoltPhysics/Jolt/Physics/Body/BodyCreationSettings.cpp: In member function ‘JPH::Shape::ShapeResult JPH::BodyCreationSettings::ConvertShapeSettings()’:
~/git/cpp/JoltPhysics/Jolt/Physics/Body/BodyCreationSettings.cpp:88:36: note: ‘result’ declared here
88 | Shape::ShapeResult result;
| ^~~~~~
In file included from /usr/include/c++/12.1.0/string:53,
from /usr/include/c++/12.1.0/bits/locale_classes.h:40,
from /usr/include/c++/12.1.0/bits/ios_base.h:41,
from /usr/include/c++/12.1.0/ios:42,
from /usr/include/c++/12.1.0/istream:38,
from /usr/include/c++/12.1.0/sstream:38,
from ~/git/cpp/JoltPhysics/Build/../Jolt/Core/Core.h:217,
from ~/git/cpp/JoltPhysics/Build/../Jolt/Jolt.h:7,
from ~/git/cpp/JoltPhysics/Jolt/Physics/Body/BodyCreationSettings.cpp:4:
In member function ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::pointer std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::_M_data() const [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’,
inlined from ‘bool std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::_M_is_local() const [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12.1.0/bits/basic_string.h:275:23,
inlined from ‘void std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::_M_dispose() [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12.1.0/bits/basic_string.h:286:18,
inlined from ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::~basic_string() [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12.1.0/bits/basic_string.h:795:19,
inlined from ‘void JPH::Result<Type>::Clear() [with Type = JPH::Ref<JPH::Shape>]’ at ~/git/cpp/JoltPhysics/Build/../Jolt/Core/Result.h:119:18,
inlined from ‘void JPH::Result<Type>::Set(const Type&&) [with Type = JPH::Ref<JPH::Shape>]’ at ~/git/cpp/JoltPhysics/Build/../Jolt/Core/Result.h:142:48,
inlined from ‘JPH::Shape::ShapeResult JPH::BodyCreationSettings::ConvertShapeSettings()’ at ~/git/cpp/JoltPhysics/Jolt/Physics/Body/BodyCreationSettings.cpp:89:13:
/usr/include/c++/12.1.0/bits/basic_string.h:235:28: error: ‘*(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)((char*)&result + offsetof(JPH::ShapeResult, JPH::Result<JPH::Ref<JPH::Shape> >::<unnamed>)).std::__cxx11::basic_string<char>::_M_dataplus.std::__cxx11::basic_string<char>::_Alloc_hider::_M_p’ may be used uninitialized [-Werror=maybe-uninitialized]
235 | { return _M_dataplus._M_p; }
| ^~~~
~/git/cpp/JoltPhysics/Jolt/Physics/Body/BodyCreationSettings.cpp: In member function ‘JPH::Shape::ShapeResult JPH::BodyCreationSettings::ConvertShapeSettings()’:
~/git/cpp/JoltPhysics/Jolt/Physics/Body/BodyCreationSettings.cpp:88:36: note: ‘result’ declared here
88 | Shape::ShapeResult result;
| ^~~~~~
In member function ‘void std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::_M_dispose() [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’,
inlined from ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::~basic_string() [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12.1.0/bits/basic_string.h:795:19,
inlined from ‘void JPH::Result<Type>::Clear() [with Type = JPH::Ref<JPH::Shape>]’ at ~/git/cpp/JoltPhysics/Build/../Jolt/Core/Result.h:119:18,
inlined from ‘void JPH::Result<Type>::Set(const Type&&) [with Type = JPH::Ref<JPH::Shape>]’ at ~/git/cpp/JoltPhysics/Build/../Jolt/Core/Result.h:142:48,
inlined from ‘JPH::Shape::ShapeResult JPH::BodyCreationSettings::ConvertShapeSettings()’ at ~/git/cpp/JoltPhysics/Jolt/Physics/Body/BodyCreationSettings.cpp:89:13:
/usr/include/c++/12.1.0/bits/basic_string.h:287:21: error: ‘*(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)((char*)&result + offsetof(JPH::ShapeResult, JPH::Result<JPH::Ref<JPH::Shape> >::<unnamed>)).std::__cxx11::basic_string<char>::<anonymous>.std::__cxx11::basic_string<char>::<unnamed union>::_M_allocated_capacity’ may be used uninitialized [-Werror=maybe-uninitialized]
287 | _M_destroy(_M_allocated_capacity);
| ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
~/git/cpp/JoltPhysics/Jolt/Physics/Body/BodyCreationSettings.cpp: In member function ‘JPH::Shape::ShapeResult JPH::BodyCreationSettings::ConvertShapeSettings()’:
~/git/cpp/JoltPhysics/Jolt/Physics/Body/BodyCreationSettings.cpp:88:36: note: ‘result’ declared here
88 | Shape::ShapeResult result;
| ^~~~~~
g++ version 12.1.0 (GCC), arch: x86_64-pc-linux-gnu
Probably just overprotection from -Werror setting. But might be valuable
Compiling without -Werror seems to be ok. All unit tests passed. Performance test seems ok too.
Thanks for the report! I won't be near a computer in the coming weeks so I'll fix it later.
Should be fixed in #213