AcademySoftwareFoundation / AcademySoftwareFoundation/openexr
openexr-3.1.7 test suite fails on armv7l-linux
- Dominant language
- C
- Stars
- 1.8k
- Forks
- 700
- Avg merge
- 3d 12h
- Merged PRs (30d)
- 29
Description
```
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](https://github.com/AcademySoftwareFoundation/openexr/files/11360715/openexr-3.1.7.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]':
/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::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]',
inlined from 'void std::vector<_Tp, _Alloc>::push_back(value_type&&) [with _Tp = long long unsigned int; _Alloc = std::allocator]' 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 >' 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& 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& 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 >; _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 >' 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 >; _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 >' 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 >' 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 >; _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 >' 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 >' 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 >' 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 >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]',
inlined from 'void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator >]' 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 >' 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 >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]',
inlined from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _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 >]' 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 >' 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 >' 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, std::vector, 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; 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__
```
Contributor guide
Research direction
Reproduce the OpenEXR 3.1.7 build on armv7l-linux from the linked build log, then run the failing CTest cases OpenEXR.testMultiTiledPartThreading and OpenEXR.testRgbaThreading. Inspect the related threading paths and the mentioned sources, including src/lib/OpenEXR/ImfFastHuf.cpp and ImfTileOffsets.cpp. Done means both tests complete without segmentation faults on the affected platform.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cmake, cpp
- Domain
- operating-systems, testing
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100