Description
Pandas version checks
-
I have checked that this issue has not already been reported.
-
I have confirmed this bug exists on the latest version of pandas.
-
I have confirmed this bug exists on the main branch of pandas.
Reproducible Example
Run the pandas-2.0.3 testsuite on armv7.
Issue Description
The pandas/tests/io/sas/test_byteswap.py::test_float_byteswap
tests SIGBUS for me on arm (arm64 host, armv7 chroot).
When building with UBSAN (-fsanitize=undefined
), I get the following:
pandas/tests/io/sas/test_byteswap.py::test_float_byteswap[False-float32] pandas/io/sas/byteswap.c:2293:15: runtime error: load of misaligned address 0xcc9025db for type 'float', which requires 4 byte alignment
0xcc9025db: note: pointer points here
26 45 c1 18 00 00 00 00 70 a3 aa 09 40 00 00 00 00 38 21 90 cc 80 d5 90 cc 01 00 00 00 4c 5a c8
^
[gw8] PASSED pandas/tests/io/sas/test_byteswap.py::test_float_byteswap[False-float32]
pandas/tests/io/sas/test_byteswap.py::test_float_byteswap[False-float64] pandas/io/sas/byteswap.c:2524:15: runtime error: load of misaligned address 0xbecce23c for type 'double', which requires 8 byte alignment
0xbecce23c: note: pointer points here
1a e5 23 62 00 00 00 00 00 00 00 00 ec b4 43 2a c4 10 09 93 00 00 00 00 00 e2 cc be 00 00 00 00
^
Fatal Python error: Bus error
Thread 0xf6f5b420 (most recent call first):
File "/usr/lib/python3.11/site-packages/execnet/gateway_base.py", line 474 in read
File "/usr/lib/python3.11/site-packages/execnet/gateway_base.py", line 507 in from_io
File "/usr/lib/python3.11/site-packages/execnet/gateway_base.py", line 1049 in _thread_receiver
File "/usr/lib/python3.11/site-packages/execnet/gateway_base.py", line 296 in run
File "/usr/lib/python3.11/site-packages/execnet/gateway_base.py", line 361 in _perform_spawn
Current thread 0xf7d60020 (most recent call first):
File "/var/tmp/portage/dev-python/pandas-2.0.3/work/pandas-2.0.3-python3_11/install/usr/lib/python3.11/site-packages/pandas/tests/io/sas/test_byteswap.py", line 51 in _test
File "/var/tmp/portage/dev-python/pandas-2.0.3/work/pandas-2.0.3-python3_11/install/usr/lib/python3.11/site-packages/pandas/tests/io/sas/test_byteswap.py", line 37 in test_float_byteswap
File "/usr/lib/python3.11/site-packages/hypothesis/core.py", line 785 in run
File "/usr/lib/python3.11/site-packages/hypothesis/executors.py", line 47 in default_new_style_executor
File "/usr/lib/python3.11/site-packages/hypothesis/core.py", line 789 in execute_once
File "/usr/lib/python3.11/site-packages/hypothesis/core.py", line 850 in _execute_once_for_engine
File "/usr/lib/python3.11/site-packages/hypothesis/internal/conjecture/engine.py", line 173 in __stoppable_test_function
File "/usr/lib/python3.11/site-packages/hypothesis/internal/conjecture/engine.py", line 195 in test_function
File "/usr/lib/python3.11/site-packages/hypothesis/internal/conjecture/engine.py", line 1051 in cached_test_function
File "/usr/lib/python3.11/site-packages/hypothesis/internal/conjecture/engine.py", line 670 in generate_new_examples
File "/usr/lib/python3.11/site-packages/hypothesis/internal/conjecture/engine.py", line 866 in _run
File "/usr/lib/python3.11/site-packages/hypothesis/internal/conjecture/engine.py", line 460 in run
File "/usr/lib/python3.11/site-packages/hypothesis/core.py", line 927 in run_engine
File "/usr/lib/python3.11/site-packages/hypothesis/core.py", line 1341 in wrapped_test
File "/var/tmp/portage/dev-python/pandas-2.0.3/work/pandas-2.0.3-python3_11/install/usr/lib/python3.11/site-packages/pandas/tests/io/sas/test_byteswap.py", line 33 in test_float_byteswap
File "/usr/lib/python3.11/site-packages/_pytest/python.py", line 194 in pytest_pyfunc_call
File "/usr/lib/python3.11/site-packages/pluggy/_callers.py", line 80 in _multicall
File "/usr/lib/python3.11/site-packages/pluggy/_manager.py", line 112 in _hookexec
File "/usr/lib/python3.11/site-packages/pluggy/_hooks.py", line 433 in __call__
File "/usr/lib/python3.11/site-packages/_pytest/python.py", line 1788 in runtest
File "/usr/lib/python3.11/site-packages/_pytest/runner.py", line 169 in pytest_runtest_call
File "/usr/lib/python3.11/site-packages/pluggy/_callers.py", line 80 in _multicall
File "/usr/lib/python3.11/site-packages/pluggy/_manager.py", line 112 in _hookexec
File "/usr/lib/python3.11/site-packages/pluggy/_hooks.py", line 433 in __call__
File "/usr/lib/python3.11/site-packages/_pytest/runner.py", line 262 in <lambda>
File "/usr/lib/python3.11/site-packages/_pytest/runner.py", line 341 in from_call
File "/usr/lib/python3.11/site-packages/_pytest/runner.py", line 261 in call_runtest_hook
File "/usr/lib/python3.11/site-packages/_pytest/runner.py", line 222 in call_and_report
File "/usr/lib/python3.11/site-packages/_pytest/runner.py", line 133 in runtestprotocol
File "/usr/lib/python3.11/site-packages/_pytest/runner.py", line 114 in pytest_runtest_protocol
File "/usr/lib/python3.11/site-packages/pluggy/_callers.py", line 80 in _multicall
File "/usr/lib/python3.11/site-packages/pluggy/_manager.py", line 112 in _hookexec
File "/usr/lib/python3.11/site-packages/pluggy/_hooks.py", line 433 in __call__
File "/usr/lib/python3.11/site-packages/xdist/remote.py", line 174 in run_one_test
File "/usr/lib/python3.11/site-packages/xdist/remote.py", line 157 in pytest_runtestloop
File "/usr/lib/python3.11/site-packages/pluggy/_callers.py", line 80 in _multicall
File "/usr/lib/python3.11/site-packages/pluggy/_manager.py", line 112 in _hookexec
File "/usr/lib/python3.11/site-packages/pluggy/_hooks.py", line 433 in __call__
File "/usr/lib/python3.11/site-packages/_pytest/main.py", line 324 in _main
File "/usr/lib/python3.11/site-packages/_pytest/main.py", line 270 in wrap_session
File "/usr/lib/python3.11/site-packages/_pytest/main.py", line 317 in pytest_cmdline_main
File "/usr/lib/python3.11/site-packages/pluggy/_callers.py", line 80 in _multicall
File "/usr/lib/python3.11/site-packages/pluggy/_manager.py", line 112 in _hookexec
File "/usr/lib/python3.11/site-packages/pluggy/_hooks.py", line 433 in __call__
File "/usr/lib/python3.11/site-packages/xdist/remote.py", line 355 in <module>
File "/usr/lib/python3.11/site-packages/execnet/gateway_base.py", line 1157 in executetask
File "/usr/lib/python3.11/site-packages/execnet/gateway_base.py", line 296 in run
File "/usr/lib/python3.11/site-packages/execnet/gateway_base.py", line 361 in _perform_spawn
File "/usr/lib/python3.11/site-packages/execnet/gateway_base.py", line 343 in integrate_as_primary_thread
File "/usr/lib/python3.11/site-packages/execnet/gateway_base.py", line 1142 in serve
File "/usr/lib/python3.11/site-packages/execnet/gateway_base.py", line 1640 in serve
File "<string>", line 8 in <module>
File "<string>", line 1 in <module>
Extension modules: numpy.core._multiarray_umath, numpy.core._multiarray_tests, numpy.linalg._umath_linalg, numpy.fft._pocketfft_internal, numpy.random._common, numpy.random.bit_generator, numpy.random._bounded_integers, numpy.random._mt19937, numpy.random.mtrand, numpy.random._philox, numpy.random._pcg64, numpy.random._sfc64, numpy.random._generator, pandas._libs.tslibs.np_datetime, pandas._libs.tslibs.dtypes, pandas._libs.tslibs.base, pandas._libs.tslibs.nattype, pandas._libs.tslibs.timezones, pandas._libs.tslibs.ccalendar, pandas._libs.tslibs.fields, pandas._libs.tslibs.timedeltas, pandas._libs.tslibs.tzconversion, pandas._libs.tslibs.timestamps, pandas._libs.properties, pandas._libs.tslibs.offsets, pandas._libs.tslibs.strptime, pandas._libs.tslibs.parsing, pandas._libs.tslibs.conversion, pandas._libs.tslibs.period, pandas._libs.tslibs.vectorized, pandas._libs.ops_dispatch, pandas._libs.missing, pandas._libs.hashtable, pandas._libs.algos, pandas._libs.interval, pandas._libs.lib, pandas._libs.hashing, pandas._libs.tslib, pandas._libs.ops, numexpr.interpreter, bottleneck.move, bottleneck.nonreduce, bottleneck.nonreduce_axis, bottleneck.reduce, pandas._libs.arrays, pandas._libs.sparse, pandas._libs.reduction, pandas._libs.indexing, pandas._libs.index, pandas._libs.internals, pandas._libs.join, pandas._libs.writers, pandas._libs.window.aggregations, pandas._libs.window.indexers, pandas._libs.reshape, pandas._libs.groupby, pandas._libs.testing, pandas._libs.parsers, pandas._libs.json, matplotlib._c_internal_utils, PIL._imaging, matplotlib._path, kiwisolver._cext, scipy._lib._ccallback_c, numpy.linalg.lapack_lite, scipy.sparse._sparsetools, _csparsetools, scipy.sparse._csparsetools, scipy.sparse.linalg._isolve._iterative, scipy.linalg._fblas, scipy.linalg._flapack, scipy.linalg.cython_lapack, scipy.linalg._cythonized_array_utils, scipy.linalg._solve_toeplitz, scipy.linalg._decomp_lu_cython, scipy.linalg._matfuncs_sqrtm_triu, scipy.linalg.cython_blas, scipy.linalg._matfuncs_expm, scipy.linalg._decomp_update, scipy.linalg._flinalg, scipy.sparse.linalg._dsolve._superlu, scipy.sparse.linalg._eigen.arpack._arpack, scipy.sparse.csgraph._tools, scipy.sparse.csgraph._shortest_path, scipy.sparse.csgraph._traversal, scipy.sparse.csgraph._min_spanning_tree, scipy.sparse.csgraph._flow, scipy.sparse.csgraph._matching, scipy.sparse.csgraph._reordering, scipy.spatial._ckdtree, scipy._lib.messagestream, scipy.spatial._qhull, scipy.spatial._voronoi, scipy.spatial._distance_wrap, scipy.spatial._hausdorff, scipy.special._ufuncs_cxx, scipy.special._ufuncs, scipy.special._specfun, scipy.special._comb, scipy.special._ellip_harm_2, scipy.spatial.transform._rotation, scipy.ndimage._nd_image, _ni_label, scipy.ndimage._ni_label, scipy.optimize._minpack2, scipy.optimize._group_columns, scipy.optimize._trlib._trlib, scipy.optimize._lbfgsb, _moduleTNC, scipy.optimize._moduleTNC, scipy.optimize._cobyla, scipy.optimize._slsqp, scipy.optimize._minpack, scipy.optimize._lsq.givens_elimination, scipy.optimize._zeros, scipy.optimize.__nnls, scipy.optimize._highs.cython.src._highs_wrapper, scipy.optimize._highs._highs_wrapper, scipy.optimize._highs.cython.src._highs_constants, scipy.optimize._highs._highs_constants, scipy.linalg._interpolative, scipy.optimize._bglu_dense, scipy.optimize._lsap, scipy.optimize._direct, scipy.integrate._odepack, scipy.integrate._quadpack, scipy.integrate._vode, scipy.integrate._dop, scipy.integrate._lsoda, scipy.special.cython_special, scipy.stats._stats, scipy.stats.beta_ufunc, scipy.stats._boost.beta_ufunc, scipy.stats.binom_ufunc, scipy.stats._boost.binom_ufunc, scipy.stats.nbinom_ufunc, scipy.stats._boost.nbinom_ufunc, scipy.stats.hypergeom_ufunc, scipy.stats._boost.hypergeom_ufunc, scipy.stats.ncf_ufunc, scipy.stats._boost.ncf_ufunc, scipy.stats.ncx2_ufunc, scipy.stats._boost.ncx2_ufunc, scipy.stats.nct_ufunc, scipy.stats._boost.nct_ufunc, scipy.stats.skewnorm_ufunc, scipy.stats._boost.skewnorm_ufunc, scipy.stats.invgauss_ufunc, scipy.stats._boost.invgauss_ufunc, scipy.interpolate._fitpack, scipy.interpolate.dfitpack, scipy.interpolate._bspl, scipy.interpolate._ppoly, scipy.interpolate.interpnd, scipy.interpolate._rbfinterp_pythran, scipy.interpolate._rgi_cython, scipy.stats._biasedurn, scipy.stats._levy_stable.levyst, scipy.stats._stats_pythran, scipy._lib._uarray._uarray, scipy.stats._statlib, scipy.stats._sobol, scipy.stats._qmc_cy, scipy.stats._mvn, scipy.stats._rcont.rcont, scipy.signal._sigtools, scipy.signal._max_len_seq_inner, scipy.signal._upfirdn_apply, scipy.signal._spline, scipy.signal._sosfilt, scipy.signal._spectral, scipy.signal._peak_finding_utils, markupsafe._speedups, lxml._elementpath, lxml.etree, sqlalchemy.cyextension.collections, sqlalchemy.cyextension.immutabledict, sqlalchemy.cyextension.processors, sqlalchemy.cyextension.resultproxy, sqlalchemy.cyextension.util, matplotlib._image, tables._comp_lzo, tables._comp_bzip2, tables.utilsextension, tables.hdf5extension, tables.linkextension, tables.lrucacheextension, tables.tableextension, tables.indexesextension, pandas.io.sas._byteswap, psycopg2._psycopg (total: 191)
Both these tests and this functionality were introduced in c855be8 (cc @jonashaag).
Expected Behavior
All tests pass.
Installed Versions
INSTALLED VERSIONS
commit : 0f43794
python : 3.11.4.final.0
python-bits : 32
OS : Linux
OS-release : 5.15.117-gentoo-dist
Version : #1 SMP Wed Jun 14 13:14:49 -00 2023
machine : armv8l
processor : ARMv8 Processor rev 1 (v8l)
byteorder : little
LC_ALL : None
LANG : C.UTF8
LOCALE : en_US.UTF-8
pandas : 2.0.3
numpy : 1.25.2
pytz : 2023.3
dateutil : 2.8.2
setuptools : 68.0.0
pip : None
Cython : 3.0.0
pytest : 7.4.0
hypothesis : 6.82.0
sphinx : None
blosc : 1.11.1
feather : None
xlsxwriter : 3.1.2
lxml.etree : 4.9.3
html5lib : 1.1
pymysql : 1.4.6
psycopg2 : 2.9.4
jinja2 : 3.1.2
IPython : None
pandas_datareader: None
bs4 : 4.12.2
bottleneck : 1.3.7
brotli : None
fastparquet : None
fsspec : None
gcsfs : None
matplotlib : 3.7.2
numba : None
numexpr : 2.8.4
odfpy : None
openpyxl : 3.1.2
pandas_gbq : None
pyarrow : None
pyreadstat : None
pyxlsb : None
s3fs : None
scipy : 1.11.1
snappy : None
sqlalchemy : 2.0.19
tables : 3.8.0
tabulate : 0.9.0
xarray : 2023.7.0
xlrd : 2.0.1
zstandard : None
tzdata : None
qtpy : None
pyqt5 : None