==> Building on infernape ==> Checking for remote environment... ==> Syncing package to remote host... sending incremental file list ./ .SRCINFO 700 98% 0.00kB/s 0:00:00 714 100% 13.67kB/s 0:00:00 (xfr#1, to-chk=11/13) .nvchecker.toml 148 100% 144.53kB/s 0:00:00 148 100% 144.53kB/s 0:00:00 (xfr#2, to-chk=10/13) LICENSE 646 100% 630.86kB/s 0:00:00 646 100% 630.86kB/s 0:00:00 (xfr#3, to-chk=9/13) PKGBUILD 700 62% 683.59kB/s 0:00:00 1,112 100% 1.06MB/s 0:00:00 (xfr#4, to-chk=8/13) REUSE.toml 393 100% 383.79kB/s 0:00:00 393 100% 383.79kB/s 0:00:00 (xfr#5, to-chk=7/13) ceccomp-4.2.2-1.log 702 100% 685.55kB/s 0:00:00 702 100% 685.55kB/s 0:00:00 (xfr#6, to-chk=6/13) LICENSES/ keys/ keys/pgp/ keys/pgp/0816A179BB09248F30468BD6542A0969B5CEDCDB.asc 700 22% 683.59kB/s 0:00:00 3,175 100% 3.03MB/s 0:00:00 (xfr#7, to-chk=1/13) keys/pgp/A7ACCC386C15E3C554D34B3EAB08F98092A456BB.asc 700 43% 683.59kB/s 0:00:00 1,591 100% 1.52MB/s 0:00:00 (xfr#8, to-chk=0/13) sent 1,344 bytes received 292 bytes 654.40 bytes/sec total size is 7,985 speedup is 4.88 ==> Ensuring required PGP keys are present...  -> Checking for 0816A179BB09248F30468BD6542A0969B5CEDCDB...  -> Checking for A7ACCC386C15E3C554D34B3EAB08F98092A456BB... ==> Patching arch to riscv64... ==> Running pkgctl build --arch riscv64 on remote host... ==> WARNING: invalid architecture: riscv64 ==> Updating pacman database cache [?25l:: Synchronizing package databases... core downloading... extra downloading... multilib downloading... [?25h==> Building ceccomp  -> repo: extra  -> arch: riscv64  -> worker: felix-0 ==> Building ceccomp for [extra] (riscv64) ]3008;start=407170de95f543d39402a23c9f705d95;user=root;hostname=infernape.felixc.at;machineid=2e397cddc373469b84ba49094179ed95;bootid=c7b18150321b48f78049ddd8ba2aeb26;pid=1347354;pidfdid=72613096;comm=systemd-nspawn;container=arch-nspawn-1347354;type=container\]11;?\]2;🔵 Container arch-nspawn-1347354 on infernape.felixc.at\[?25l:: Synchronizing package databases... core downloading... extra downloading... :: Starting full system upgrade... there is nothing to do [?25h[!p]104\[?7h]3008;end=407170de95f543d39402a23c9f705d95\==> Building in chroot for [extra] (riscv64)... ==> Synchronizing chroot copy [/var/lib/archbuild/extra-riscv64/root] -> [felix-0]...done ==> Making package: ceccomp 4.2.2-1 (Tue Jun 16 17:43:32 2026) ==> Retrieving sources...  -> Updating ceccomp git repo... ==> Validating source files with b2sums... ceccomp ... Passed ==> Verifying source file signatures with gpg... ceccomp git repo ... Passed ]3008;start=5265d81a6f9e455087bca52506fea194;user=root;hostname=infernape.felixc.at;machineid=2e397cddc373469b84ba49094179ed95;bootid=c7b18150321b48f78049ddd8ba2aeb26;pid=1348951;pidfdid=73513766;comm=systemd-nspawn;container=arch-nspawn-1348951;type=container\]11;?\]2;🔵 Container arch-nspawn-1348951 on infernape.felixc.at\]3008;start=d0f1bd3f68be429aa667bdb10593a09e;user=root;hostname=arch-nspawn-1348951;machineid=47ee24efb3c144d2ba2fd389ef958c6d;bootid=8ec34d5f5dd340d9905ddd990208a424;pid=34;pidfdid=72673118;comm=sudo;targetuser=builduser;type=session\==> Making package: ceccomp 4.2.2-1 (Tue Jun 16 09:44:00 2026) ==> Checking runtime dependencies... ==> Checking buildtime dependencies... ==> Installing missing dependencies... ]3008;start=f73aeb287e514aae8625c0296881c970;user=builduser;hostname=arch-nspawn-1348951;machineid=47ee24efb3c144d2ba2fd389ef958c6d;bootid=8ec34d5f5dd340d9905ddd990208a424;pid=3222;pidfdid=72198447;comm=sudo;targetuser=root;type=session\[?25lresolving dependencies... looking for conflicting packages... Package (14) New Version Net Change Download Size extra/libyaml 0.2.5-3 0.16 MiB extra/perl-error 0.17030-3 0.04 MiB extra/perl-mailtools 2.22-3 0.10 MiB extra/perl-timedate 2.35-1 0.15 MiB extra/python-iniconfig 2.3.0-1 0.07 MiB 0.02 MiB extra/python-packaging 26.2-1 1.23 MiB 0.20 MiB extra/python-pluggy 1.6.0-3.1 0.23 MiB extra/python-pygments 2.20.0-1 15.36 MiB 2.42 MiB extra/ruby 3.4.8-2 14.69 MiB extra/rubygems 3.6.9-1 2.73 MiB extra/zlib-ng 2.3.3-1 0.23 MiB extra/asciidoctor 2.0.26-1 1.88 MiB extra/git 2.54.0-1 29.36 MiB extra/python-pytest 1:8.4.2-3 4.69 MiB Total Download Size: 2.63 MiB Total Installed Size: 70.92 MiB :: Proceed with installation? [Y/n] :: Retrieving packages... python-pygments-2.20.0-1-any downloading... python-packaging-26.2-1-any downloading... python-iniconfig-2.3.0-1-any downloading... checking keyring... checking package integrity... loading package files... checking for file conflicts... :: Processing package changes... installing libyaml... installing rubygems... installing ruby... Optional dependencies for ruby tk: for Ruby/TK ruby-docs: Documentation for Ruby ruby-default-gems: Default gems which are part of Ruby StdLib ruby-bundled-gems: Bundled gems which are part of Ruby StdLib ruby-stdlib: Full Ruby StdLib including default gems, bundled gems and tools installing asciidoctor... installing perl-error... installing perl-timedate... installing perl-mailtools... installing zlib-ng... installing git... Optional dependencies for git git-zsh-completion: upstream zsh completion tk: gitk and git gui openssh: ssh transport and crypto man: show help with `git command --help` perl-libwww: git svn perl-term-readkey: git svn and interactive.singlekey setting perl-io-socket-ssl: git send-email TLS support perl-authen-sasl: git send-email TLS support perl-cgi: gitweb (web interface) support python: git svn & git p4 [installed] subversion: git svn org.freedesktop.secrets: keyring credential helper libsecret: libsecret credential helper [installed] less: the default pager for git installing python-iniconfig... installing python-packaging... installing python-pluggy... installing python-pygments... installing python-pytest... :: Running post-transaction hooks... (1/4) Creating system user accounts... Creating group 'git' with GID 969. Creating user 'git' (git daemon user) with UID 969 and GID 969. (2/4) Reloading system manager configuration... Skipped: Current root is not booted. (3/4) Arming ConditionNeedsUpdate... (4/4) Checking for old perl modules... [?25h]3008;end=f73aeb287e514aae8625c0296881c970\==> Retrieving sources... ==> WARNING: Skipping all source file integrity checks. ==> Extracting sources...  -> Creating working copy of ceccomp git repo... Cloning into 'ceccomp'... done. Switched to a new branch 'makepkg' ==> Starting build()... [ 1/13] Checking system platform... linux [ 2/13] Checking current architecture... 64bit, riscv64 [ 3/13] Checking if flock in system... yes [ 4/13] Checking internationalization support... yes [ 5/13] Checking documentation settings... asciidoctor [ 6/13] Checking C compiler... cc [ 7/13] Checking Linux-related headers... yes [ 8/13] Checking libseccomp... yes [ 9/13] Checking argp parser... builtin [10/13] Checking source code type... git install [11/13] Checking target version... 4.2.2 [12/13] Checking builder name... Arch Linux [13/13] Checking if compiler support -mno-omit-leaf-frame-pointer... yes Writting back to Makefile... ok MKDIR build SED [ 1/31] include/config.h ADOC [ 2/31] build/ceccomp.html ADOC [ 3/31] build/ceccomp-cn.html ADOC [ 4/31] build/ceccomp.1 ADOC [ 5/31] build/cn/ceccomp.1 MSGFMT [ 6/31] build/zh_CN.mo CC [ 7/31] build/asm.o CC [ 8/31] build/ceccomp.o CC [ 9/31] build/decoder/check_prog.o CC [10/31] build/decoder/decoder.o CC [11/31] build/decoder/formatter.o CC [12/31] build/disasm.o CC [13/31] build/emu.o CC [14/31] build/lexical/parser.o CC [15/31] build/lexical/scanner.o CC [16/31] build/lexical/token.o CC [17/31] build/probe.o CC [18/31] build/resolver/render.o CC [19/31] build/resolver/resolver.o CC [20/31] build/trace.o CC [21/31] build/utils/arch_trans.o CC [22/31] build/utils/color.o CC [23/31] build/utils/hash.o CC [24/31] build/utils/i18n.o CC [25/31] build/utils/logger.o CC [26/31] build/utils/parse_args.o CC [27/31] build/utils/proc_status.o CC [28/31] build/utils/read_source.o CC [29/31] build/utils/str_pile.o CC [30/31] build/utils/vector.o BUILT html doc BUILT man doc BUILT mo LD [31/31] build/ceccomp BUILT ceccomp ==> Starting check()... CC [1/2] build/unit_test.o test/unit_test.c: In function ‘main’: test/unit_test.c:73:7: warning: ignoring return value of ‘read’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 73 | read (efd, &sem, 8); | ^~~~~~~~~~~~~~~~~~~ test/unit_test.c:83:7: warning: ignoring return value of ‘read’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 83 | read (efd, &sem, 8); | ^~~~~~~~~~~~~~~~~~~ test/unit_test.c:111:7: warning: ignoring return value of ‘read’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 111 | read (efd, &sem, 8); | ^~~~~~~~~~~~~~~~~~~ LD [2/2] build/test BUILT test ============================= test session starts ============================== platform linux -- Python 3.14.5, pytest-8.4.2, pluggy-1.6.0 rootdir: /build/ceccomp/src/ceccomp collected 91 items test/test_asm.py .................. [ 19%] test/test_disasm.py ............... [ 36%] test/test_dynamic.py FFFs [ 40%] test/test_edge_case.py ...................... [ 64%] test/test_emu.py ................................ [100%] =================================== FAILURES =================================== __________________________________ test_probe __________________________________ errns = namespace() @pytest.mark.xfail(XFAIL_DYNAMIC, reason=XFAIL_REASON) def test_probe(errns: SimpleNamespace): piper, pipew = os.pipe() os.set_inheritable(pipew, True) argv = [CECCOMP, 'probe', *COMMON_OPTS, '-o', f'/proc/self/fd/{pipew}', TEST, '1'] > _, stdout, stderr = run_process(argv, False, pipew) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ test/test_dynamic.py:59: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ test/shared_vars.py:28: in run_process result = subprocess.run(argv, timeout=5, capture_output=True, /usr/lib/python3.14/subprocess.py:557: in run stdout, stderr = process.communicate(input, timeout=timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /usr/lib/python3.14/subprocess.py:1221: in communicate stdout, stderr = self._communicate(input, endtime, timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /usr/lib/python3.14/subprocess.py:2154: in _communicate self._check_timeout(endtime, orig_timeout, stdout, stderr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = endtime = 3096313.062399411, orig_timeout = 5, stdout_seq = [], stderr_seq = [] skip_check_and_raise = False def _check_timeout(self, endtime, orig_timeout, stdout_seq, stderr_seq, skip_check_and_raise=False): """Convenience for checking if a timeout has expired.""" if endtime is None: return if skip_check_and_raise or _time() > endtime: > raise TimeoutExpired( self.args, orig_timeout, output=b''.join(stdout_seq) if stdout_seq else None, stderr=b''.join(stderr_seq) if stderr_seq else None) E subprocess.TimeoutExpired: Command '['/build/ceccomp/src/ceccomp/build/ceccomp', 'probe', '-c', 'always', '-a', 'x86_64', '-o', '/proc/self/fd/12', '/build/ceccomp/src/ceccomp/build/test', '1']' timed out after 5 seconds /usr/lib/python3.14/subprocess.py:1268: TimeoutExpired __________________________________ test_trace __________________________________ errns = namespace() @pytest.mark.xfail(XFAIL_DYNAMIC, reason=XFAIL_REASON) def test_trace(errns: SimpleNamespace): piper, pipew = os.pipe() os.set_inheritable(pipew, True) argv = [CECCOMP, 'trace', *COMMON_OPTS, '-o', f'/proc/self/fd/{pipew}', TEST, '0'] > _, _, stderr = run_process(argv, False, pipew) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ test/test_dynamic.py:82: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ test/shared_vars.py:28: in run_process result = subprocess.run(argv, timeout=5, capture_output=True, /usr/lib/python3.14/subprocess.py:557: in run stdout, stderr = process.communicate(input, timeout=timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /usr/lib/python3.14/subprocess.py:1221: in communicate stdout, stderr = self._communicate(input, endtime, timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /usr/lib/python3.14/subprocess.py:2154: in _communicate self._check_timeout(endtime, orig_timeout, stdout, stderr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = endtime = 3096318.600509125, orig_timeout = 5, stdout_seq = [], stderr_seq = [] skip_check_and_raise = False def _check_timeout(self, endtime, orig_timeout, stdout_seq, stderr_seq, skip_check_and_raise=False): """Convenience for checking if a timeout has expired.""" if endtime is None: return if skip_check_and_raise or _time() > endtime: > raise TimeoutExpired( self.args, orig_timeout, output=b''.join(stdout_seq) if stdout_seq else None, stderr=b''.join(stderr_seq) if stderr_seq else None) E subprocess.TimeoutExpired: Command '['/build/ceccomp/src/ceccomp/build/ceccomp', 'trace', '-c', 'always', '-a', 'x86_64', '-o', '/proc/self/fd/14', '/build/ceccomp/src/ceccomp/build/test', '0']' timed out after 5 seconds /usr/lib/python3.14/subprocess.py:1268: TimeoutExpired __________________________________ test_seize __________________________________ errns = namespace(stderr='\x1b[31m[ERROR]: \x1b[0mUnknown error when seizing process: Function not implemented\n') @pytest.mark.xfail(XFAIL_DYNAMIC, reason=XFAIL_REASON) def test_seize(errns: SimpleNamespace): efd = os.eventfd(0, 0) tp = subprocess.Popen([TEST, '2', str(efd)], stdin=DEVNULL, stdout=PIPE, stderr=DEVNULL, text=True, pass_fds=(efd,)) pid = int(tp.stdout.readline().split('=')[1]) argv = [CECCOMP, 'trace', *COMMON_OPTS, '-p', str(pid), '-s'] cp = subprocess.Popen(argv, stdin=DEVNULL, stdout=PIPE, stderr=PIPE, text=True) pre_line = cp.stderr.readline() os.eventfd_write(efd, 1) rl, _, _ = select.select([tp.stdout], [], [], 2) if rl: pid = int(rl[0].readline().split('=')[1]) # child pid else: with open(f'/proc/{tp.pid}/wchan') as f: t_kfunc = f.read() with open(f'/proc/{cp.pid}/wchan') as f: c_kfunc = f.read() errns.stderr = f'TEST in {t_kfunc}\nCECCOMP in {c_kfunc}' tp.terminate() cp.terminate() assert False, 'Found signal race condition? Pls report to upstream' cp.terminate() stdout, stderr = cp.communicate() errns.stderr = pre_line + stderr pid_exist = True try: os.kill(pid, 0) except ProcessLookupError: pid_exist = False else: os.eventfd_write(efd, 1) assert pid_exist is True expect_file = TEST_DIR / 'dyn_log' / 'trace.log' with expect_file.open() as f: > assert filter_execve_k(stdout) == filter_execve_k(f.read()) E AssertionError: assert '' == '\x1b[90m#Lab...------\x1b[0m' E E - #Label CODE JT JF K E - #--------------------------------- E - L0001: 0x15 0x00 0x06 0x00000000 if ($A != 0x0) goto L0008 E - L0002: 0x20 0x00 0x00 0x00000000 $A = $syscall_nr E - L0003: 0x15 0x02 0x00 MAY VARY if ($A == execve) goto L0006 E - L0004: 0x15 0x02 0x00 MAY VARY if ($A == sendfile) goto L0007... E E ...Full output truncated (5 lines hidden), use '-vv' to show test/test_dynamic.py:135: AssertionError ---------------------------- Process Standard Error ---------------------------- [ERROR]: Unknown error when seizing process: Function not implemented =========================== short test summary info ============================ FAILED test/test_dynamic.py::test_probe - subprocess.TimeoutExpired: Command ... FAILED test/test_dynamic.py::test_trace - subprocess.TimeoutExpired: Command ... FAILED test/test_dynamic.py::test_seize - AssertionError: assert '' == '\x1b[... =================== 3 failed, 87 passed, 1 skipped in 15.60s =================== ==> ERROR: A failure occurred in check().  Aborting... ]3008;end=d0f1bd3f68be429aa667bdb10593a09e\[!p]104\[?7h]3008;end=5265d81a6f9e455087bca52506fea194\==> ERROR: Build failed, check /var/lib/archbuild/extra-riscv64/felix-0/build [?25h[?25h[?25hreceiving incremental file list ceccomp-4.2.2-1-riscv64-build.log ceccomp-4.2.2-1-riscv64-check.log sent 62 bytes received 3,121 bytes 1,273.20 bytes/sec total size is 11,385 speedup is 3.58