JoltPhysics icon indicating copy to clipboard operation
JoltPhysics copied to clipboard

Could not build release configuration using g++ on Linux

Open devildevilson opened this issue 3 years ago • 2 comments
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

devildevilson avatar Jul 26 '22 14:07 devildevilson

Compiling without -Werror seems to be ok. All unit tests passed. Performance test seems ok too.

devildevilson avatar Jul 26 '22 14:07 devildevilson

Thanks for the report! I won't be near a computer in the coming weeks so I'll fix it later.

jrouwe avatar Jul 27 '22 07:07 jrouwe

Should be fixed in #213

jrouwe avatar Aug 19 '22 15:08 jrouwe