As speculated in the upstream report there is a new misaligned access
that needs to be replaced with a memcpy. Attached is a patch that fixes
the build on Ubuntu arm64 kernels.

Cheers,
mwh
diff -Nru h5py-3.10.0/debian/changelog h5py-3.10.0/debian/changelog
--- h5py-3.10.0/debian/changelog	2024-01-14 04:11:16.000000000 +1300
+++ h5py-3.10.0/debian/changelog	2024-02-09 15:26:59.000000000 +1300
@@ -1,3 +1,11 @@
+h5py (3.10.0-2) UNRELEASED; urgency=medium
+
+  * d/patches/fix-unaligned-access.patch: update to replace an additional
+    unaligned access with a memcpy to fix behaviour on armhf userland / arm64
+    kernels without COMPAT_ALIGNMENT_FIXUPS as found in Ubuntu.
+
+ -- Michael Hudson-Doyle <mwhud...@debian.org>  Fri, 09 Feb 2024 15:26:59 +1300
+
 h5py (3.10.0-1) unstable; urgency=medium
 
   * Team upload.
diff -Nru h5py-3.10.0/debian/patches/fix-unaligned-access.patch h5py-3.10.0/debian/patches/fix-unaligned-access.patch
--- h5py-3.10.0/debian/patches/fix-unaligned-access.patch	2024-01-14 04:11:16.000000000 +1300
+++ h5py-3.10.0/debian/patches/fix-unaligned-access.patch	2024-02-09 15:26:10.000000000 +1300
@@ -1,6 +1,22 @@
---- a/h5py/_conv.pyx
-+++ b/h5py/_conv.pyx
-@@ -869,8 +869,8 @@
+Index: h5py-3.10.0/h5py/_conv.pyx
+===================================================================
+--- h5py-3.10.0.orig/h5py/_conv.pyx
++++ h5py-3.10.0/h5py/_conv.pyx
+@@ -705,9 +705,10 @@ cdef int conv_vlen2ndarray(void* ipt,
+         vlen_t in_vlen0
+         size_t size, itemsize
+ 
+-    #Replaces the memcpy
+-    size = in_vlen0.len = in_vlen[0].len
+-    data = in_vlen0.ptr = in_vlen[0].ptr
++    memcpy(&size, &in_vlen[0].len, sizeof(size_t))
++    memcpy(&data, &in_vlen[0].ptr, sizeof(void*))
++    in_vlen0.len = size
++    in_vlen0.ptr = data
+ 
+     dims[0] = size
+     itemsize = H5Tget_size(outtype.id)
+@@ -869,8 +870,8 @@ cdef int conv_ndarray2vlen(void* ipt,
  
          H5Tconvert(intype.id, outtype.id, len, data, back_buf, H5P_DEFAULT)
  

Reply via email to