ARM-software / armnn

Arm NN ML Software. The code here is a read-only mirror of https://review.mlplatform.org/admin/repos/ml/armnn
https://developer.arm.com/products/processors/machine-learning/arm-nn
MIT License
1.14k stars 307 forks source link

Build Issues -Werrors on armbian 24 #764

Open ChthonicOne opened 2 months ago

ChthonicOne commented 2 months ago

I'm trying to build your software on Armbian 24.2.1 with the following versions: gcc (Debian 12.2.0-14) 12.2.0 cmake version 3.29.0 Armbian 24.2.1 bookworm

I am using the following build command to build it: ./build-armnn.sh --target-arch=aarch64 --all --neon-backend --cl-backend

It is encountering 2 warnings that it is treating as errors, mismatched-new-delete and maybe-uninitialized, despite the fact that I have edited the script line 34 "extra_cxx_flags" with -Wno-error=mismatched-new-delete -Wno-error=maybe-uninitialized". The first is happening in line 112 and 113 in armnn/delegate/opaque/src/armnn_delegate.cpp

The second is happening in an external dependency armnn/third-party/ghc/filesystem.hpp line 1484. However, this is just an overlay for c++17's filesystem library, and this is only needed as you are compiling with c++14 standard.

Following is the raw output with the errors:

In file included from /home/rock/temp/armnn/build-tool/scripts/source/armnn/include/armnnUtils/Filesystem.hpp:14,
                 from /home/rock/temp/armnn/build-tool/scripts/source/armnn/src/backends/backendsCommon/test/DynamicBackendTests.hpp:14,
                 from /home/rock/temp/armnn/build-tool/scripts/source/armnn/src/backends/backendsCommon/test/DynamicBackendTests.cpp:6:
In static member function ‘static void ghc::filesystem::path::postprocess_path_with_format(impl_string_type&, format)’,
    inlined from ‘ghc::filesystem::path::path(string_type&&, format)’ at /home/rock/temp/armnn/build-tool/scripts/source/armnn/third-party/ghc/filesystem.hpp:2033:33,
    inlined from ‘ghc::filesystem::path& ghc::filesystem::path::append(const Source&) [with Source = std::__cxx11::basic_string<char>]’ at /home/rock/temp/armnn/build-tool/scripts/source/armnn/third-party/ghc/filesystem.hpp:2187:29,
    inlined from ‘std::string GetTestSubDirectory(const std::string&, const std::string&)’ at /home/rock/temp/armnn/build-tool/scripts/source/armnn/src/backends/backendsCommon/test/DynamicBackendTests.hpp:180:72:
/home/rock/temp/armnn/build-tool/scripts/source/armnn/third-party/ghc/filesystem.hpp:1484:32: error: ‘*(__gnu_cxx::__alloc_traits<std::allocator<char>, char>::value_type*)((char*)&<unnamed> + offsetof(ghc::filesystem::path, ghc::filesystem::path::_path.std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::<unnamed>))’ may be used uninitialized [-Werror=maybe-uninitialized]
 1484 |     if (p.length() > 2 && p[0] == '/' && p[1] == '/' && p[2] != '/') {
/home/rock/temp/armnn/build-tool/scripts/source/armnn/third-party/ghc/filesystem.hpp: In function ‘std::string GetTestSubDirectory(const std::string&, const std::string&)’:
/home/rock/temp/armnn/build-tool/scripts/source/armnn/third-party/ghc/filesystem.hpp:2187:29: note: ‘<anonymous>’ declared here
 2187 |     return this->operator/=(path(detail::toUtf8(source)));
      |                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In static member function ‘static void ghc::filesystem::path::postprocess_path_with_format(impl_string_type&, format)’,
    inlined from ‘ghc::filesystem::path::path(string_type&&, format)’ at /home/rock/temp/armnn/build-tool/scripts/source/armnn/third-party/ghc/filesystem.hpp:2033:33,
    inlined from ‘ghc::filesystem::path& ghc::filesystem::path::append(const Source&) [with Source = std::__cxx11::basic_string<char>]’ at /home/rock/temp/armnn/build-tool/scripts/source/armnn/third-party/ghc/filesystem.hpp:2187:29,
    inlined from ‘std::string GetTestSubDirectory(const std::string&)’ at /home/rock/temp/armnn/build-tool/scripts/source/armnn/src/backends/backendsCommon/test/DynamicBackendTests.hpp:169:72:
/home/rock/temp/armnn/build-tool/scripts/source/armnn/third-party/ghc/filesystem.hpp:1484:32: error: ‘*(__gnu_cxx::__alloc_traits<std::allocator<char>, char>::value_type*)((char*)&<unnamed> + offsetof(ghc::filesystem::path, ghc::filesystem::path::_path.std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::<unnamed>))’ may be used uninitialized [-Werror=maybe-uninitialized]
 1484 |     if (p.length() > 2 && p[0] == '/' && p[1] == '/' && p[2] != '/') {
/home/rock/temp/armnn/build-tool/scripts/source/armnn/third-party/ghc/filesystem.hpp: In function ‘std::string GetTestSubDirectory(const std::string&)’:
/home/rock/temp/armnn/build-tool/scripts/source/armnn/third-party/ghc/filesystem.hpp:2187:29: note: ‘<anonymous>’ declared here
 2187 |     return this->operator/=(path(detail::toUtf8(source)));
      |                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
[ 29%] Building CXX object src/backends/backendsCommon/test/CMakeFiles/armnnBackendsCommonUnitTests.dir/layerTests/ConvertFp16ToFp32TestImpl.cpp.o
[ 29%] Building CXX object src/backends/backendsCommon/test/CMakeFiles/armnnBackendsCommonUnitTests.dir/layerTests/ConvertFp32ToFp16TestImpl.cpp.o
cc1plus: all warnings being treated as errors
make[2]: *** [src/backends/backendsCommon/test/CMakeFiles/armnnBackendsCommonUnitTests.dir/build.make:146: src/backends/backendsCommon/test/CMakeFiles/armnnBackendsCommonUnitTests.dir/DynamicBackendTests.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
[ 31%] Built target pipeCommon
[ 34%] Built target pipeClient
[ 34%] Built target armnnBasePipeServer
[ 34%] Built target timelineDecoder
[ 34%] Linking CXX shared library libarmnn.so
[ 48%] Built target armnn
make[1]: *** [CMakeFiles/Makefile2:1133: src/backends/backendsCommon/test/CMakeFiles/armnnBackendsCommonUnitTests.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 48%] Building CXX object src/timelineDecoder/CMakeFiles/timelineDecoderJson.dir/JSONTimelineDecoder.cpp.o
[ 48%] Building CXX object CMakeFiles/armnnOnnxParser.dir/src/armnnOnnxParser/OnnxParser.cpp.o
[ 48%] Building CXX object CMakeFiles/armnnOnnxParser.dir/home/rock/temp/armnn/build-tool/scripts/build/onnx/aarch64_build/onnx/onnx.pb.cc.o
[ 49%] Linking CXX shared library ../../libtimelineDecoderJson.so
[ 49%] Built target timelineDecoderJson
In file included from /usr/include/c++/12/memory:76,
                 from /home/rock/temp/armnn/build-tool/scripts/source/armnn/include/armnn/BackendId.hpp:7,
                 from /home/rock/temp/armnn/build-tool/scripts/source/armnn/include/armnn/ArmNN.hpp:7,
                 from /home/rock/temp/armnn/build-tool/scripts/source/armnn/delegate/common/include/DelegateOptions.hpp:8,
                 from /home/rock/temp/armnn/build-tool/scripts/source/armnn/delegate/opaque/include/armnn_delegate.hpp:8,
                 from /home/rock/temp/armnn/build-tool/scripts/source/armnn/delegate/opaque/src/armnn_delegate.cpp:6:
In member function ‘void std::default_delete<_Tp>::operator()(_Tp*) const [with _Tp = const char*]’,
    inlined from ‘std::unique_ptr<_Tp, _Dp>::~unique_ptr() [with _Tp = const char*; _Dp = std::default_delete<const char*>]’ at /usr/include/c++/12/bits/unique_ptr.h:396:17,
    inlined from ‘armnnDelegate::DelegateOptions armnnOpaqueDelegate::ParseArmNNSettings(const tflite::TFLiteSettings*)’ at /home/rock/temp/armnn/build-tool/scripts/source/armnn/delegate/opaque/src/armnn_delegate.cpp:128:1:
/usr/include/c++/12/bits/unique_ptr.h:95:9: error: ‘void operator delete(void*, std::size_t)’ called on pointer returned from a mismatched allocation function [-Werror=mismatched-new-delete]
   95 |         delete __ptr;
      |         ^~~~~~~~~~~~
/home/rock/temp/armnn/build-tool/scripts/source/armnn/delegate/opaque/src/armnn_delegate.cpp: In function ‘armnnDelegate::DelegateOptions armnnOpaqueDelegate::ParseArmNNSettings(const tflite::TFLiteSettings*)’:
/home/rock/temp/armnn/build-tool/scripts/source/armnn/delegate/opaque/src/armnn_delegate.cpp:113:111: note: returned from ‘void* operator new [](std::size_t)’
  113 |     std::unique_ptr<const char*> options_values = std::unique_ptr<const char*>(new const char*[num_options + 1]);
      |                                                                                                               ^
In member function ‘void std::default_delete<_Tp>::operator()(_Tp*) const [with _Tp = const char*]’,
    inlined from ‘std::unique_ptr<_Tp, _Dp>::~unique_ptr() [with _Tp = const char*; _Dp = std::default_delete<const char*>]’ at /usr/include/c++/12/bits/unique_ptr.h:396:17,
    inlined from ‘armnnDelegate::DelegateOptions armnnOpaqueDelegate::ParseArmNNSettings(const tflite::TFLiteSettings*)’ at /home/rock/temp/armnn/build-tool/scripts/source/armnn/delegate/opaque/src/armnn_delegate.cpp:128:1:
/usr/include/c++/12/bits/unique_ptr.h:95:9: error: ‘void operator delete(void*, std::size_t)’ called on pointer returned from a mismatched allocation function [-Werror=mismatched-new-delete]
   95 |         delete __ptr;
      |         ^~~~~~~~~~~~
/home/rock/temp/armnn/build-tool/scripts/source/armnn/delegate/opaque/src/armnn_delegate.cpp: In function ‘armnnDelegate::DelegateOptions armnnOpaqueDelegate::ParseArmNNSettings(const tflite::TFLiteSettings*)’:
/home/rock/temp/armnn/build-tool/scripts/source/armnn/delegate/opaque/src/armnn_delegate.cpp:112:111: note: returned from ‘void* operator new [](std::size_t)’
  112 |     std::unique_ptr<const char*> options_keys   = std::unique_ptr<const char*>(new const char*[num_options + 1]);
      |                                                                                                               ^
In member function ‘void std::default_delete<_Tp>::operator()(_Tp*) const [with _Tp = const char*]’,
    inlined from ‘std::unique_ptr<_Tp, _Dp>::~unique_ptr() [with _Tp = const char*; _Dp = std::default_delete<const char*>]’ at /usr/include/c++/12/bits/unique_ptr.h:396:17,
    inlined from ‘armnnDelegate::DelegateOptions armnnOpaqueDelegate::ParseArmNNSettings(const tflite::TFLiteSettings*)’ at /home/rock/temp/armnn/build-tool/scripts/source/armnn/delegate/opaque/src/armnn_delegate.cpp:128:1:
/usr/include/c++/12/bits/unique_ptr.h:95:9: error: ‘void operator delete(void*, std::size_t)’ called on pointer returned from a mismatched allocation function [-Werror=mismatched-new-delete]
   95 |         delete __ptr;
      |         ^~~~~~~~~~~~
/home/rock/temp/armnn/build-tool/scripts/source/armnn/delegate/opaque/src/armnn_delegate.cpp: In function ‘armnnDelegate::DelegateOptions armnnOpaqueDelegate::ParseArmNNSettings(const tflite::TFLiteSettings*)’:
/home/rock/temp/armnn/build-tool/scripts/source/armnn/delegate/opaque/src/armnn_delegate.cpp:113:111: note: returned from ‘void* operator new [](std::size_t)’
  113 |     std::unique_ptr<const char*> options_values = std::unique_ptr<const char*>(new const char*[num_options + 1]);
      |                                                                                                               ^
In member function ‘void std::default_delete<_Tp>::operator()(_Tp*) const [with _Tp = const char*]’,
    inlined from ‘std::unique_ptr<_Tp, _Dp>::~unique_ptr() [with _Tp = const char*; _Dp = std::default_delete<const char*>]’ at /usr/include/c++/12/bits/unique_ptr.h:396:17,
    inlined from ‘armnnDelegate::DelegateOptions armnnOpaqueDelegate::ParseArmNNSettings(const tflite::TFLiteSettings*)’ at /home/rock/temp/armnn/build-tool/scripts/source/armnn/delegate/opaque/src/armnn_delegate.cpp:128:1:
/usr/include/c++/12/bits/unique_ptr.h:95:9: error: ‘void operator delete(void*, std::size_t)’ called on pointer returned from a mismatched allocation function [-Werror=mismatched-new-delete]
   95 |         delete __ptr;
      |         ^~~~~~~~~~~~
/home/rock/temp/armnn/build-tool/scripts/source/armnn/delegate/opaque/src/armnn_delegate.cpp: In function ‘armnnDelegate::DelegateOptions armnnOpaqueDelegate::ParseArmNNSettings(const tflite::TFLiteSettings*)’:
/home/rock/temp/armnn/build-tool/scripts/source/armnn/delegate/opaque/src/armnn_delegate.cpp:112:111: note: returned from ‘void* operator new [](std::size_t)’
  112 |     std::unique_ptr<const char*> options_keys   = std::unique_ptr<const char*>(new const char*[num_options + 1]);
      |                                                                                                               ^
[ 50%] Linking CXX shared library libarmnnOnnxParser.so
[ 50%] Built target armnnOnnxParser
cc1plus: all warnings being treated as errors
make[2]: *** [delegate/opaque/CMakeFiles/armnnOpaqueDelegateObject.dir/build.make:76: delegate/opaque/CMakeFiles/armnnOpaqueDelegateObject.dir/src/armnn_delegate.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:2107: delegate/opaque/CMakeFiles/armnnOpaqueDelegateObject.dir/all] Error 2
make: *** [Makefile:136: all] Error 2
Colm-in-Arm commented 2 months ago

Hello,

Sorry for being so slow to respond. That Armbian is based on Debian Bookworm. To my knowledge we've not tried to build on it yet. Would you be willing to try the pre-built binaries on Git Hub to at least verify that it executes correctly. You find them here the particular one for you would be https://github.com/ARM-software/armnn/releases/download/v24.02/ArmNN-linux-aarch64.tar.gz

Colm.