When running the convolve_2d.cpp test module (Boost 1.81.0) on a 32-bit ARM target, there is an alignment
exception (fault) in the test_convolve_2d_with_image_using_float32_t() test case. The alignment exception
occurs when the convolve_2d_impl() function attempts to access the first pixel in the second row of
the src_view. The address computed for src_view(col_boundary, row_boundary)[0] is not a multiple of
the size of the gil::float32_t array element.
The apparent cause is that the test case creates the gil::interleaved_view() calls for the source and output
images use the number of columns in the row rather than the length in bytes of each row as the
last argument to gill::interleaved_view(). Likely
Actual behavior
When running the convolve_2d.cpp test module (Boost 1.81.0) on a 32-bit ARM target, there is an alignment exception (fault) in the
test_convolve_2d_with_image_using_float32_t()
test case. The alignment exception occurs when theconvolve_2d_impl()
function attempts to access the first pixel in the second row of thesrc_view
. The address computed forsrc_view(col_boundary, row_boundary)[0]
is not a multiple of the size of thegil::float32_t
array element.The apparent cause is that the test case creates the
gil::interleaved_view()
calls for the source and output images use the number of columns in the row rather than the length in bytes of each row as the last argument togill::interleaved_view()
. Likelyshould be
Expected behavior
The test should not cause an alignment exception and should complete successfully.
C++ Minimal Working Example
Use the convolve_2d.cpp test case on a target that gives exceptions for misaligned accesses.
Environment
<boost/version.hpp>
):