Bus error (core dumped) on armhf

Bug #1991621 reported by Bryce Harrington
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
scikit-learn (Ubuntu)
Fix Released
Undecided
Unassigned

Bug Description

scikit-learn 1.1.2+dfsg-6 fails autopkgtest on armhf, which appears to have started around 1.1.2+dfsg-3. The previous version, 0.23.x, was passing reliably.

This issue seems not to have a bug report in Debian, however bus errors are mentioned on both Deb: #1008369 and #1003165. Both bugs have extensive discussion, however it's unclear if a fix is in sight; main suggestions appear to be to drop the architecture or skip the test case.

"""
The new version of scikit-learn has a bus error in one of its
autopkgtests on armhf. This was allowed to regress in Debian during a
numpy transition almost a year ago. I'm not sure whether it is worth
the time to try to fix this, or simply skip the failing test.
"""

[Test Log]
> ../../../usr/lib/python3/dist-packages/sklearn/metrics/tests/test_dist_metrics.py::test_cdist[X10-X20-metric_param_grid9] PASSED
> ../../../usr/lib/python3/dist-packages/sklearn/metrics/tests/test_dist_metrics.py::test_cdist[X11-X21-metric_param_grid0] Fatal Python error: Bus error
>
> Current thread 0xf7cda020 (most recent call first):
> File "/usr/lib/python3/dist-packages/sklearn/metrics/tests/test_dist_metrics.py", line 80 in check_cdist
> File "/usr/lib/python3/dist-packages/sklearn/metrics/tests/test_dist_metrics.py", line 99 in test_cdist
> File "/usr/lib/python3/dist-packages/_pytest/python.py", line 192 in pytest_pyfunc_call
> File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 39 in _multicall
> File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 80 in _hookexec
> File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 265 in __call__
> File "/usr/lib/python3/dist-packages/_pytest/python.py", line 1761 in runtest
> File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 166 in pytest_runtest_call
> File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 39 in _multicall
> File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 80 in _hookexec
> File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 265 in __call__
> File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 259 in <lambda>
> File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 338 in from_call
> File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 258 in call_runtest_hook
> File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 219 in call_and_report
> File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 130 in runtestprotocol
> File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 111 in pytest_runtest_protocol
> File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 39 in _multicall
> File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 80 in _hookexec
> File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 265 in __call__
> File "/usr/lib/python3/dist-packages/_pytest/main.py", line 347 in pytest_runtestloop
> File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 39 in _multicall
> File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 80 in _hookexec
> File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 265 in __call__
> File "/usr/lib/python3/dist-packages/_pytest/main.py", line 322 in _main
> File "/usr/lib/python3/dist-packages/_pytest/main.py", line 268 in wrap_session
> File "/usr/lib/python3/dist-packages/_pytest/main.py", line 315 in pytest_cmdline_main
> File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 39 in _multicall
> File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 80 in _hookexec
> File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 265 in __call__
> File "/usr/lib/python3/dist-packages/_pytest/config/__init__.py", line 164 in main
> File "/usr/lib/python3/dist-packages/_pytest/config/__init__.py", line 187 in console_main
> File "/usr/lib/python3/dist-packages/pytest/__main__.py", line 5 in <module>
> File "/usr/lib/python3.10/runpy.py", line 86 in _run_code
> File "/usr/lib/python3.10/runpy.py", line 196 in _run_module_as_main
>
> Extension modules: sklearn.__check_build._check_build, numpy.core._multiarray_umath, numpy.core._multiarray_tests, numpy.linalg.lapack_lite, 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, scipy._lib._ccallback_c, scipy.sparse._sparsetools, scipy.sparse._csparsetools, 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, sklearn.utils.murmurhash, lz4._version, lz4.frame._frame, scipy.spatial._ckdtree, scipy._lib.messagestream, scipy.spatial._qhull, scipy.spatial._voronoi, scipy.linalg._fblas, scipy.linalg._flapack, scipy.linalg._cythonized_array_utils, scipy.linalg._flinalg, scipy.linalg._solve_toeplitz, scipy.linalg._matfuncs_sqrtm_triu, scipy.linalg.cython_blas, scipy.linalg.cython_lapack, scipy.linalg._decomp_update, 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.sparse.linalg._isolve._iterative, scipy.sparse.linalg._dsolve._superlu, scipy.sparse.linalg._eigen.arpack._arpack, 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_module, scipy.integrate._odepack, scipy.integrate._quadpack, scipy.integrate._vode, scipy.integrate._dop, scipy.integrate._lsoda, scipy.interpolate._fitpack, scipy.interpolate.dfitpack, scipy.interpolate._bspl, scipy.interpolate._ppoly, scipy.interpolate.interpnd, scipy.special.cython_special, scipy.stats._stats, beta_ufunc, scipy.stats._boost.beta_ufunc, binom_ufunc, scipy.stats._boost.binom_ufunc, nbinom_ufunc, scipy.stats._boost.nbinom_ufunc, hypergeom_ufunc, scipy.stats._boost.hypergeom_ufunc, scipy.stats._biasedurn, scipy.stats._statlib, scipy.stats._mvn, scipy.stats._sobol, scipy.stats._qmc_cy, scipy.stats._unuran.unuran_wrapper, sklearn.utils._openmp_helpers, sklearn.utils._logistic_sigmoid, sklearn.utils.sparsefuncs_fast, sklearn.preprocessing._csr_polynomial_expansion, sklearn.utils._vector_sentinel, sklearn.feature_extraction._hashing_fast, sklearn.utils._random, sklearn.datasets._svmlight_format_fast, scipy.io.matlab._mio_utils, scipy.io.matlab._streams, scipy.io.matlab._mio5_utils, matplotlib._c_internal_utils, PIL._imaging, matplotlib._path, kiwisolver, sklearn._loss._loss, sklearn.utils._readonly_array_wrapper, sklearn.utils._typedefs, sklearn.metrics._dist_metrics, sklearn.metrics.cluster._expected_mutual_info_fast, sklearn.utils._cython_blas, sklearn.utils._heap, sklearn.utils._sorting, sklearn.metrics._pairwise_distances_reduction, sklearn.metrics._pairwise_fast, sklearn.neighbors._partition_nodes, sklearn.neighbors._ball_tree, sklearn.neighbors._kd_tree, sklearn.decomposition._cdnmf_fast, sklearn.utils._seq_dataset, sklearn.utils.arrayfuncs, sklearn.linear_model._cd_fast, sklearn.utils._weight_vector, sklearn.linear_model._sgd_fast, sklearn.linear_model._sag_fast, sklearn.svm._libsvm, sklearn.svm._liblinear, sklearn.svm._libsvm_sparse, sklearn.decomposition._online_lda_fast, sklearn._isotonic, sklearn.manifold._utils, sklearn.tree._utils, sklearn.tree._tree, sklearn.tree._splitter, sklearn.tree._criterion, sklearn.neighbors._quad_tree, sklearn.manifold._barnes_hut_tsne, sklearn.cluster._k_means_common, sklearn.cluster._k_means_minibatch, sklearn.cluster._k_means_lloyd, sklearn.cluster._k_means_elkan, sklearn.utils._fast_dict, sklearn.cluster._hierarchical_fast, sklearn.cluster._dbscan_inner, scipy.cluster._vq, scipy.cluster._hierarchy, scipy.cluster._optimal_leaf_ordering, sklearn.ensemble._gradient_boosting, sklearn.ensemble._hist_gradient_boosting.common, sklearn.ensemble._hist_gradient_boosting._gradient_boosting, sklearn.ensemble._hist_gradient_boosting._binning, sklearn.ensemble._hist_gradient_boosting._bitset, sklearn.ensemble._hist_gradient_boosting.splitting, sklearn.ensemble._hist_gradient_boosting.histogram, sklearn.ensemble._hist_gradient_boosting._predictor, sklearn.ensemble._hist_gradient_boosting.utils, scipy._lib._uarray._uarray, sklearn.svm._newrand, matplotlib._image (total: 169)
> Bus error (core dumped)
> autopkgtest [08:04:45]: test python3: -----------------------]

Bryce Harrington (bryce)
description: updated
Revision history for this message
Seth Arnold (seth-arnold) wrote :

I wonder if this gets better by setting the parameter aligned=True?

def create_memmap_backed_data(data, mmap_mode="r", return_folder=False, aligned=False):

https://sources.debian.org/src/scikit-learn/1.1.2+dfsg-6/sklearn/utils/_testing.py/?hl=639#L639

Maybe just change this *here*; False feels like a *very* silly default. x86 can cope with unaligned by going VERY SLOW. arm64 when emulating armhf tends to just SIGBUS and tell you not to do that. I don't know any other architectures, but unaligned is usually bad news.

Thanks

Graham Inggs (ginggs)
tags: added: update-excuse
Revision history for this message
Graham Inggs (ginggs) wrote :

Seth, I tested your suggestion in a PPA and the tests passed on armhf, thanks! I've uploaded now.

Changed in scikit-learn (Ubuntu):
status: New → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package scikit-learn - 1.1.2+dfsg-6ubuntu1

---------------
scikit-learn (1.1.2+dfsg-6ubuntu1) kinetic; urgency=medium

  * Align create_memmap_backed_data() by default to avoid a
    bus error on armhf, thanks Seth Arnold (LP: #1991621)

 -- Graham Inggs <email address hidden> Sat, 08 Oct 2022 09:32:22 +0000

Changed in scikit-learn (Ubuntu):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.