openexr-3.1.7 test suite fails on armv7l-linux
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
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__
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
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.
Could you possibly attach the Testing/Temporary/LastTest.log file from the failed run? That might offer some further clues to the failure. Thanks.
Thanks, unfortunately that wasn't much help. We'll discuss at the next project meeting and see what we can come up with.
This issue is only reproducible when building on 64-bit kernel (32-bit userspace)