[Debian-pan-maintainers] Bug#1128667: nabu: FTBFS: Test test_task_processor_simple fails
Santiago Vila
sanvila at debian.org
Sun Feb 22 11:54:56 GMT 2026
Package: src:nabu
Version: 2025.2.0-1
Severity: serious
Tags: ftbfs forky sid
Dear maintainer:
During a rebuild of all packages in unstable, this package failed to build.
Below you will find the last part of the build log (probably the most
relevant part, but not necessarily). If required, the full build log
is available here:
https://people.debian.org/~sanvila/build-logs/202602/
About the archive rebuild: The build was made on virtual machines from AWS,
using sbuild and a reduced chroot with only build-essential packages.
If you cannot reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.
If this is really a bug in one of the build-depends, please use
reassign and add an affects on src:nabu, so that this is still
visible in the BTS web page for this package.
Thanks.
--------------------------------------------------------------------------------
[...]
file = <_io.BytesIO object at 0x7f94e3fd26b0>, protocol = None
def dump(obj, file, protocol=None):
'''Replacement for pickle.dump() using ForkingPickler.'''
> ForkingPickler(file, protocol).dump(obj)
E _pickle.PicklingError: Can't pickle local object <class 'nabu.pipeline.tests.test_tasks.test_task_processor_simple.<locals>.DummyTask'>
E when serializing tuple item 2
E when serializing dict item '_args'
E when serializing multiprocessing.context.Process state
E when serializing multiprocessing.context.Process object
/usr/lib/python3.14/multiprocessing/reduction.py:60: PicklingError
_________________________ test_task_processor_callback _________________________
def test_task_processor_callback():
class MyProcessingClass:
def __init__(self, a):
self.a = a
self.previous_task = None
def process_task(self, task):
print(f"[{os.getpid()}] Got task: {task} (previous was: {self.previous_task})")
sleep(0.5)
result = f"{os.getpid()} did {task}"
self.previous_task = task
return result
tp = TaskProcessor(MyProcessingClass, n_processes=2, worker_init_args={"a": 1})
> tp.start_workers()
nabu/pipeline/tests/test_tasks.py:49:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
nabu/pipeline/tasks.py:120: in start_workers
p.start()
/usr/lib/python3.14/multiprocessing/process.py:121: in start
self._popen = self._Popen(self)
^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/context.py:224: in _Popen
return _default_context.get_context().Process._Popen(process_obj)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/context.py:300: in _Popen
return Popen(process_obj)
^^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/popen_forkserver.py:35: in __init__
super().__init__(process_obj)
/usr/lib/python3.14/multiprocessing/popen_fork.py:20: in __init__
self._launch(process_obj)
/usr/lib/python3.14/multiprocessing/popen_forkserver.py:47: in _launch
reduction.dump(process_obj, buf)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
obj = <Process name='Process-6' parent=91 initial>
file = <_io.BytesIO object at 0x7f94e36e05e0>, protocol = None
def dump(obj, file, protocol=None):
'''Replacement for pickle.dump() using ForkingPickler.'''
> ForkingPickler(file, protocol).dump(obj)
E _pickle.PicklingError: Can't pickle local object <class 'nabu.pipeline.tests.test_tasks.test_task_processor_callback.<locals>.MyProcessingClass'>
E when serializing tuple item 2
E when serializing dict item '_args'
E when serializing multiprocessing.context.Process state
E when serializing multiprocessing.context.Process object
/usr/lib/python3.14/multiprocessing/reduction.py:60: PicklingError
___________________________ test_with_worker_failure ___________________________
def test_with_worker_failure():
class DummyProcessing:
def __init__(self, sleep_time):
self.s = sleep_time
def process_task(self, task):
sleep(self.s)
if task.get("fail", False):
raise ValueError("kaboom")
i = task.get("task_id", 1)
return {"result": i + 10}
tp = TaskProcessor(DummyProcessing, n_processes=2, worker_init_args=(0.1,))
> tp.start_workers()
nabu/pipeline/tests/test_tasks.py:80:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
nabu/pipeline/tasks.py:120: in start_workers
p.start()
/usr/lib/python3.14/multiprocessing/process.py:121: in start
self._popen = self._Popen(self)
^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/context.py:224: in _Popen
return _default_context.get_context().Process._Popen(process_obj)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/context.py:300: in _Popen
return Popen(process_obj)
^^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/popen_forkserver.py:35: in __init__
super().__init__(process_obj)
/usr/lib/python3.14/multiprocessing/popen_fork.py:20: in __init__
self._launch(process_obj)
/usr/lib/python3.14/multiprocessing/popen_forkserver.py:47: in _launch
reduction.dump(process_obj, buf)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
obj = <Process name='Process-7' parent=91 initial>
file = <_io.BytesIO object at 0x7f94e3fb7470>, protocol = None
def dump(obj, file, protocol=None):
'''Replacement for pickle.dump() using ForkingPickler.'''
> ForkingPickler(file, protocol).dump(obj)
E _pickle.PicklingError: Can't pickle local object <class 'nabu.pipeline.tests.test_tasks.test_with_worker_failure.<locals>.DummyProcessing'>
E when serializing tuple item 2
E when serializing dict item '_args'
E when serializing multiprocessing.context.Process state
E when serializing multiprocessing.context.Process object
/usr/lib/python3.14/multiprocessing/reduction.py:60: PicklingError
__________________________ TestUnits.test_valid_input __________________________
self = <nabu.resources.tests.test_units.TestUnits object at 0x7f9501ad3110>
def test_valid_input(self):
for test_str, expected_failure in self.expected_failures.items():
with pytest.raises(type(expected_failure)) as e_info:
get_quantities_and_units(test_str)
> assert e_info.value.args[0] == str(expected_failure)
E AssertionError: assert 'too many val...ted 2, got 3)' == 'too many val... (expected 2)'
E
E - too many values to unpack (expected 2)
E + too many values to unpack (expected 2, got 3)
E ? +++++++
nabu/resources/tests/test_units.py:47: AssertionError
=============================== warnings summary ===============================
../../../../../../usr/lib/python3/dist-packages/pytools/persistent_dict.py:52
/usr/lib/python3/dist-packages/pytools/persistent_dict.py:52: RecommendedHashNotFoundWarning: Unable to import recommended hash 'siphash24.siphash13', falling back to 'hashlib.sha256'. Run 'python3 -m pip install siphash24' to install the recommended hash.
warn("Unable to import recommended hash 'siphash24.siphash13', "
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED nabu/pipeline/tests/test_tasks.py::test_task_processor_simple - _pickl...
FAILED nabu/pipeline/tests/test_tasks.py::test_task_processor_callback - _pic...
FAILED nabu/pipeline/tests/test_tasks.py::test_with_worker_failure - _pickle....
FAILED nabu/resources/tests/test_units.py::TestUnits::test_valid_input - Asse...
=========== 4 failed, 3596 passed, 380 skipped, 1 warning in 12.53s ============
E: pybuild pybuild:483: test: plugin pyproject failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_nabu/build; python3.14 -m pytest
I: pybuild base:384: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_nabu/build; python3.13 -m pytest
============================= test session starts ==============================
platform linux -- Python 3.13.12, pytest-9.0.2, pluggy-1.6.0
rootdir: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_nabu/build
configfile: pyproject.toml
plugins: typeguard-4.4.4
collected 3979 items / 1 skipped
nabu/app/tests/test_reduce_dark_flat.py ......... [ 0%]
nabu/estimation/tests/test_alignment.py ... [ 0%]
nabu/estimation/tests/test_cor.py ssssssssssssssssssssssssssssssss [ 1%]
nabu/estimation/tests/test_focus.py sss [ 1%]
nabu/estimation/tests/test_motion_estimation.py sssss [ 1%]
nabu/estimation/tests/test_tilt.py ss [ 1%]
nabu/estimation/tests/test_translation.py ss [ 1%]
nabu/io/tests/test_cast_volume.py .......... [ 1%]
nabu/io/tests/test_readers.py sssssssss..ss..ss [ 2%]
nabu/io/tests/test_remove_volume.py .... [ 2%]
nabu/io/tests/test_writers.py ssss [ 2%]
nabu/misc/tests/test_binning.py . [ 2%]
nabu/pipeline/tests/test_estimators.py sssssss [ 2%]
nabu/pipeline/tests/test_tasks.py ... [ 2%]
nabu/preproc/tests/test_ccd_corr.py ss [ 2%]
nabu/preproc/tests/test_ctf.py ssss [ 2%]
nabu/preproc/tests/test_double_flatfield.py .s [ 2%]
nabu/preproc/tests/test_flatfield.py ...s..s.s.s.s [ 3%]
nabu/preproc/tests/test_paganin.py ssss [ 3%]
nabu/preproc/tests/test_pcaflats.py ssssss [ 3%]
nabu/preproc/tests/test_vshift.py .s [ 3%]
nabu/processing/tests/test_fft.py ssssssssssssssssssssssssssssssssssssss [ 4%]
sssssssssss [ 4%]
nabu/processing/tests/test_fftshift.py ssssssssssss [ 4%]
nabu/processing/tests/test_histogram.py ss [ 4%]
nabu/processing/tests/test_medfilt.py ssssssssssssssssssssssssssssssss [ 5%]
nabu/processing/tests/test_muladd.py ss [ 5%]
nabu/processing/tests/test_padding.py ss [ 5%]
nabu/processing/tests/test_roll.py sssssssss [ 6%]
nabu/processing/tests/test_rotation.py ...............sssssssssssssss [ 6%]
nabu/processing/tests/test_transpose.py ssssssssssss [ 7%]
nabu/processing/tests/test_unsharp.py ssss [ 7%]
nabu/reconstruction/tests/test_cone.py ssssssssssss [ 7%]
nabu/reconstruction/tests/test_deringer.py ssssss [ 7%]
nabu/reconstruction/tests/test_fbp.py ssssssssssssssssssssss [ 8%]
nabu/reconstruction/tests/test_filtering.py ssssssssssssssssssssssssssss [ 8%]
ssssssssssssssssssss [ 9%]
nabu/reconstruction/tests/test_halftomo.py ssssssssss [ 9%]
nabu/reconstruction/tests/test_mlem.py ssssssss [ 9%]
nabu/reconstruction/tests/test_projector.py ssss [ 10%]
nabu/reconstruction/tests/test_reconstructor.py ssssssssssssssssssssssss [ 10%]
[ 10%]
nabu/reconstruction/tests/test_sino_normalization.py ssss [ 10%]
nabu/resources/tests/test_dataset_analyzer.py s [ 10%]
nabu/resources/tests/test_extract.py . [ 10%]
nabu/resources/tests/test_nxflatfield.py sss [ 10%]
nabu/resources/tests/test_units.py .. [ 10%]
nabu/stitching/tests/test_alignment.py s. [ 10%]
nabu/stitching/tests/test_config.py .................................... [ 11%]
........................................................................ [ 13%]
........................................................................ [ 15%]
........................................................................ [ 17%]
........................................................................ [ 19%]
........................................................................ [ 20%]
........................................................................ [ 22%]
........................................................................ [ 24%]
........................................................................ [ 26%]
........................................................................ [ 28%]
........................................................................ [ 29%]
........................................................................ [ 31%]
........................................................................ [ 33%]
........................................................................ [ 35%]
........................................................................ [ 37%]
........................................................................ [ 39%]
........................................................................ [ 40%]
........................................................................ [ 42%]
........................................................................ [ 44%]
........................................................................ [ 46%]
........................................................................ [ 48%]
........................................................................ [ 49%]
........................................................................ [ 51%]
........................................................................ [ 53%]
........................................................................ [ 55%]
........................................................................ [ 57%]
........................................................................ [ 58%]
........................................................................ [ 60%]
........................................................................ [ 62%]
........................................................................ [ 64%]
........................................................................ [ 66%]
........................................................................ [ 67%]
........................................................................ [ 69%]
........................................................................ [ 71%]
........................................................................ [ 73%]
........................................................................ [ 75%]
........................................................................ [ 77%]
........................................................................ [ 78%]
........................................................................ [ 80%]
........................................................................ [ 82%]
........................................................................ [ 84%]
........................................................................ [ 86%]
........................................................................ [ 87%]
........................................................................ [ 89%]
........................................................................ [ 91%]
........................................................................ [ 93%]
........................................................................ [ 95%]
........................................................................ [ 96%]
...................................................... [ 98%]
nabu/stitching/tests/test_frame_composition.py .. [ 98%]
nabu/stitching/tests/test_overlap.py ........sss...... [ 98%]
nabu/stitching/tests/test_sample_normalization.py . [ 98%]
nabu/stitching/tests/test_slurm_utils.py ..s [ 98%]
nabu/stitching/tests/test_utils.py ss [ 98%]
nabu/stitching/tests/test_y_preprocessing_stitching.py ........ [ 99%]
nabu/stitching/tests/test_z_postprocessing_stitching.py ................ [ 99%]
..... [ 99%]
nabu/stitching/tests/test_z_preprocessing_stitching.py ......... [ 99%]
nabu/stitching/utils/tests/test_post-processing.py ...... [100%]
=============================== warnings summary ===============================
../../../../../../usr/lib/python3/dist-packages/pytools/persistent_dict.py:52
/usr/lib/python3/dist-packages/pytools/persistent_dict.py:52: RecommendedHashNotFoundWarning: Unable to import recommended hash 'siphash24.siphash13', falling back to 'hashlib.sha256'. Run 'python3 -m pip install siphash24' to install the recommended hash.
warn("Unable to import recommended hash 'siphash24.siphash13', "
nabu/pipeline/tests/test_tasks.py::test_task_processor_simple
nabu/pipeline/tests/test_tasks.py::test_task_processor_callback
nabu/pipeline/tests/test_tasks.py::test_task_processor_callback
nabu/pipeline/tests/test_tasks.py::test_with_worker_failure
nabu/pipeline/tests/test_tasks.py::test_with_worker_failure
/usr/lib/python3.13/multiprocessing/popen_fork.py:67: DeprecationWarning: This process (pid=190) is multi-threaded, use of fork() may lead to deadlocks in the child.
self.pid = os.fork()
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
================ 3600 passed, 380 skipped, 6 warnings in 14.94s ================
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.14 3.13" returned exit code 13
make: *** [debian/rules:6: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess failed with exit status 2
--------------------------------------------------------------------------------
More information about the Debian-pan-maintainers
mailing list