AcademySoftwareFoundation / openexr

The OpenEXR project provides the specification and reference implementation of the EXR file format, the professional-grade image storage format of the motion picture industry.
http://www.openexr.com/
BSD 3-Clause "New" or "Revised" License
1.63k stars 618 forks source link

openexr-3.1.7 test suite fails on armv7l-linux #1400

Open misuzu opened 1 year ago

misuzu commented 1 year ago
112/112 Test #111: OpenEXRUtil.testDeepImage .................   Passed   25.84 sec
98% tests passed, 2 tests failed out of 112
Total Test time (real) = 190.83 sec
The following tests FAILED:
        87 - OpenEXR.testMultiTiledPartThreading (SEGFAULT)
        95 - OpenEXR.testRgbaThreading (SEGFAULT)
Errors while running CTest
make: *** [Makefile:71: test] Error 8

Full build log

Likely relevant parts:

[ 30%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfFloatAttribute.cpp.o
In file included from /nix/store/s2nrdgav2iw8v8qs6h42r9yr5c47i8jy-gcc-12.2.0/include/c++/12.2.0/vector:70,
                 from /build/source/src/lib/OpenEXR/ImfFastHuf.cpp:12:
/nix/store/s2nrdgav2iw8v8qs6h42r9yr5c47i8jy-gcc-12.2.0/include/c++/12.2.0/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {long long unsigned int}; _Tp = long long unsigned int; _Alloc = std::allocator<long long unsigned int>]':
/nix/store/s2nrdgav2iw8v8qs6h42r9yr5c47i8jy-gcc-12.2.0/include/c++/12.2.0/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<long long unsigned int>::iterator' changed in GCC 7.1
  439 |       vector<_Tp, _Alloc>::
      |       ^~~~~~~~~~~~~~~~~~~
In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {long long unsigned int}; _Tp = long long unsigned int; _Alloc = std::allocator<long long unsigned int>]',
    inlined from 'void std::vector<_Tp, _Alloc>::push_back(value_type&&) [with _Tp = long long unsigned int; _Alloc = std::allocator<long long unsigned int>]' at /nix/store/s2nrdgav2iw8v8qs6h42r9yr5c47i8jy-gcc-12.2.0/include/c++/12.2.0/bits/stl_vector.h:1294:21,
    inlined from 'Imf_3_1::FastHufDecoder::FastHufDecoder(const char*&, int, int, int, int)' at /build/source/src/lib/OpenEXR/ImfFastHuf.cpp:186:31:
/nix/store/s2nrdgav2iw8v8qs6h42r9yr5c47i8jy-gcc-12.2.0/include/c++/12.2.0/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long unsigned int*, std::vector<long long unsigned int> >' changed in GCC 7.1
  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);

[ 45%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfStdIO.cpp.o
/build/source/src/lib/OpenEXR/ImfStandardAttributes.cpp: In function 'const float& Imf_3_1::dwaCompressionLevel(const Header&)':
/build/source/src/lib/OpenEXR/ImfStandardAttributes.cpp:55:41: warning: 'const Imf_3_1::TypedAttribute<float>& Imf_3_1::dwaCompressionLevelAttribute(const Header&)' is deprecated: use compression method in ImfHeader [-Wdeprecated-declarations]
   55 |         return IMF_NAME_ATTRIBUTE(name) (header).value();           \
      |                                         ^
/build/source/src/lib/OpenEXR/ImfStandardAttributes.cpp:99:1: note: in expansion of macro 'IMF_STD_ATTRIBUTE_IMP'
   99 | IMF_STD_ATTRIBUTE_IMP (dwaCompressionLevel, DwaCompressionLevel, float)
      | ^~~~~~~~~~~~~~~~~~~~~
In file included from /build/source/src/lib/OpenEXR/ImfStandardAttributes.cpp:12:
/build/source/src/lib/OpenEXR/ImfStandardAttributes.cpp:99:24: note: declared here
   99 | IMF_STD_ATTRIBUTE_IMP (dwaCompressionLevel, DwaCompressionLevel, float)
      |                        ^~~~~~~~~~~~~~~~~~~
/build/source/src/lib/OpenEXR/ImfStandardAttributes.h:46:34: note: in definition of macro 'IMF_NAME_ATTRIBUTE'
   46 | #define IMF_NAME_ATTRIBUTE(name) name##Attribute
      |                                  ^~~~
/build/source/src/lib/OpenEXR/ImfStandardAttributes.cpp:99:1: note: in expansion of macro 'IMF_STD_ATTRIBUTE_IMP'
   99 | IMF_STD_ATTRIBUTE_IMP (dwaCompressionLevel, DwaCompressionLevel, float)
      | ^~~~~~~~~~~~~~~~~~~~~
/build/source/src/lib/OpenEXR/ImfStandardAttributes.cpp: In function 'float& Imf_3_1::dwaCompressionLevel(Header&)':
/build/source/src/lib/OpenEXR/ImfStandardAttributes.cpp:61:41: warning: 'Imf_3_1::TypedAttribute<float>& Imf_3_1::dwaCompressionLevelAttribute(Header&)' is deprecated: use compression method in ImfHeader [-Wdeprecated-declarations]
   61 |         return IMF_NAME_ATTRIBUTE(name) (header).value();           \
      |                                         ^
/build/source/src/lib/OpenEXR/ImfStandardAttributes.cpp:99:1: note: in expansion of macro 'IMF_STD_ATTRIBUTE_IMP'
   99 | IMF_STD_ATTRIBUTE_IMP (dwaCompressionLevel, DwaCompressionLevel, float)
      | ^~~~~~~~~~~~~~~~~~~~~
/build/source/src/lib/OpenEXR/ImfStandardAttributes.cpp:99:24: note: declared here
   99 | IMF_STD_ATTRIBUTE_IMP (dwaCompressionLevel, DwaCompressionLevel, float)
      |                        ^~~~~~~~~~~~~~~~~~~
/build/source/src/lib/OpenEXR/ImfStandardAttributes.h:46:34: note: in definition of macro 'IMF_NAME_ATTRIBUTE'
   46 | #define IMF_NAME_ATTRIBUTE(name) name##Attribute
      |                                  ^~~~
/build/source/src/lib/OpenEXR/ImfStandardAttributes.cpp:99:1: note: in expansion of macro 'IMF_STD_ATTRIBUTE_IMP'
   99 | IMF_STD_ATTRIBUTE_IMP (dwaCompressionLevel, DwaCompressionLevel, float)

[ 50%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfTimeCode.cpp.o
In file included from /nix/store/s2nrdgav2iw8v8qs6h42r9yr5c47i8jy-gcc-12.2.0/include/c++/12.2.0/bits/stl_algo.h:60,
                 from /nix/store/s2nrdgav2iw8v8qs6h42r9yr5c47i8jy-gcc-12.2.0/include/c++/12.2.0/algorithm:61,
                 from /build/source/src/lib/OpenEXR/ImfTileOffsets.cpp:17:
/nix/store/s2nrdgav2iw8v8qs6h42r9yr5c47i8jy-gcc-12.2.0/include/c++/12.2.0/bits/stl_heap.h: In function 'void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Imf_3_1::{anonymous}::tilepos*, vector<Imf_3_1::{anonymous}::tilepos> >; _Distance = int; _Tp = Imf_3_1::{anonymous}::tilepos; _Compare = __gnu_cxx::__ops::_Iter_less_iter]':
/nix/store/s2nrdgav2iw8v8qs6h42r9yr5c47i8jy-gcc-12.2.0/include/c++/12.2.0/bits/stl_heap.h:224:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<Imf_3_1::{anonymous}::tilepos*, std::vector<Imf_3_1::{anonymous}::tilepos> >' changed in GCC 7.1
  224 |     __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
      |     ^~~~~~~~~~~~~
/nix/store/s2nrdgav2iw8v8qs6h42r9yr5c47i8jy-gcc-12.2.0/include/c++/12.2.0/bits/stl_algo.h: In function 'void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Imf_3_1::{anonymous}::tilepos*, vector<Imf_3_1::{anonymous}::tilepos> >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]':
/nix/store/s2nrdgav2iw8v8qs6h42r9yr5c47i8jy-gcc-12.2.0/include/c++/12.2.0/bits/stl_algo.h:1802:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<Imf_3_1::{anonymous}::tilepos*, std::vector<Imf_3_1::{anonymous}::tilepos> >' changed in GCC 7.1
 1802 |     __insertion_sort(_RandomAccessIterator __first,
      |     ^~~~~~~~~~~~~~~~
/nix/store/s2nrdgav2iw8v8qs6h42r9yr5c47i8jy-gcc-12.2.0/include/c++/12.2.0/bits/stl_algo.h:1802:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<Imf_3_1::{anonymous}::tilepos*, std::vector<Imf_3_1::{anonymous}::tilepos> >' changed in GCC 7.1
/nix/store/s2nrdgav2iw8v8qs6h42r9yr5c47i8jy-gcc-12.2.0/include/c++/12.2.0/bits/stl_algo.h: In function 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Imf_3_1::{anonymous}::tilepos*, vector<Imf_3_1::{anonymous}::tilepos> >; _Size = int; _Compare = __gnu_cxx::__ops::_Iter_less_iter]':
/nix/store/s2nrdgav2iw8v8qs6h42r9yr5c47i8jy-gcc-12.2.0/include/c++/12.2.0/bits/stl_algo.h:1908:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<Imf_3_1::{anonymous}::tilepos*, std::vector<Imf_3_1::{anonymous}::tilepos> >' changed in GCC 7.1
 1908 |     __introsort_loop(_RandomAccessIterator __first,
      |     ^~~~~~~~~~~~~~~~
/nix/store/s2nrdgav2iw8v8qs6h42r9yr5c47i8jy-gcc-12.2.0/include/c++/12.2.0/bits/stl_algo.h:1908:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<Imf_3_1::{anonymous}::tilepos*, std::vector<Imf_3_1::{anonymous}::tilepos> >' changed in GCC 7.1
/nix/store/s2nrdgav2iw8v8qs6h42r9yr5c47i8jy-gcc-12.2.0/include/c++/12.2.0/bits/stl_algo.h:1922:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<Imf_3_1::{anonymous}::tilepos*, std::vector<Imf_3_1::{anonymous}::tilepos> >' changed in GCC 7.1
 1922 |           std::__introsort_loop(__cut, __last, __depth_limit, __comp);
      |           ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Imf_3_1::{anonymous}::tilepos*, vector<Imf_3_1::{anonymous}::tilepos> >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]',
    inlined from 'void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator<Imf_3_1::{anonymous}::tilepos*, vector<Imf_3_1::{anonymous}::tilepos> >]' at /nix/store/s2nrdgav2iw8v8qs6h42r9yr5c47i8jy-gcc-12.2.0/include/c++/12.2.0/bits/stl_algo.h:4820:18,
    inlined from 'void Imf_3_1::TileOffsets::getTileOrder(int*, int*, int*, int*) const' at /build/source/src/lib/OpenEXR/ImfTileOffsets.cpp:329:14:
/nix/store/s2nrdgav2iw8v8qs6h42r9yr5c47i8jy-gcc-12.2.0/include/c++/12.2.0/bits/stl_algo.h:1937:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<Imf_3_1::{anonymous}::tilepos*, std::vector<Imf_3_1::{anonymous}::tilepos> >' changed in GCC 7.1
 1937 |           std::__introsort_loop(__first, __last,
      |           ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
 1938 |                                 std::__lg(__last - __first) * 2,
      |                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1939 |                                 __comp);
      |                                 ~~~~~~~
In function 'void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Imf_3_1::{anonymous}::tilepos*, vector<Imf_3_1::{anonymous}::tilepos> >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]',
    inlined from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Imf_3_1::{anonymous}::tilepos*, vector<Imf_3_1::{anonymous}::tilepos> >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]' at /nix/store/s2nrdgav2iw8v8qs6h42r9yr5c47i8jy-gcc-12.2.0/include/c++/12.2.0/bits/stl_algo.h:1940:31,
    inlined from 'void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator<Imf_3_1::{anonymous}::tilepos*, vector<Imf_3_1::{anonymous}::tilepos> >]' at /nix/store/s2nrdgav2iw8v8qs6h42r9yr5c47i8jy-gcc-12.2.0/include/c++/12.2.0/bits/stl_algo.h:4820:18,
    inlined from 'void Imf_3_1::TileOffsets::getTileOrder(int*, int*, int*, int*) const' at /build/source/src/lib/OpenEXR/ImfTileOffsets.cpp:329:14:
/nix/store/s2nrdgav2iw8v8qs6h42r9yr5c47i8jy-gcc-12.2.0/include/c++/12.2.0/bits/stl_algo.h:1849:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<Imf_3_1::{anonymous}::tilepos*, std::vector<Imf_3_1::{anonymous}::tilepos> >' changed in GCC 7.1
 1849 |           std::__insertion_sort(__first, __first + int(_S_threshold), __comp);
      |           ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/nix/store/s2nrdgav2iw8v8qs6h42r9yr5c47i8jy-gcc-12.2.0/include/c++/12.2.0/bits/stl_algo.h:1854:30: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<Imf_3_1::{anonymous}::tilepos*, std::vector<Imf_3_1::{anonymous}::tilepos> >' changed in GCC 7.1
 1854 |         std::__insertion_sort(__first, __last, __comp);

 [ 65%] Building CXX object src/lib/OpenEXRUtil/CMakeFiles/OpenEXRUtil.dir/ImfImageDataWindow.cpp.o
/build/source/src/bin/exrmultipart/exrmultipart.cpp: In function 'void combine(std::vector<const char*>, std::vector<const char*>, const char*, bool)':
/build/source/src/bin/exrmultipart/exrmultipart.cpp:576:19: warning: ignoring return value of 'std::vector<_Tp, _Alloc>::size_type std::vector<_Tp, _Alloc>::size() const [with _Tp = Imf_3_1::MultiPartInputFile*; _Alloc = std::allocator<Imf_3_1::MultiPartInputFile*>; size_type = unsigned int]', declared with attribute 'nodiscard' [-Wunused-result]
  576 |     fordelete.size();
      |     ~~~~~~~~~~~~~~^~
In file included from /nix/store/s2nrdgav2iw8v8qs6h42r9yr5c47i8jy-gcc-12.2.0/include/c++/12.2.0/vector:64,
                 from /build/source/src/lib/OpenEXR/ImfStringVectorAttribute.h:23,
                 from /build/source/src/lib/OpenEXR/ImfPartHelper.h:36,
                 from /build/source/src/bin/exrmultipart/exrmultipart.cpp:26:
/nix/store/s2nrdgav2iw8v8qs6h42r9yr5c47i8jy-gcc-12.2.0/include/c++/12.2.0/bits/stl_vector.h:987:7: note: declared here
  987 |       size() const _GLIBCXX_NOEXCEPT

[ 78%] Building CXX object src/test/OpenEXRTest/CMakeFiles/OpenEXRTest.dir/testCompositeDeepScanLine.cpp.o
In function 'void testStringHelper(exr_context_t)',
    inlined from 'void testAttrStrings(const std::string&)' at /build/source/src/test/OpenEXRCoreTest/general_attr.cpp:281:22:
/build/source/src/test/OpenEXRCoreTest/general_attr.cpp:248:36: warning: argument 1 value '2147483649' exceeds maximum object size 2147483647 [-Walloc-size-larger-than=]
  248 |     char*  tmp    = (char*) malloc (nbytes + 1);
      |                             ~~~~~~~^~~~~~~~~~~~
In file included from /nix/store/s2nrdgav2iw8v8qs6h42r9yr5c47i8jy-gcc-12.2.0/include/c++/12.2.0/cstdlib:75,
                 from /nix/store/s2nrdgav2iw8v8qs6h42r9yr5c47i8jy-gcc-12.2.0/include/c++/12.2.0/ext/string_conversions.h:41,
                 from /nix/store/s2nrdgav2iw8v8qs6h42r9yr5c47i8jy-gcc-12.2.0/include/c++/12.2.0/bits/basic_string.h:3960,
                 from /nix/store/s2nrdgav2iw8v8qs6h42r9yr5c47i8jy-gcc-12.2.0/include/c++/12.2.0/string:53,
                 from /build/source/src/test/OpenEXRCoreTest/general_attr.h:7,
                 from /build/source/src/test/OpenEXRCoreTest/general_attr.cpp:4:
/nix/store/j2sswk0kla12fcv4p34rk3w231m37saj-glibc-2.37-8-dev/include/stdlib.h: In function 'void testAttrStrings(const std::string&)':
/nix/store/j2sswk0kla12fcv4p34rk3w231m37saj-glibc-2.37-8-dev/include/stdlib.h:553:14: note: in a call to allocation function 'void* malloc(size_t)' declared here
  553 | extern void *malloc (size_t __size) __THROW __attribute_malloc__
xlietz commented 1 year ago

The Sonar scan recently started reporting potential bugs in a few of the deep tests. I wonder if this might be related: https://sonarcloud.io/project/issues?resolved=false&types=BUG&sinceLeakPeriod=true&id=AcademySoftwareFoundation_openexr

cary-ilm commented 1 year ago

Thanks for the report. I can't reproduce this error but it's likely not related to the build warnings.

Could you possibly attach the Testing/Temporary/LastTest.log file from the failed run? That might offer some further clues to the failure. Thanks.

misuzu commented 1 year ago

Could you possibly attach the Testing/Temporary/LastTest.log file from the failed run? That might offer some further clues to the failure. Thanks.

LastTest.log

cary-ilm commented 1 year ago

Thanks, unfortunately that wasn't much help. We'll discuss at the next project meeting and see what we can come up with.

misuzu commented 1 year ago

This issue is only reproducible when building on 64-bit kernel (32-bit userspace)