It performs this check by explicitly trying to read beyond the end of the specified array size. My understanding is that this is done in order to detect if SIMD instructions will potentially read outside the provided array.
As far as I can tell, we don't ensure that the vertex buffers we have are padded. These buffers might even have been created outside of Mitsuba (e.g., when creating vertices with NumPy).
I was running the Mitsuba tests using the AddressSanitizer and ran into an issue in test_mesh.py:
Embree checks that all buffers have at least a 16 byte padding: https://github.com/mitsuba-renderer/embree/blob/598978bb21d098b6a7833fa889a2b5b38be6f026/kernels/common/scene_triangle_mesh.cpp#L54
It performs this check by explicitly trying to read beyond the end of the specified array size. My understanding is that this is done in order to detect if SIMD instructions will potentially read outside the provided array.
As far as I can tell, we don't ensure that the vertex buffers we have are padded. These buffers might even have been created outside of Mitsuba (e.g., when creating vertices with NumPy).