Bug 2244500

Summary: Many python-pypet tests fail on s390x due to apparent endian issues in pandas.HDFStore
Product: [Fedora] Fedora Reporter: Ben Beasley <code>
Component: python-pypetAssignee: Ankur Sinha (FranciscoD) <sanjay.ankur>
Status: NEW --- QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 40CC: neuro-sig, sanjay.ankur
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 485231    

Description Ben Beasley 2023-10-16 15:40:42 UTC
While working to improve packaging and testing of the python-pypet package, I found that very many tests (approximately half) fail due to apparent endian issues in pandas.HDFStore.

Here is a typical example:

======================================================================
ERROR: test_storage_and_loading (unittests.annotations_test.AnnotationsTest.test_storage_and_loading)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/builddir/build/BUILDROOT/python-pypet-0.5.2-30.fc40.s390x/usr/lib/python3.12/site-packages/pypet/tests/unittests/annotations_test.py", line 94, in test_storage_and_loading
    self.traj.f_store()
  File "/builddir/build/BUILDROOT/python-pypet-0.5.2-30.fc40.s390x/usr/lib/python3.12/site-packages/pypet/utils/decorators.py", line 163, in new_func
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILDROOT/python-pypet-0.5.2-30.fc40.s390x/usr/lib/python3.12/site-packages/pypet/utils/decorators.py", line 163, in new_func
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILDROOT/python-pypet-0.5.2-30.fc40.s390x/usr/lib/python3.12/site-packages/pypet/utils/decorators.py", line 121, in new_func
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILDROOT/python-pypet-0.5.2-30.fc40.s390x/usr/lib/python3.12/site-packages/pypet/trajectory.py", line 2872, in f_store
    self._storage_service.store(pypetconstants.TRAJECTORY, self,
  File "/builddir/build/BUILDROOT/python-pypet-0.5.2-30.fc40.s390x/usr/lib/python3.12/site-packages/pypet/storageservice.py", line 1337, in store
    self._srvc_closing_routine(opened)
  File "/builddir/build/BUILDROOT/python-pypet-0.5.2-30.fc40.s390x/usr/lib/python3.12/site-packages/pypet/storageservice.py", line 1556, in _srvc_closing_routine
    os.fsync(f_fd)
OverflowError: Python int too large to convert to C int

I suspect the file descriptor is being loaded from HDF5 with the wrong endianness. I can’t find anywhere this would be happening in pypet; I think it is a pandas.HDFStore bug. Note that pandas does not test big-endian support but will happily accept patches to improve it: https://github.com/pandas-dev/pandas/issues/4737#issuecomment-1090931741

For now, I plan to add “ExcludeArch: s390x” to python-pypet. This bug is the tracking bug required under https://docs.fedoraproject.org/en-US/packaging-guidelines/#_architecture_build_failures.

Comment 1 Ben Beasley 2023-10-16 15:49:40 UTC
This is very likely the same bug described in:

https://src.fedoraproject.org/rpms/python-pandas/blob/c29517a7d496f6fc200f55725de4223746c2b2de/f/python-pandas.spec#_631

Comment 2 Aoife Moloney 2024-02-15 22:59:35 UTC
This bug appears to have been reported against 'rawhide' during the Fedora Linux 40 development cycle.
Changing version to 40.