these 3 derivations will be built: /nix/store/ybvw5f6xka1vy6s1kkv7b6k9scyiz93l-python3.14-nixbot-effects.drv /nix/store/sxb1c0i0l6yb1lxrb2ygvklhlkcxmpga-python3.14-nixbot-cli.drv /nix/store/37l3lsyhm12jzwkh1if1mpdmvyh48gc5-python3.14-nixbot-tests.drv building '/nix/store/37l3lsyhm12jzwkh1if1mpdmvyh48gc5-python3.14-nixbot-tests.drv' on 'ssh-ng://customer@mac02' building '/nix/store/37l3lsyhm12jzwkh1if1mpdmvyh48gc5-python3.14-nixbot-tests.drv' python3.14-nixbot-tests> Sourcing python-remove-tests-dir-hook python3.14-nixbot-tests> Sourcing python-catch-conflicts-hook.sh python3.14-nixbot-tests> Sourcing python-remove-bin-bytecode-hook.sh python3.14-nixbot-tests> Sourcing pypa-build-hook python3.14-nixbot-tests> Using pypaBuildPhase python3.14-nixbot-tests> Sourcing python-runtime-deps-check-hook python3.14-nixbot-tests> Using pythonRuntimeDepsCheckHook python3.14-nixbot-tests> Sourcing pypa-install-hook python3.14-nixbot-tests> Using pypaInstallPhase python3.14-nixbot-tests> Sourcing python-imports-check-hook.sh python3.14-nixbot-tests> Using pythonImportsCheckPhase python3.14-nixbot-tests> Sourcing python-namespaces-hook python3.14-nixbot-tests> Sourcing python-catch-conflicts-hook.sh python3.14-nixbot-tests> Sourcing pytest-check-hook python3.14-nixbot-tests> Using pytestCheckPhase python3.14-nixbot-tests> Running phase: unpackPhase python3.14-nixbot-tests> unpacking source archive /nix/store/21vxlka8ywrq9b7kfs1l64jg4fgp8851-nixbot python3.14-nixbot-tests> source root is nixbot python3.14-nixbot-tests> setting SOURCE_DATE_EPOCH to timestamp 315619200 of file "nixbot/pyproject.toml" python3.14-nixbot-tests> Running phase: patchPhase python3.14-nixbot-tests> Running phase: updateAutotoolsGnuConfigScriptsPhase python3.14-nixbot-tests> Running phase: configurePhase python3.14-nixbot-tests> no configure script, doing nothing python3.14-nixbot-tests> Running phase: buildPhase python3.14-nixbot-tests> Executing pypaBuildPhase python3.14-nixbot-tests> Creating a wheel... python3.14-nixbot-tests> pypa build flags: --no-isolation --outdir dist/ --wheel python3.14-nixbot-tests> * Getting build dependencies for wheel... python3.14-nixbot-tests> * Building wheel... python3.14-nixbot-tests> Successfully built nixbot-0.0.1-py3-none-any.whl python3.14-nixbot-tests> Finished creating a wheel... python3.14-nixbot-tests> Finished executing pypaBuildPhase python3.14-nixbot-tests> Running phase: pythonRuntimeDepsCheckHook python3.14-nixbot-tests> Executing pythonRuntimeDepsCheck python3.14-nixbot-tests> Checking runtime dependencies for nixbot-0.0.1-py3-none-any.whl python3.14-nixbot-tests> Finished executing pythonRuntimeDepsCheck python3.14-nixbot-tests> Running phase: installPhase python3.14-nixbot-tests> Executing pypaInstallPhase python3.14-nixbot-tests> Successfully installed nixbot-0.0.1-py3-none-any.whl python3.14-nixbot-tests> Finished executing pypaInstallPhase python3.14-nixbot-tests> Running phase: pythonOutputDistPhase python3.14-nixbot-tests> Executing pythonOutputDistPhase python3.14-nixbot-tests> Finished executing pythonOutputDistPhase python3.14-nixbot-tests> Running phase: fixupPhase python3.14-nixbot-tests> checking for references to /nix/var/nix/builds/nix-37580-2158920916/ in /nix/store/qn7ah57r94b29g2kj9khqvg5691ykdfb-python3.14-nixbot-tests... python3.14-nixbot-tests> patching script interpreter paths in /nix/store/qn7ah57r94b29g2kj9khqvg5691ykdfb-python3.14-nixbot-tests python3.14-nixbot-tests> stripping (with command strip and flags -S) in /nix/store/qn7ah57r94b29g2kj9khqvg5691ykdfb-python3.14-nixbot-tests/lib /nix/store/qn7ah57r94b29g2kj9khqvg5691ykdfb-python3.14-nixbot-tests/bin python3.14-nixbot-tests> checking for references to /nix/var/nix/builds/nix-37580-2158920916/ in /nix/store/4w0n7krjl94kwcxv7cfl564hhdjp4wf1-python3.14-nixbot-tests-dist... python3.14-nixbot-tests> patching script interpreter paths in /nix/store/4w0n7krjl94kwcxv7cfl564hhdjp4wf1-python3.14-nixbot-tests-dist python3.14-nixbot-tests> Rewriting #!/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 to #!/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6 python3.14-nixbot-tests> wrapping `/nix/store/qn7ah57r94b29g2kj9khqvg5691ykdfb-python3.14-nixbot-tests/bin/nixbot'... python3.14-nixbot-tests> Executing pythonRemoveTestsDir python3.14-nixbot-tests> Finished executing pythonRemoveTestsDir python3.14-nixbot-tests> Running phase: installCheckPhase python3.14-nixbot-tests> no Makefile or custom installCheckPhase, doing nothing python3.14-nixbot-tests> Running phase: pythonCatchConflictsPhase python3.14-nixbot-tests> Running phase: pythonRemoveBinBytecodePhase python3.14-nixbot-tests> Running phase: pythonImportsCheckPhase python3.14-nixbot-tests> Executing pythonImportsCheckPhase python3.14-nixbot-tests> Running phase: pytestCheckPhase python3.14-nixbot-tests> Executing pytestCheckPhase python3.14-nixbot-tests> pytest flags: -m pytest --numprocesses=10 python3.14-nixbot-tests> /nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> ============================= test session starts ============================== python3.14-nixbot-tests> platform darwin -- Python 3.14.6, pytest-9.1.1, pluggy-1.6.0 python3.14-nixbot-tests> benchmark: 5.2.3 (defaults: timer=time.perf_counter disable_gc=False min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=100000) python3.14-nixbot-tests> rootdir: /nix/var/nix/builds/nix-37580-2158920916/nixbot python3.14-nixbot-tests> configfile: pyproject.toml python3.14-nixbot-tests> plugins: asyncio-1.4.0, timeout-2.4.0, xdist-3.8.0, benchmark-5.2.3, anyio-4.14.2 python3.14-nixbot-tests> asyncio: mode=Mode.AUTO, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function python3.14-nixbot-tests> timeout: 60.0s python3.14-nixbot-tests> timeout method: signal python3.14-nixbot-tests> timeout func_only: False python3.14-nixbot-tests> initialized: 7/10 workers/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> initialized: 8/10 workers/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> initialized: 9/10 workers/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> ready: 3/10 workers/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> ready: 4/10 workers/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> ready: 5/10 workers/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> ready: 6/10 workers/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> ready: 7/10 workers/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> ready: 8/10 workers/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> ready: 9/10 workers/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> 10 workers [831 items] python3.14-nixbot-tests> .................s.s.ssss.sss........................................... [ 8%] python3.14-nixbot-tests> ........................................................................ [ 17%] python3.14-nixbot-tests> ........................................................................ [ 25%] python3.14-nixbot-tests> ........................................s............................... [ 34%] python3.14-nixbot-tests> ..................................................s..................... [ 43%] python3.14-nixbot-tests> ........................................................................ [ 51%] python3.14-nixbot-tests> ...................................................ssssssssssss......... [ 60%] python3.14-nixbot-tests> ........................................................................ [ 69%] python3.14-nixbot-tests> ...................................................................ssss. [ 77%] python3.14-nixbot-tests> ...............................s.....................................s.. [ 86%] python3.14-nixbot-tests> .................F...................................................... [ 95%] python3.14-nixbot-tests> ....................................... [100%] python3.14-nixbot-tests> =================================== FAILURES =================================== python3.14-nixbot-tests> ________________ test_executor_hard_cancel_kills_process_group _________________ python3.14-nixbot-tests> [gw2] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 python3.14-nixbot-tests> python3.14-nixbot-tests> self = python3.14-nixbot-tests> cmd = ['nix', 'build', '--log-format', 'internal-json', '--option', 'keep-going', ...] python3.14-nixbot-tests> env = None python3.14-nixbot-tests> job = NixEvalJobSuccess(attr='foo', attr_path=['foo'], cache_status=, needed_builds=['/ni...o', warnings=[], traces=[], stats=None, outputs={'out': '/nix/store/foo-out'}, system='x86_64-linux', extra_value=None) python3.14-nixbot-tests> log_writer = LogWriter(path=PosixPath('/nix/var/nix/builds/nix-37580-2158920916/pytest-of-_nixbld10/pytest-0/popen-gw2/test_executo...ard.backend_c.ZstdCompressor object at 0x10a48a520>, _flush_lock=) python3.14-nixbot-tests> cwd = PosixPath('/nix/var/nix/builds/nix-37580-2158920916/pytest-of-_nixbld10/pytest-0/popen-gw2/test_executor_hard_cancel_kill0') python3.14-nixbot-tests> cancel_event = python3.14-nixbot-tests> on_built = None python3.14-nixbot-tests> python3.14-nixbot-tests> async def _run_nix( # noqa: PLR0913 python3.14-nixbot-tests> self, python3.14-nixbot-tests> cmd: list[str], python3.14-nixbot-tests> env: dict[str, str] | None, python3.14-nixbot-tests> job: NixEvalJobSuccess, python3.14-nixbot-tests> log_writer: LogWriter, python3.14-nixbot-tests> cwd: Path, python3.14-nixbot-tests> cancel_event: asyncio.Event, python3.14-nixbot-tests> on_built: Callable[[str], None] | None, python3.14-nixbot-tests> ) -> tuple[BuildOutcome, bool]: python3.14-nixbot-tests> group = await ProcessGroup.start( python3.14-nixbot-tests> cmd, python3.14-nixbot-tests> cwd=cwd, python3.14-nixbot-tests> env=env, python3.14-nixbot-tests> stdout=asyncio.subprocess.PIPE, python3.14-nixbot-tests> stderr=asyncio.subprocess.STDOUT, python3.14-nixbot-tests> limit=STREAM_LIMIT, python3.14-nixbot-tests> ) python3.14-nixbot-tests> proc = group.proc python3.14-nixbot-tests> assert proc.stdout is not None # noqa: S101 python3.14-nixbot-tests> python3.14-nixbot-tests> output_tail: deque[bytes] = deque(maxlen=100) python3.14-nixbot-tests> python3.14-nixbot-tests> capture = StructuredCapture(on_built=on_built) python3.14-nixbot-tests> log_writer.capture = capture python3.14-nixbot-tests> pump_task = asyncio.create_task( python3.14-nixbot-tests> _pump_output(proc.stdout, output_tail, log_writer, capture) python3.14-nixbot-tests> ) python3.14-nixbot-tests> cancel_task = asyncio.create_task(cancel_event.wait()) python3.14-nixbot-tests> try: python3.14-nixbot-tests> wait_task = asyncio.ensure_future(proc.wait()) python3.14-nixbot-tests> > done, _ = await asyncio.wait( python3.14-nixbot-tests> {wait_task, cancel_task}, python3.14-nixbot-tests> timeout=self.settings.timeout, python3.14-nixbot-tests> return_when=asyncio.FIRST_COMPLETED, python3.14-nixbot-tests> ) python3.14-nixbot-tests> python3.14-nixbot-tests> nixbot/executor.py:938: python3.14-nixbot-tests> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python3.14-nixbot-tests> /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/tasks.py:432: in wait python3.14-nixbot-tests> return await _wait(fs, timeout, return_when, loop) python3.14-nixbot-tests> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ python3.14-nixbot-tests> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python3.14-nixbot-tests> python3.14-nixbot-tests> fs = { wait_for=>} python3.14-nixbot-tests> timeout = 10800, return_when = 'FIRST_COMPLETED' python3.14-nixbot-tests> loop = <_UnixSelectorEventLoop running=False closed=False debug=False> python3.14-nixbot-tests> python3.14-nixbot-tests> async def _wait(fs, timeout, return_when, loop): python3.14-nixbot-tests> """Internal helper for wait(). python3.14-nixbot-tests> python3.14-nixbot-tests> The fs argument must be a collection of Futures. python3.14-nixbot-tests> """ python3.14-nixbot-tests> assert fs, 'Set of Futures is empty.' python3.14-nixbot-tests> waiter = loop.create_future() python3.14-nixbot-tests> timeout_handle = None python3.14-nixbot-tests> if timeout is not None: python3.14-nixbot-tests> timeout_handle = loop.call_later(timeout, _release_waiter, waiter) python3.14-nixbot-tests> counter = len(fs) python3.14-nixbot-tests> cur_task = current_task() python3.14-nixbot-tests> python3.14-nixbot-tests> def _on_completion(f): python3.14-nixbot-tests> nonlocal counter python3.14-nixbot-tests> counter -= 1 python3.14-nixbot-tests> if (counter <= 0 or python3.14-nixbot-tests> return_when == FIRST_COMPLETED or python3.14-nixbot-tests> return_when == FIRST_EXCEPTION and (not f.cancelled() and python3.14-nixbot-tests> f.exception() is not None)): python3.14-nixbot-tests> if timeout_handle is not None: python3.14-nixbot-tests> timeout_handle.cancel() python3.14-nixbot-tests> if not waiter.done(): python3.14-nixbot-tests> waiter.set_result(None) python3.14-nixbot-tests> futures.future_discard_from_awaited_by(f, cur_task) python3.14-nixbot-tests> python3.14-nixbot-tests> for f in fs: python3.14-nixbot-tests> f.add_done_callback(_on_completion) python3.14-nixbot-tests> futures.future_add_to_awaited_by(f, cur_task) python3.14-nixbot-tests> python3.14-nixbot-tests> try: python3.14-nixbot-tests> > await waiter python3.14-nixbot-tests> E asyncio.exceptions.CancelledError python3.14-nixbot-tests> python3.14-nixbot-tests> /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/tasks.py:521: CancelledError python3.14-nixbot-tests> python3.14-nixbot-tests> During handling of the above exception, another exception occurred: python3.14-nixbot-tests> python3.14-nixbot-tests> fut = > python3.14-nixbot-tests> timeout = 5 python3.14-nixbot-tests> python3.14-nixbot-tests> async def wait_for(fut, timeout): python3.14-nixbot-tests> """Wait for the single Future or coroutine to complete, with timeout. python3.14-nixbot-tests> python3.14-nixbot-tests> Coroutine will be wrapped in Task. python3.14-nixbot-tests> python3.14-nixbot-tests> Returns result of the Future or coroutine. When a timeout occurs, python3.14-nixbot-tests> it cancels the task and raises TimeoutError. To avoid the task python3.14-nixbot-tests> cancellation, wrap it in shield(). python3.14-nixbot-tests> python3.14-nixbot-tests> If the wait is cancelled, the task is also cancelled. python3.14-nixbot-tests> python3.14-nixbot-tests> If the task suppresses the cancellation and returns a value instead, python3.14-nixbot-tests> that value is returned. python3.14-nixbot-tests> python3.14-nixbot-tests> This function is a coroutine. python3.14-nixbot-tests> """ python3.14-nixbot-tests> # The special case for timeout <= 0 is for the following case: python3.14-nixbot-tests> # python3.14-nixbot-tests> # async def test_waitfor(): python3.14-nixbot-tests> # func_started = False python3.14-nixbot-tests> # python3.14-nixbot-tests> # async def func(): python3.14-nixbot-tests> # nonlocal func_started python3.14-nixbot-tests> # func_started = True python3.14-nixbot-tests> # python3.14-nixbot-tests> # try: python3.14-nixbot-tests> # await asyncio.wait_for(func(), 0) python3.14-nixbot-tests> # except asyncio.TimeoutError: python3.14-nixbot-tests> # assert not func_started python3.14-nixbot-tests> # else: python3.14-nixbot-tests> # assert False python3.14-nixbot-tests> # python3.14-nixbot-tests> # asyncio.run(test_waitfor()) python3.14-nixbot-tests> python3.14-nixbot-tests> python3.14-nixbot-tests> if timeout is not None and timeout <= 0: python3.14-nixbot-tests> fut = ensure_future(fut) python3.14-nixbot-tests> python3.14-nixbot-tests> if fut.done(): python3.14-nixbot-tests> return fut.result() python3.14-nixbot-tests> python3.14-nixbot-tests> await _cancel_and_wait(fut) python3.14-nixbot-tests> try: python3.14-nixbot-tests> return fut.result() python3.14-nixbot-tests> except exceptions.CancelledError as exc: python3.14-nixbot-tests> raise TimeoutError from exc python3.14-nixbot-tests> python3.14-nixbot-tests> async with timeouts.timeout(timeout): python3.14-nixbot-tests> > return await fut python3.14-nixbot-tests> ^^^^^^^^^ python3.14-nixbot-tests> python3.14-nixbot-tests> /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/tasks.py:488: python3.14-nixbot-tests> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python3.14-nixbot-tests> nixbot/executor.py:855: in build_attribute python3.14-nixbot-tests> outcome, transient = await self._run_once( python3.14-nixbot-tests> nixbot/executor.py:903: in _run_once python3.14-nixbot-tests> return await self._run_nix( python3.14-nixbot-tests> nixbot/executor.py:983: in _run_nix python3.14-nixbot-tests> await group.reap() python3.14-nixbot-tests> /nix/store/8wkhb22ifij0ip04jw4cm1qmmcgymvsj-python3.14-nixbot-effects/lib/python3.14/site-packages/nixbot_effects/proc.py:82: in reap python3.14-nixbot-tests> await self.proc.wait() python3.14-nixbot-tests> /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/subprocess.py:137: in wait python3.14-nixbot-tests> return await self._transport._wait() python3.14-nixbot-tests> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ python3.14-nixbot-tests> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python3.14-nixbot-tests> python3.14-nixbot-tests> self = <_UnixSubprocessTransport pid=40181 returncode=-9 stdout=<_UnixReadPipeTransport fd=16 polling>> python3.14-nixbot-tests> python3.14-nixbot-tests> async def _wait(self): python3.14-nixbot-tests> """Wait until the process exit and return the process return code. python3.14-nixbot-tests> python3.14-nixbot-tests> This method is a coroutine.""" python3.14-nixbot-tests> if self._returncode is not None: python3.14-nixbot-tests> return self._returncode python3.14-nixbot-tests> python3.14-nixbot-tests> waiter = self._loop.create_future() python3.14-nixbot-tests> self._exit_waiters.append(waiter) python3.14-nixbot-tests> > return await waiter python3.14-nixbot-tests> ^^^^^^^^^^^^ python3.14-nixbot-tests> E asyncio.exceptions.CancelledError python3.14-nixbot-tests> python3.14-nixbot-tests> /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_subprocess.py:255: CancelledError python3.14-nixbot-tests> python3.14-nixbot-tests> The above exception was the direct cause of the following exception: python3.14-nixbot-tests> python3.14-nixbot-tests> tmp_path = PosixPath('/nix/var/nix/builds/nix-37580-2158920916/pytest-of-_nixbld10/pytest-0/popen-gw2/test_executor_hard_cancel_kill0') python3.14-nixbot-tests> fake_nix = PosixPath('/nix/var/nix/builds/nix-37580-2158920916/pytest-of-_nixbld10/pytest-0/popen-gw2/test_executor_hard_cancel_kill0/control') python3.14-nixbot-tests> python3.14-nixbot-tests> async def test_executor_hard_cancel_kills_process_group( python3.14-nixbot-tests> tmp_path: Path, fake_nix: Path python3.14-nixbot-tests> ) -> None: python3.14-nixbot-tests> """Cancelling the build task itself (not via the cancel event) must python3.14-nixbot-tests> not leak the running nix process group. python3.14-nixbot-tests> python3.14-nixbot-tests> Group-kill semantics themselves are covered by python3.14-nixbot-tests> test_proc.test_reap_kills_whole_group. This checks the executor's python3.14-nixbot-tests> hard-cancel wiring (the finally path that also stops the log pump). python3.14-nixbot-tests> """ python3.14-nixbot-tests> fake_nix.write_text("hangpid") python3.14-nixbot-tests> pidfile = tmp_path / "pid" python3.14-nixbot-tests> python3.14-nixbot-tests> executor = NixBuildExecutor(FairScheduler(2), BuildSettings(log_dir=tmp_path)) python3.14-nixbot-tests> writer = LogWriter(path=tmp_path / "log.zst") python3.14-nixbot-tests> task = asyncio.create_task( python3.14-nixbot-tests> executor.build_attribute("b", mk_job(), writer, tmp_path) python3.14-nixbot-tests> ) python3.14-nixbot-tests> while ( # noqa: ASYNC110 — polling an external file is the point python3.14-nixbot-tests> not pidfile.exists() or not pidfile.read_text().strip() python3.14-nixbot-tests> ): python3.14-nixbot-tests> await asyncio.sleep(0.01) python3.14-nixbot-tests> task.cancel() python3.14-nixbot-tests> with contextlib.suppress(asyncio.CancelledError): python3.14-nixbot-tests> > await asyncio.wait_for(task, timeout=5) python3.14-nixbot-tests> python3.14-nixbot-tests> nixbot/tests/test_executor.py:430: python3.14-nixbot-tests> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python3.14-nixbot-tests> /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/tasks.py:487: in wait_for python3.14-nixbot-tests> async with timeouts.timeout(timeout): python3.14-nixbot-tests> ^^^^^^^^^^^^^^^^^^^^^^^^^ python3.14-nixbot-tests> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python3.14-nixbot-tests> python3.14-nixbot-tests> self = python3.14-nixbot-tests> exc_type = python3.14-nixbot-tests> exc_val = CancelledError(), exc_tb = python3.14-nixbot-tests> python3.14-nixbot-tests> async def __aexit__( python3.14-nixbot-tests> self, python3.14-nixbot-tests> exc_type: type[BaseException] | None, python3.14-nixbot-tests> exc_val: BaseException | None, python3.14-nixbot-tests> exc_tb: TracebackType | None, python3.14-nixbot-tests> ) -> bool | None: python3.14-nixbot-tests> assert self._state in (_State.ENTERED, _State.EXPIRING) python3.14-nixbot-tests> python3.14-nixbot-tests> if self._timeout_handler is not None: python3.14-nixbot-tests> self._timeout_handler.cancel() python3.14-nixbot-tests> self._timeout_handler = None python3.14-nixbot-tests> python3.14-nixbot-tests> if self._state is _State.EXPIRING: python3.14-nixbot-tests> self._state = _State.EXPIRED python3.14-nixbot-tests> python3.14-nixbot-tests> if self._task.uncancel() <= self._cancelling and exc_type is not None: python3.14-nixbot-tests> # Since there are no new cancel requests, we're python3.14-nixbot-tests> # handling this. python3.14-nixbot-tests> if issubclass(exc_type, exceptions.CancelledError): python3.14-nixbot-tests> > raise TimeoutError from exc_val python3.14-nixbot-tests> E TimeoutError python3.14-nixbot-tests> python3.14-nixbot-tests> /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/timeouts.py:115: TimeoutError python3.14-nixbot-tests> =========================== short test summary info ============================ python3.14-nixbot-tests> FAILED nixbot/tests/test_executor.py::test_executor_hard_cancel_kills_process_group - TimeoutError python3.14-nixbot-tests> ================== 1 failed, 801 passed, 29 skipped in 28.59s ================== error: build of '/nix/store/37l3lsyhm12jzwkh1if1mpdmvyh48gc5-python3.14-nixbot-tests.drv' on 'ssh-ng://customer@mac02' failed: Cannot build '/nix/store/37l3lsyhm12jzwkh1if1mpdmvyh48gc5-python3.14-nixbot-tests.drv'. Reason: builder failed with exit code 1. Output paths: /nix/store/4w0n7krjl94kwcxv7cfl564hhdjp4wf1-python3.14-nixbot-tests-dist /nix/store/qn7ah57r94b29g2kj9khqvg5691ykdfb-python3.14-nixbot-tests Last 25 log lines: > self, > exc_type: type[BaseException] | None, > exc_val: BaseException | None, > exc_tb: TracebackType | None, > ) -> bool | None: > assert self._state in (_State.ENTERED, _State.EXPIRING) > > if self._timeout_handler is not None: > self._timeout_handler.cancel() > self._timeout_handler = None > > if self._state is _State.EXPIRING: > self._state = _State.EXPIRED > > if self._task.uncancel() <= self._cancelling and exc_type is not None: > # Since there are no new cancel requests, we're > # handling this. > if issubclass(exc_type, exceptions.CancelledError): > > raise TimeoutError from exc_val > E TimeoutError > > /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/timeouts.py:115: TimeoutError > =========================== short test summary info ============================ > FAILED nixbot/tests/test_executor.py::test_executor_hard_cancel_kills_process_group - TimeoutError > ================== 1 failed, 801 passed, 29 skipped in 28.59s ================== For full logs, run: nix log /nix/store/37l3lsyhm12jzwkh1if1mpdmvyh48gc5-python3.14-nixbot-tests.drv error: Cannot build '/nix/store/37l3lsyhm12jzwkh1if1mpdmvyh48gc5-python3.14-nixbot-tests.drv'. Reason: builder failed with exit code 1. Output paths: /nix/store/4w0n7krjl94kwcxv7cfl564hhdjp4wf1-python3.14-nixbot-tests-dist /nix/store/qn7ah57r94b29g2kj9khqvg5691ykdfb-python3.14-nixbot-tests