New paste Repaste Download
[gw0] darwin -- Python 3.13.15 /Library/Frameworks/Python.framework/Versions/3.13/bin/python3.13
py = '3.14t'
    @requires_sudo
    @allpythons()
    def test_where_asyncio_fan_in(py):
        """Two independent tasks directly awaiting the same third task at once
        forces CPython to represent that task's task_awaited_by as a SET rather than
        a single reference -- the only way to exercise Austin's waiter-set walk, as
        opposed to the single-waiter fast path every other asyncio test target
        exercises. Rendered as a tree, a task with two waiters necessarily shows up
        twice (once nested under each waiter, since a fan-in can't be flattened into
        a single-parent tree) -- that duplication is the signal that both waiter
        edges from the set were actually walked and emitted."""
        with run_python(py, target("target_asyncio_fanin.py")) as p:
            expected = ("shared_worker", "fan-in-0", "fan-in-1")
>           result = retry_where(
                p.pid,
                lambda out: (
                    all(s in out for s in expected) and out.count("shared_worker") >= 2
                ),
            )
test/functional/test_asyncio.py:138:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
test/utils.py:471: in retry_where
    return austin("-w", str(pid))
           ^^^^^^^^^^^^^^^^^^^^^^
test/utils.py:337: in __call__
    return self.prepare_result(result, expect_fail, convert)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = Variant('austin')
result = CompletedProcess(args=['src/austin', '-w', '3657'], returncode=1, stdout='', stderr="\x1b[1m              _   _      \...ach to the given process. Make sure that the PID you have provided\nis valid and that the process is still running.\n")
expect_fail = False, convert = True
    def prepare_result(self, result, expect_fail, convert):
        if result.returncode in (-11, 139):  # SIGSEGV
            print(bt(self.path, result.pid))
    
        # If we are writing to stdout, check if we need to convert the stream
        if result.stdout.startswith(b"MOJ"):
            if convert:
                try:
                    result.samples, result.metadata = parse_mojo(result.stdout)
                except Exception as e:
                    dump_mojo(result.stdout)
                    raise e
        else:
            result.stdout = result.stdout.decode()
        result.stderr = result.stderr.decode()
    
        logs = collect_logs(self.name, result.pid)
        result.logs = logs
    
        if isinstance(expect_fail, bool) and expect_fail is bool(result.returncode):
            return result
    
        if isinstance(expect_fail, int) and result.returncode == expect_fail:
            return result
    
        print_logs(logs)
>       raise RuntimeError(
            f"Command {self.name} returned {result.returncode} "
            f"while expecting {expect_fail}. Output:\n{result.stdout}\n"
            f"Error:\n{result.stderr}"
        )
E       RuntimeError: Command austin returned 1 while expecting False. Output:
E       
E       Error:
E        [1m              _   _       [0m
E        [1m __ _ _  _ __| |_(_)_ _   [0m
E        [1m/ _` | || (_-<  _| | ' \  [0m
E        [1m\__,_|\_,_/__/\__|_|_||_| [0m  [1;36m4.1.0 [0m [gcc 15.3.0]
E       
E       ðŸ›‘ Cannot attach to the given process. Make sure that the PID you have provided
E       is valid and that the process is still running.
test/utils.py:365: RuntimeError
Filename: None. Size: 4kb. View raw, , hex, or download this file.

This paste expires on 2026-10-01 15:19:45.822276+00:00. Pasted through deprecated-web.