Skip to content

Honor GRATE_MEMORY_FLAG in mmap_syscall and brk_syscall#1185

Open
rennergade wants to merge 25 commits into
mainfrom
grate-memory-flag-runtime
Open

Honor GRATE_MEMORY_FLAG in mmap_syscall and brk_syscall#1185
rennergade wants to merge 25 commits into
mainfrom
grate-memory-flag-runtime

Conversation

@rennergade

@rennergade rennergade commented May 10, 2026

Copy link
Copy Markdown
Contributor

mmap_syscall used to do useraddr = addr as u32 unconditionally, truncating the high 32 bits of any host pointer a grate had supplied via GRATE_MEMORY_FLAG. The truncated low bits then got re-translated through the calling cage's vmmap, landing the mapping at an arbitrary cage address. The cage's subsequent memcpy clobbered whatever lived there (stack, locals, fds) and downstream syscalls failed in confusing ways that didn't trace back to the mmap. brk_syscall had the inverse gap: it always interprets the address as a cage uaddr, so a grate that wanted to set the program break via a host sysaddr had no way to do it.

Implementation note (subtle): GRATE_MEMORY_FLAG is consumed glibc-side inside make_threei_call / TRANSLATE_ARG_TO_HOST — by the time the runtime sees the call, the flag bit has been stripped from arg_cageid and (if it was set) the arg is the already-resolved host pointer. The runtime therefore can't check the flag directly. It distinguishes the two cases by value range: cage linear memory occupies [base, base+4GB] on the host, and host bases are far above 4GB, so any arg above u32::MAX must be a pre-translated host sysaddr.

Adds two helpers in typemap::datatype_conversion:

  • sc_convert_addr_to_sys(arg, arg_cageid, cageid): returns the host sysaddr. arg == 0 anchors to the calling cage's base (so early_init_stack-style addr=0,MAP_FIXED calls still work). arg ≤ u32::MAX is treated as a uaddr and translated through the calling cage's vmmap. arg > u32::MAX is used as-is (grate already translated it).
  • sc_convert_sys_to_user(sysaddr, cageid): inverse, for return-value bookkeeping and the brk case.

Wired into both branches of mmap_syscall (find_map_space hint resolution and the MAP_FIXED path) and into brk_syscall (sysaddr → uaddr when the arg looks like a host sysaddr). Adds GRATE_MEMORY_FLAG and LIND_ARG_CAGEID_MASK constants in sysdefs/lind_platform_const.rs to mirror glibc's addr_translation.h.

Scope: only mmap / mmap64 (uaddr convention per glibc mmap.c) and brk (raw uaddr per glibc brk.c) need this. munmap, mprotect, shmat, shmdt already receive pre-translated sysaddrs from their glibc wrappers (via TRANSLATE_GUEST_POINTER_TO_HOST), so the runtime already uses them correctly regardless of the flag — leaving them untouched avoids double-translating the cage path.

Test

tests/grate-tests/simple-tests/mmap-flag.c + mmap-flag_grate.c. The grate registers an mmap handler that forwards fd-backed mmaps to RawPOSIX with GRATE_MEMORY_FLAG on arg1cage, exercising the runtime's value-range path. Anonymous mmaps (including the cage's runtime-internal instance.rs setup mmap) are forwarded unchanged so they don't trip the FLAG path. The cage opens a file, mmaps it MAP_SHARED, writes/reads back a page, munmaps.

`mmap_syscall` used to do `useraddr = addr as u32` unconditionally,
truncating the high 32 bits of any host pointer the grate had supplied
via GRATE_MEMORY_FLAG.  The truncated low bits then got re-translated
through the calling cage's vmmap, landing the mapping at an arbitrary
cage address — typically the end of the empty vmmap gap.  The cage's
subsequent memcpy clobbered whatever was already in that region
(stack, locals, fds) and downstream syscalls failed with EBADF or
crashes that didn't trace back to the mmap itself.

`brk_syscall` had the inverse gap: it always interprets the address as
a cage uaddr, so a grate that wanted to set the program break via a
host sysaddr had no way to do it.

Add two helpers in `typemap::datatype_conversion`:

- `sc_convert_addr_to_sys(arg, arg_cageid, cageid)`: if
  `arg_cageid & GRATE_MEMORY_FLAG` is set, the grate has already
  computed a host system address — use it directly.  Otherwise the
  arg is a uaddr in the calling cage's memory; translate via that
  cage's vmmap base.
- `sc_convert_sys_to_user(sysaddr, cageid)`: inverse, for return-value
  bookkeeping and the brk case.

Wire both into mmap_syscall (both MAP_FIXED and find_map_space paths)
and brk_syscall (sysaddr → uaddr when the flag is set).  Add
`GRATE_MEMORY_FLAG` and `LIND_ARG_CAGEID_MASK` constants in
sysdefs/lind_platform_const.rs to mirror glibc's
addr_translation.h.

Scope: only `mmap`/`mmap64` (uaddr convention per glibc `mmap.c`) and
`brk` (raw uaddr per glibc `brk.c`) need this.  `munmap`, `mprotect`,
`shmat`, `shmdt` already receive pre-translated sysaddrs from their
glibc wrappers (via `TRANSLATE_GUEST_POINTER_TO_HOST`), so the runtime
already uses them correctly regardless of the flag — leaving them
untouched avoids double-translating the cage path.

Adds a grate test in `tests/grate-tests/simple-tests/` (mmap-flag.c +
mmap-flag_grate.c): the grate registers an mmap handler that forwards
to RawPOSIX with `GRATE_MEMORY_FLAG` set on the addr's cageid; the
cage mmap-write-readback-munmap's a page.  Pre-patch this trips the
truncation bug.
When the runtime's own early_init_stack calls mmap(addr=0, MAP_FIXED, ...)
on a cage whose mmap was registered to a grate (e.g. by a grate test),
the grate forwards the call with GRATE_MEMORY_FLAG set.  My helper
treated FLAG-set + addr=0 as "the grate handed us a NULL host pointer",
returned sysaddr=0, and the inverse sys_to_user(0) returned EINVAL
because 0 < cage.base_address.  Symptom: "failed to allocate stack"
during cage exec.

A NULL host pointer is meaningless for mmap.  Treat arg=0 as
cage-relative regardless of the flag — that matches the pre-flag
behavior of `useraddr = addr as u32 (= 0); sysaddr = user_to_sys(0)
= base`.
@github-actions

Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

grate harness

Grate Test Report

MetricValue
Total15
Success14
Failures1
Compile Failures0
Runtime Failures0
Timeout Failures1
Missing Pair Failures0

Cases

TestStatusError TypeOutput
concurrent-request/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] PASS

STDERR:

concurrent-request/race-test_grate.cSuccess
STDOUT:
pass

STDERR:

concurrent-request/thread_race_grate.cSuccess
STDOUT:
[thread_race] Registering handler for cage 2 in grate 1 with fn ptr addr: 3
[thread_race] PASS: 20 threads x 100000 calls returned 10
[thread_race] PASS

STDERR:

copy-data-between-cages/cp-stncpy_grate.cSuccess
STDOUT:
[cage] pathname addr=0xfffb6ff9
[cage] pathname='random'
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

copy-data-between-cages/cpdata_grate.cSuccess
STDOUT:
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

interposing-calls/fork-with-newret_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Cage] Forked process with PID: 10
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-exec_grate.cSuccess
STDOUT:
[Grate|interpose-exec] Registering exec handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
Exec successful, argv[1]: --execd
[Grate|interpose-exec] PASS

STDERR:

interposing-calls/interpose-exit_grate.cSuccess
STDOUT:
[Grate|interpose-exit] Registering exit handler for cage 2 in grate 1 with fn ptr addr: 3
Exiting...

[Grate|interpose-exit] PASS

STDERR:

interposing-calls/interpose-fork_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-mmap_grate.cSuccess
STDOUT:
[Grate|interpose-mmap] Registering mmap handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
mmap test: PASS
[Grate|interpose-mmap] PASS

STDERR:

interposing-calls/interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 4
[cage] registering 107. grateid: 2 cageid: 3
[Grate|interpose-register] Handling function ptr: 4 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|geteuid] Registering geteuid handler for cage 1 in grate 1 with fn ptr addr: 3
[Grate|interpose-register] Handling function ptr: 3 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|interpose-register] PASS

STDERR:

multi-register_grate.cSuccess
STDOUT:
[Grate|multi-register_grate] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 4
[Grate|multi-register_grate] Registering getuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|multi-register_grate] Handling function ptr: 4 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Grate|multi-register_grate] Handling function ptr: 3 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Cage | multi-register] PASS: geteuid=10, getuid=20
[Grate|multi-register] PASS

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 3 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 4 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:

simple-tests/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|geteuid] Handling function ptr: 3 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

simple-tests/mmap-flag_grate.cFailureTimeout
Timed Out (timeout: 30s)

static harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases3
Number of Successes3
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Static Tests
fork_simple.cSuccessNone0.056284s4.384586s
Success
thread.cSuccessNone0.050336s4.421337s
Success
tls_test.cSuccessNone0.057080s4.417171s
Success
Fail Tests

Summary

MetricCount
Total Test Cases0
Number of Successes0
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases218
Number of Successes218
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
File Tests
chartests.cSuccessNone0.051505s0.145121s
Success
chdir_getcwd.cSuccessNone0.051168s0.114822s
Success
chmod.cSuccessNone0.057853s0.124884s
Success
clock_gettime_highlevel.cSuccessNone0.123895s0.171328s
Success
clock_gettime_simple.cSuccessNone0.045894s0.103659s
Success
cloexec.cSuccessNone0.054973s0.130719s
Success
close.cSuccessNone0.062369s0.135583s
Success
creat_access.cSuccessNone0.055189s0.117303s
Success
doubleclose.cSuccessNone0.047492s0.101513s
Success
dup.cSuccessNone0.049111s0.118252s
Success
dup2.cSuccessNone0.053965s0.117048s
Success
dup3.cSuccessNone0.051063s0.112878s
Success
dupwrite.cSuccessNone0.056054s0.115947s
Success
etc_conf.cSuccessNone0.052867s0.122298s
Success
faccessat.cSuccessNone0.051449s0.118697s
Success
fchdir.cSuccessNone0.057659s0.129564s
Success
fchmod.cSuccessNone0.055842s0.124264s
Success
fchmodat.cSuccessNone0.050787s0.116077s
Success
fcntl.cSuccessNone0.053268s0.127604s
Success
fdatasync.cSuccessNone0.054350s0.111313s
Success
filetest.cSuccessNone0.052533s0.109544s
Success
filetest1000.cSuccessNone0.063748s0.126198s
Success
flock.cSuccessNone0.063565s0.152982s
Success
fstat.cSuccessNone0.059222s0.130755s
Success
fstatfs.cSuccessNone0.049595s0.109539s
Success
fsync.cSuccessNone0.052136s0.109216s
Success
ftruncate.cSuccessNone0.056675s0.207957s
Success
getcwd.cSuccessNone0.050841s0.106777s
Success
getcwd_null.cSuccessNone0.056791s0.145846s
Success
getpgid.cSuccessNone0.051158s0.107324s
Success
getrandom.cSuccessNone0.053669s0.127582s
Success
ioctl.cSuccessNone0.056990s0.122817s
Success
link.cSuccessNone0.058130s0.156864s
Success
locale_test.cSuccessNone0.064136s0.314809s
Success
lseek.cSuccessNone0.060451s0.192788s
Success
lstat.cSuccessNone0.056370s0.132889s
Success
mkdir_rmdir.cSuccessNone0.056480s0.117228s
Success
mkfifo_test.cSuccessNone0.059000s0.155662s
Success
mknod.cSuccessNone0.053176s0.128798s
Success
nocancel_io.cSuccessNone0.058003s0.140765s
Success
open.cSuccessNone0.051109s0.107564s
Success
openat.cSuccessNone0.050993s0.114065s
Success
path_conversion_safety.cSuccessNone0.057044s0.131089s
Success
ppoll.cSuccessNone0.056137s0.121668s
Success
pread_pwrite.cSuccessNone0.050639s0.118137s
Success
preadv_pwritev.cSuccessNone0.055444s0.129408s
Success
printf.cSuccessNone0.045691s0.098932s
Success
prlimit64.cSuccessNone0.050192s0.109416s
Success
read.cSuccessNone0.056172s0.129457s
Success
readbytes.cSuccessNone0.049969s0.106940s
Success
readdir_basic.cSuccessNone0.057295s0.147524s
Success
readlink.cSuccessNone0.055912s0.124248s
Success
readlinkat.cSuccessNone0.056143s0.127626s
Success
readv_writev_test.cSuccessNone0.056577s0.127865s
Success
rename.cSuccessNone0.057475s0.119682s
Success
renameat.cSuccessNone0.059720s0.138240s
Success
sc-writev.cSuccessNone0.053455s0.117880s
Success
stat.cSuccessNone0.057018s0.128344s
Success
statfs.cSuccessNone0.050069s0.109669s
Success
symlink.cSuccessNone0.056530s0.148749s
Success
sync_file_range.cSuccessNone0.056222s0.114686s
Success
timespec_time_t_compat.cSuccessNone0.052066s0.109473s
Success
truncate.cSuccessNone0.056965s0.137156s
Success
unlink.cSuccessNone0.055486s0.149006s
Success
unlinkat.cSuccessNone0.057526s0.135457s
Success
utimensat.cSuccessNone0.052544s0.132490s
Success
write.cSuccessNone0.047070s0.096906s
Success
writeloop.cSuccessNone0.057809s0.118082s
Success
writepartial.cSuccessNone0.057287s0.108458s
Success
writev.cSuccessNone0.056845s0.126514s
Success
Math Tests
math_link_smoke.cSuccessNone0.060233s0.109877s
Success
math_tests.cSuccessNone0.063146s0.139443s
Success
printf_float.cSuccessNone0.059837s0.133019s
Success
Memory Tests
brk.cSuccessNone0.052066s0.109177s
Success
fork_large_memory.cSuccessNone0.083516s0.372754s
Success
malloc.cSuccessNone0.050358s0.104027s
Success
malloc_large.cSuccessNone0.052395s0.104318s
Success
memcpy.cSuccessNone0.049692s0.102484s
Success
memory_error_test.cSuccessNone0.056220s0.132232s
Success
mmap.cSuccessNone0.047774s0.102366s
Success
mmap_aligned.cSuccessNone0.049610s0.116416s
Success
mmap_complicated.cSuccessNone0.054254s0.128340s
Success
mmap_file.cSuccessNone0.054396s0.114357s
Success
mmap_shared.cSuccessNone0.054493s0.120843s
Success
mmaptest.cSuccessNone0.051423s0.108555s
Success
mprotect.cSuccessNone0.049532s0.106422s
Success
mprotect_boundary.cSuccessNone0.048442s0.113377s
Success
mprotect_end_region.cSuccessNone0.047924s0.109374s
Success
mprotect_middle_region.cSuccessNone0.048358s0.108982s
Success
mprotect_multiple_times.cSuccessNone0.048196s0.110024s
Success
mprotect_same_value.cSuccessNone0.047659s0.107557s
Success
mprotect_spanning_regions.cSuccessNone0.048940s0.123495s
Success
munmap_adjacent_shm.cSuccessNone0.050650s0.123291s
Success
sbrk.cSuccessNone0.049941s0.105926s
Success
segfault.cSuccessNone0.055630s0.136176s
Success
shm.cSuccessNone0.053726s0.127041s
Success
shmtest.cSuccessNone0.048985s0.110218s
Success
thread_malloc_sequential.cSuccessNone0.055813s0.152821s
Success
vtable.cSuccessNone0.058168s0.119082s
Success
Networking Tests
accept4.cSuccessNone0.061194s0.135521s
Success
dns_resolve_test.cSuccessNone0.054480s0.120461s
Success
dnstest.cSuccessNone0.054642s0.116199s
Success
epoll_badfd.cSuccessNone0.049462s0.106304s
Success
epoll_edge_triggered.cSuccessNone0.212389s0.377283s
Success
epollcreate1.cSuccessNone0.056338s0.128573s
Success
error_handling_net.cSuccessNone0.062144s0.189358s
Success
getaddrinfo_test.cSuccessNone0.057298s0.153085s
Success
getaddrinfo_unspec.cSuccessNone0.059260s0.125438s
Success
gethostname.cSuccessNone0.049870s0.102655s
Success
getifaddrs.cSuccessNone0.057447s0.122764s
Success
getsockname.cSuccessNone0.059824s0.121858s
Success
getsockopt.cSuccessNone0.058501s0.154992s
Success
ipv6_basic.cSuccessNone0.059921s0.156927s
Success
makepipe.cSuccessNone0.048627s0.101193s
Success
nonblocking_eagain.cSuccessNone0.059246s0.162615s
Success
pipe.cSuccessNone0.060944s0.126389s
Success
pipe2.cSuccessNone0.057243s0.119183s
Success
pipeinput.cSuccessNone0.060548s0.141009s
Success
pipeinput2.cSuccessNone0.057584s0.148190s
Success
pipeonestring.cSuccessNone0.057444s0.139493s
Success
pipepong.cSuccessNone0.058522s0.149614s
Success
pipewrite.cSuccessNone0.051308s0.116131s
Success
poll.cSuccessNone0.055211s0.116078s
Success
recvfrom-sendto.cSuccessNone0.057343s0.124644s
Success
sendmsg_recvmsg_test.cSuccessNone0.056135s0.128949s
Success
serverclient.cSuccessNone0.056290s0.132640s
Success
shutdown.cSuccessNone0.058133s0.126741s
Success
shutdown_fork.cSuccessNone0.056354s0.129830s
Success
simple-select.cSuccessNone0.057951s0.143270s
Success
simple_epoll.cSuccessNone0.055737s0.123607s
Success
socket.cSuccessNone0.054214s0.114754s
Success
socket_cloexec.cSuccessNone0.055445s0.115218s
Success
socket_options_advanced.cSuccessNone0.059944s0.172413s
Success
socketepoll.cSuccessNone0.054950s0.117791s
Success
socketpair.cSuccessNone0.054386s0.125853s
Success
socketselect.cSuccessNone0.055790s0.121902s
Success
udp_send_recv.cSuccessNone0.161970s0.264117s
Success
uds-getsockname.cSuccessNone0.056641s0.115630s
Success
uds-nb-select.cSuccessNone2.064907s2.181110s
Success
uds-serverclient.cSuccessNone0.059131s0.150612s
Success
uds-socketselect.cSuccessNone0.055794s0.124442s
Success
uds_listen_poll.cSuccessNone1.062874s1.157322s
Success
writev_socket.cSuccessNone0.058834s0.153125s
Success
Process Tests
barrier_test.cSuccessNone0.054080s0.123150s
Success
chain_thread.cSuccessNone1.055931s1.131259s
Success
ctor_syscall_test.cSuccessNone0.046582s0.105391s
Success
cxa_atexit_test.cSuccessNone0.052076s0.110491s
Success
exec_non_utf8.cSuccessNone0.054031s0.113395s
Success
execve_shebang.cSuccessNone0.054798s0.114593s
Success
exit.cSuccessNone0.053616s0.108145s
Success
exit_failure.cSuccessNone0.056453s0.122276s
Success
exit_group_thread.cSuccessNone0.057882s0.132636s
Success
exit_status_first_wins.cSuccessNone0.058498s0.132799s
Success
flockfile_test.cSuccessNone0.054000s0.129138s
Success
fork2malloc.cSuccessNone0.056896s0.125331s
Success
fork_select.cSuccessNone0.053961s0.130700s
Success
fork_simple.cSuccessNone0.052504s0.116742s
Success
fork_syscall.cSuccessNone0.059322s0.345896s
Success
fork_tls_ctype.cSuccessNone0.058141s0.142775s
Success
forkandopen.cSuccessNone0.057387s0.134137s
Success
forkdup.cSuccessNone0.058982s0.129977s
Success
forkexecuid.cSuccessNone0.053459s0.134620s
Success
forkexecv-arg.cSuccessNone0.055024s0.126365s
Success
forkexecv.cSuccessNone0.053325s0.122060s
Success
forkfiles.cSuccessNone0.057729s0.131022s
Success
forkmalloc.cSuccessNone0.055195s0.120761s
Success
forknodup.cSuccessNone0.056905s0.131372s
Success
function-ptr.cSuccessNone0.051770s0.108846s
Success
getegid_syscall.cSuccessNone0.056079s0.272002s
Success
getgid_syscall.cSuccessNone0.058530s0.282975s
Success
getpid.cSuccessNone0.048293s0.101763s
Success
getpid_syscall.cSuccessNone0.058915s0.285642s
Success
getppid.cSuccessNone0.057119s0.120868s
Success
getppid_syscall.cSuccessNone0.060904s0.242362s
Success
getuid.cSuccessNone0.056202s0.110372s
Success
getuid_syscall.cSuccessNone0.055584s0.179478s
Success
hello-arg.cSuccessNone0.047997s0.105363s
Success
hello.cSuccessNone0.046839s0.098989s
Success
longjmp.cSuccessNone0.047653s0.108983s
Success
mutex.cSuccessNone2.058510s2.127764s
Success
printf_deadlock_smoke.cSuccessNone0.062899s0.152219s
Success
printf_thread_test.cSuccessNone0.053481s0.128017s
Success
sem_forks.cSuccessNone0.059744s0.145001s
Success
setsid.cSuccessNone0.048781s0.102019s
Success
template.cSuccessNone0.055542s0.144754s
Success
test_exec_nofork.cSuccessNone0.054480s0.123175s
Success
test_unlink_open_file.cSuccessNone0.052540s0.105336s
Success
thread-guard.cSuccessNone0.052464s0.120682s
Success
thread-test.cSuccessNone0.051250s0.112828s
Success
thread.cSuccessNone0.050788s0.111461s
Success
thread_cageid_race.cSuccessNone0.053216s0.172946s
Success
tls_test.cSuccessNone0.054746s0.131729s
Success
uname.cSuccessNone0.049862s0.103104s
Success
wait.cSuccessNone0.052378s0.128931s
Success
waitpid_anychild.cSuccessNone0.057218s0.126615s
Success
waitpid_syscall.cSuccessNone1.056183s1.170857s
Success
waitpid_wnohang.cSuccessNone0.058012s0.126295s
Success
Signal Tests
alarm.cSuccessNone7.054502s7.148236s
Success
eintr_fork_signal.cSuccessNone1.057431s1.138541s
Success
kill.cSuccessNone1.055812s1.126566s
Success
setitimer.cSuccessNone7.056225s7.151066s
Success
sigalrm.cSuccessNone2.055420s2.129756s
Success
sigaltstack.cSuccessNone0.058584s0.128350s
Success
sigchld.cSuccessNone1.057714s1.123894s
Success
signal-fork.cSuccessNone4.058645s4.124817s
Success
signal-simple.cSuccessNone0.055767s0.116526s
Success
signal_SIGCHLD.cSuccessNone0.053492s0.125750s
Success
signal_fork.cSuccessNone0.053541s0.131009s
Success
signal_int_ignored.cSuccessNone2.055593s2.125280s
Success
signal_kill_cleanup.cSuccessNone1.054122s1.126784s
Success
signal_procmask.cSuccessNone0.049927s0.115855s
Success
signal_read_interrupt.cSuccessNone0.560275s0.634838s
Success
signal_recursive.cSuccessNone0.051700s0.122514s
Success
signal_sa_mask.cSuccessNone0.049388s0.109124s
Success
signal_select_interrupt.cSuccessNone0.558849s0.635795s
Success
signal_write_interrupt.cSuccessNone1.058204s1.135467s
Success
sigpipe.cSuccessNone1.059521s1.133251s
Success
sigprocmask.cSuccessNone1.056927s1.125251s
Success
Fail Tests

Summary

MetricCount
Total Test Cases4
Number of Successes4
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Dylink Tests
dlerror.cSuccessNone0.048703s0.104319s
Success
Memory Tests
mmap-negative1.cSuccessNone0.120583s0.107960s
Success
mmap-negative2.cSuccessNone0.115443s0.142554s
Success
Signal Tests
signal_resethand.cSuccessNone1.055861s1.124811s
Success

C++ harness

Summary

MetricValue
Total1
Success1
Failures0
Compile failures0
Runtime failures0
Output mismatch0
Timeouts0

Cases

TestStatusError typeNative timeWasm timeOutput
tests/unit-tests/cpp/sort.cppSuccess0.565687s9.880784s
LIBCPP_SORT_OK 1 2 3

@github-actions

Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

grate harness

Grate Test Report

MetricValue
Total15
Success14
Failures1
Compile Failures0
Runtime Failures1
Timeout Failures0
Missing Pair Failures0

Cases

TestStatusError TypeOutput
concurrent-request/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] PASS

STDERR:

concurrent-request/race-test_grate.cSuccess
STDOUT:
pass

STDERR:

concurrent-request/thread_race_grate.cSuccess
STDOUT:
[thread_race] Registering handler for cage 2 in grate 1 with fn ptr addr: 3
[thread_race] PASS: 20 threads x 100000 calls returned 10
[thread_race] PASS

STDERR:

copy-data-between-cages/cp-stncpy_grate.cSuccess
STDOUT:
[cage] pathname addr=0xfffb6ff9
[cage] pathname='random'
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

copy-data-between-cages/cpdata_grate.cSuccess
STDOUT:
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

interposing-calls/fork-with-newret_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Cage] Forked process with PID: 10
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-exec_grate.cSuccess
STDOUT:
[Grate|interpose-exec] Registering exec handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
Exec successful, argv[1]: --execd
[Grate|interpose-exec] PASS

STDERR:

interposing-calls/interpose-exit_grate.cSuccess
STDOUT:
[Grate|interpose-exit] Registering exit handler for cage 2 in grate 1 with fn ptr addr: 3
Exiting...

[Grate|interpose-exit] PASS

STDERR:

interposing-calls/interpose-fork_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-mmap_grate.cSuccess
STDOUT:
[Grate|interpose-mmap] Registering mmap handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
mmap test: PASS
[Grate|interpose-mmap] PASS

STDERR:

interposing-calls/interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 4
[cage] registering 107. grateid: 2 cageid: 3
[Grate|interpose-register] Handling function ptr: 4 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|geteuid] Registering geteuid handler for cage 1 in grate 1 with fn ptr addr: 3
[Grate|interpose-register] Handling function ptr: 3 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|interpose-register] PASS

STDERR:

multi-register_grate.cSuccess
STDOUT:
[Grate|multi-register_grate] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 4
[Grate|multi-register_grate] Registering getuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|multi-register_grate] Handling function ptr: 4 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Grate|multi-register_grate] Handling function ptr: 3 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Cage | multi-register] PASS: geteuid=10, getuid=20
[Grate|multi-register] PASS

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 3 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 4 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:

simple-tests/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|geteuid] Handling function ptr: 3 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

simple-tests/mmap-flag_grate.cFailureRuntime_Failure
Exit code: 70
STDOUT:
[Grate|mmap-flag] intercepting mmap: addr=0x0 len=8392704 prot=0x3 flags=0x32 fd=-1 off=0
[Grate|mmap-flag] mmap returned 264241152
[Grate|mmap-flag] intercepting mmap: addr=0x0 len=176128 prot=0x3 flags=0x22 fd=-1 off=0
[Grate|mmap-flag] mmap returned -180224

STDERR:
[Grate|mmap-flag] FAIL: child exited with status 256
Fatal glibc error: malloc.c:2603 (void *sysmalloc(size_t, mstate)): assertion failed: (old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end & (pagesize - 1)) == 0)
failed to run main module

Caused by:
0: failed to invoke command default
1: wasm trap: wasm unreachable instruction executed

static harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases3
Number of Successes3
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Static Tests
fork_simple.cSuccessNone0.056916s4.352794s
Success
thread.cSuccessNone0.044752s4.401851s
Success
tls_test.cSuccessNone0.067384s4.416713s
Success
Fail Tests

Summary

MetricCount
Total Test Cases0
Number of Successes0
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases218
Number of Successes218
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
File Tests
chartests.cSuccessNone0.045834s0.136016s
Success
chdir_getcwd.cSuccessNone0.050073s0.117587s
Success
chmod.cSuccessNone0.052326s0.116469s
Success
clock_gettime_highlevel.cSuccessNone0.116621s0.152411s
Success
clock_gettime_simple.cSuccessNone0.040420s0.095165s
Success
cloexec.cSuccessNone0.051374s0.122322s
Success
close.cSuccessNone0.057712s0.128308s
Success
creat_access.cSuccessNone0.050227s0.107450s
Success
doubleclose.cSuccessNone0.041590s0.090439s
Success
dup.cSuccessNone0.042159s0.107553s
Success
dup2.cSuccessNone0.048740s0.107595s
Success
dup3.cSuccessNone0.045993s0.105634s
Success
dupwrite.cSuccessNone0.049560s0.105965s
Success
etc_conf.cSuccessNone0.044411s0.107211s
Success
faccessat.cSuccessNone0.045209s0.109770s
Success
fchdir.cSuccessNone0.052279s0.120756s
Success
fchmod.cSuccessNone0.051405s0.115661s
Success
fchmodat.cSuccessNone0.044558s0.104741s
Success
fcntl.cSuccessNone0.050468s0.123278s
Success
fdatasync.cSuccessNone0.050817s0.103527s
Success
filetest.cSuccessNone0.048651s0.101911s
Success
filetest1000.cSuccessNone0.056977s0.116435s
Success
flock.cSuccessNone0.058194s0.142941s
Success
fstat.cSuccessNone0.050985s0.118319s
Success
fstatfs.cSuccessNone0.043940s0.099978s
Success
fsync.cSuccessNone0.048519s0.102807s
Success
ftruncate.cSuccessNone0.054136s0.202124s
Success
getcwd.cSuccessNone0.045754s0.097642s
Success
getcwd_null.cSuccessNone0.049354s0.112358s
Success
getpgid.cSuccessNone0.043153s0.095240s
Success
getrandom.cSuccessNone0.048488s0.120602s
Success
ioctl.cSuccessNone0.051494s0.113995s
Success
link.cSuccessNone0.052871s0.149864s
Success
locale_test.cSuccessNone0.064279s0.307690s
Success
lseek.cSuccessNone0.053577s0.184391s
Success
lstat.cSuccessNone0.054196s0.127700s
Success
mkdir_rmdir.cSuccessNone0.052623s0.109828s
Success
mkfifo_test.cSuccessNone0.055400s0.148329s
Success
mknod.cSuccessNone0.047956s0.117657s
Success
nocancel_io.cSuccessNone0.052966s0.133692s
Success
open.cSuccessNone0.045442s0.095994s
Success
openat.cSuccessNone0.044598s0.103004s
Success
path_conversion_safety.cSuccessNone0.055069s0.126991s
Success
ppoll.cSuccessNone0.052690s0.117507s
Success
pread_pwrite.cSuccessNone0.046102s0.111169s
Success
preadv_pwritev.cSuccessNone0.051305s0.123879s
Success
printf.cSuccessNone0.041104s0.090560s
Success
prlimit64.cSuccessNone0.042267s0.097077s
Success
read.cSuccessNone0.050351s0.120257s
Success
readbytes.cSuccessNone0.045595s0.099944s
Success
readdir_basic.cSuccessNone0.053769s0.140498s
Success
readlink.cSuccessNone0.050697s0.114870s
Success
readlinkat.cSuccessNone0.051569s0.117127s
Success
readv_writev_test.cSuccessNone0.051075s0.120284s
Success
rename.cSuccessNone0.051845s0.111510s
Success
renameat.cSuccessNone0.052033s0.123596s
Success
sc-writev.cSuccessNone0.047514s0.107839s
Success
stat.cSuccessNone0.049997s0.116619s
Success
statfs.cSuccessNone0.044167s0.099212s
Success
symlink.cSuccessNone0.052303s0.138277s
Success
sync_file_range.cSuccessNone0.047217s0.102702s
Success
timespec_time_t_compat.cSuccessNone0.046380s0.098412s
Success
truncate.cSuccessNone0.051538s0.126924s
Success
unlink.cSuccessNone0.052639s0.145015s
Success
unlinkat.cSuccessNone0.051306s0.127080s
Success
utimensat.cSuccessNone0.048869s0.124259s
Success
write.cSuccessNone0.042583s0.091083s
Success
writeloop.cSuccessNone0.052284s0.109249s
Success
writepartial.cSuccessNone0.050342s0.102472s
Success
writev.cSuccessNone0.050713s0.115539s
Success
Math Tests
math_link_smoke.cSuccessNone0.053549s0.100668s
Success
math_tests.cSuccessNone0.058944s0.130090s
Success
printf_float.cSuccessNone0.054071s0.123539s
Success
Memory Tests
brk.cSuccessNone0.047178s0.104956s
Success
fork_large_memory.cSuccessNone0.078295s0.361724s
Success
malloc.cSuccessNone0.045525s0.093994s
Success
malloc_large.cSuccessNone0.045246s0.094719s
Success
memcpy.cSuccessNone0.046484s0.094731s
Success
memory_error_test.cSuccessNone0.051372s0.127294s
Success
mmap.cSuccessNone0.042247s0.095504s
Success
mmap_aligned.cSuccessNone0.043329s0.107752s
Success
mmap_complicated.cSuccessNone0.049870s0.119585s
Success
mmap_file.cSuccessNone0.049626s0.108289s
Success
mmap_shared.cSuccessNone0.052130s0.116697s
Success
mmaptest.cSuccessNone0.044936s0.101030s
Success
mprotect.cSuccessNone0.043277s0.096170s
Success
mprotect_boundary.cSuccessNone0.043354s0.107055s
Success
mprotect_end_region.cSuccessNone0.043371s0.101815s
Success
mprotect_middle_region.cSuccessNone0.042652s0.101546s
Success
mprotect_multiple_times.cSuccessNone0.042967s0.102646s
Success
mprotect_same_value.cSuccessNone0.042319s0.099220s
Success
mprotect_spanning_regions.cSuccessNone0.043825s0.116661s
Success
munmap_adjacent_shm.cSuccessNone0.044978s0.114215s
Success
sbrk.cSuccessNone0.044770s0.098054s
Success
segfault.cSuccessNone0.050687s0.131828s
Success
shm.cSuccessNone0.049300s0.120119s
Success
shmtest.cSuccessNone0.043288s0.101234s
Success
thread_malloc_sequential.cSuccessNone0.050855s0.147076s
Success
vtable.cSuccessNone0.054705s0.114019s
Success
Networking Tests
accept4.cSuccessNone0.054870s0.126951s
Success
dns_resolve_test.cSuccessNone0.049675s0.110932s
Success
dnstest.cSuccessNone0.049350s0.111438s
Success
epoll_badfd.cSuccessNone0.044298s0.098285s
Success
epoll_edge_triggered.cSuccessNone0.209524s0.375045s
Success
epollcreate1.cSuccessNone0.051316s0.120079s
Success
error_handling_net.cSuccessNone0.060061s0.181410s
Success
getaddrinfo_test.cSuccessNone0.053433s0.145553s
Success
getaddrinfo_unspec.cSuccessNone0.051340s0.135773s
Success
gethostname.cSuccessNone0.043084s0.095027s
Success
getifaddrs.cSuccessNone0.052263s0.112992s
Success
getsockname.cSuccessNone0.056439s0.116889s
Success
getsockopt.cSuccessNone0.056721s0.149359s
Success
ipv6_basic.cSuccessNone0.055110s0.149972s
Success
makepipe.cSuccessNone0.043189s0.093702s
Success
nonblocking_eagain.cSuccessNone0.055060s0.155243s
Success
pipe.cSuccessNone0.053034s0.120807s
Success
pipe2.cSuccessNone0.052136s0.109364s
Success
pipeinput.cSuccessNone0.053864s0.133390s
Success
pipeinput2.cSuccessNone0.053272s0.140419s
Success
pipeonestring.cSuccessNone0.054235s0.134087s
Success
pipepong.cSuccessNone0.052440s0.138054s
Success
pipewrite.cSuccessNone0.046992s0.110261s
Success
poll.cSuccessNone0.052055s0.104988s
Success
recvfrom-sendto.cSuccessNone0.054686s0.121273s
Success
sendmsg_recvmsg_test.cSuccessNone0.051582s0.123174s
Success
serverclient.cSuccessNone0.051008s0.124701s
Success
shutdown.cSuccessNone0.054186s0.122203s
Success
shutdown_fork.cSuccessNone0.052867s0.124123s
Success
simple-select.cSuccessNone0.052507s0.134044s
Success
simple_epoll.cSuccessNone0.051494s0.115848s
Success
socket.cSuccessNone0.049509s0.106263s
Success
socket_cloexec.cSuccessNone0.050715s0.107436s
Success
socket_options_advanced.cSuccessNone0.057227s0.166146s
Success
socketepoll.cSuccessNone0.049383s0.107048s
Success
socketpair.cSuccessNone0.050717s0.118497s
Success
socketselect.cSuccessNone0.049489s0.117085s
Success
udp_send_recv.cSuccessNone0.158659s0.258791s
Success
uds-getsockname.cSuccessNone0.050948s0.107339s
Success
uds-nb-select.cSuccessNone2.061204s2.176402s
Success
uds-serverclient.cSuccessNone0.056944s0.139120s
Success
uds-socketselect.cSuccessNone0.053176s0.118562s
Success
uds_listen_poll.cSuccessNone1.057309s1.156087s
Success
writev_socket.cSuccessNone0.054074s0.152531s
Success
Process Tests
barrier_test.cSuccessNone0.048649s0.114657s
Success
chain_thread.cSuccessNone1.051397s1.121693s
Success
ctor_syscall_test.cSuccessNone0.040807s0.093854s
Success
cxa_atexit_test.cSuccessNone0.047329s0.100641s
Success
exec_non_utf8.cSuccessNone0.050979s0.106583s
Success
execve_shebang.cSuccessNone0.050998s0.106630s
Success
exit.cSuccessNone0.047959s0.098164s
Success
exit_failure.cSuccessNone0.050182s0.110743s
Success
exit_group_thread.cSuccessNone0.051856s0.124425s
Success
exit_status_first_wins.cSuccessNone0.053705s0.124222s
Success
flockfile_test.cSuccessNone0.050507s0.124741s
Success
fork2malloc.cSuccessNone0.051422s0.116845s
Success
fork_select.cSuccessNone0.049664s0.123402s
Success
fork_simple.cSuccessNone0.048329s0.110539s
Success
fork_syscall.cSuccessNone0.054248s0.339446s
Success
fork_tls_ctype.cSuccessNone0.052532s0.135780s
Success
forkandopen.cSuccessNone0.051455s0.125904s
Success
forkdup.cSuccessNone0.054352s0.119078s
Success
forkexecuid.cSuccessNone0.048474s0.126461s
Success
forkexecv-arg.cSuccessNone0.049415s0.117293s
Success
forkexecv.cSuccessNone0.047968s0.114571s
Success
forkfiles.cSuccessNone0.051272s0.124462s
Success
forkmalloc.cSuccessNone0.052304s0.112922s
Success
forknodup.cSuccessNone0.051405s0.123215s
Success
function-ptr.cSuccessNone0.045340s0.096460s
Success
getegid_syscall.cSuccessNone0.053259s0.270976s
Success
getgid_syscall.cSuccessNone0.050947s0.258549s
Success
getpid.cSuccessNone0.043019s0.095098s
Success
getpid_syscall.cSuccessNone0.052832s0.266509s
Success
getppid.cSuccessNone0.053236s0.112431s
Success
getppid_syscall.cSuccessNone0.053233s0.231209s
Success
getuid.cSuccessNone0.050856s0.105519s
Success
getuid_syscall.cSuccessNone0.049876s0.169910s
Success
hello-arg.cSuccessNone0.040840s0.095272s
Success
hello.cSuccessNone0.041143s0.090775s
Success
longjmp.cSuccessNone0.042889s0.100710s
Success
mutex.cSuccessNone2.053698s2.116876s
Success
printf_deadlock_smoke.cSuccessNone0.059949s0.146648s
Success
printf_thread_test.cSuccessNone0.048700s0.119707s
Success
sem_forks.cSuccessNone0.053552s0.140489s
Success
setsid.cSuccessNone0.043419s0.092902s
Success
template.cSuccessNone0.050419s0.137336s
Success
test_exec_nofork.cSuccessNone0.049469s0.112475s
Success
test_unlink_open_file.cSuccessNone0.044847s0.096022s
Success
thread-guard.cSuccessNone0.048964s0.113930s
Success
thread-test.cSuccessNone0.045306s0.103416s
Success
thread.cSuccessNone0.045356s0.103295s
Success
thread_cageid_race.cSuccessNone0.045652s0.152819s
Success
tls_test.cSuccessNone0.048106s0.117983s
Success
uname.cSuccessNone0.044651s0.095219s
Success
wait.cSuccessNone0.047895s0.119368s
Success
waitpid_anychild.cSuccessNone0.049725s0.114906s
Success
waitpid_syscall.cSuccessNone1.050481s1.171613s
Success
waitpid_wnohang.cSuccessNone0.050511s0.119084s
Success
Signal Tests
alarm.cSuccessNone7.049778s7.138217s
Success
eintr_fork_signal.cSuccessNone1.051714s1.130005s
Success
kill.cSuccessNone1.049451s1.117647s
Success
setitimer.cSuccessNone7.050072s7.143764s
Success
sigalrm.cSuccessNone2.051441s2.122793s
Success
sigaltstack.cSuccessNone0.052481s0.117577s
Success
sigchld.cSuccessNone1.051504s1.115439s
Success
signal-fork.cSuccessNone4.052627s4.116326s
Success
signal-simple.cSuccessNone0.051264s0.108985s
Success
signal_SIGCHLD.cSuccessNone0.049297s0.117902s
Success
signal_fork.cSuccessNone0.047031s0.118424s
Success
signal_int_ignored.cSuccessNone2.050813s2.116925s
Success
signal_kill_cleanup.cSuccessNone1.048975s1.112935s
Success
signal_procmask.cSuccessNone0.045714s0.106486s
Success
signal_read_interrupt.cSuccessNone0.554218s0.624337s
Success
signal_recursive.cSuccessNone0.045372s0.110071s
Success
signal_sa_mask.cSuccessNone0.044753s0.103717s
Success
signal_select_interrupt.cSuccessNone0.554294s0.628464s
Success
signal_write_interrupt.cSuccessNone1.053737s1.124688s
Success
sigpipe.cSuccessNone1.052782s1.124656s
Success
sigprocmask.cSuccessNone1.049666s1.113051s
Success
Fail Tests

Summary

MetricCount
Total Test Cases4
Number of Successes4
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Dylink Tests
dlerror.cSuccessNone0.042115s0.096960s
Success
Memory Tests
mmap-negative1.cSuccessNone0.122306s0.104469s
Success
mmap-negative2.cSuccessNone0.117563s0.122293s
Success
Signal Tests
signal_resethand.cSuccessNone1.050547s1.114580s
Success

C++ harness

Summary

MetricValue
Total1
Success1
Failures0
Compile failures0
Runtime failures0
Output mismatch0
Timeouts0

Cases

TestStatusError typeNative timeWasm timeOutput
tests/unit-tests/cpp/sort.cppSuccess0.643852s9.945451s
LIBCPP_SORT_OK 1 2 3

I had the semantic wrong. Looking at imfs-grate's actual usage
(rust-grates/imfs-grate/src/imfs/mod.rs around the cage-side mmap
forward): the grate passes target_addr = a uaddr in its OWN linear
memory (returned from a prior SYS_MMAP that allocated the imfs
content region) along with arg_cage = grate_id | GRATE_MEMORY_FLAG.
The runtime is supposed to read this as "uaddr in the named cage's
memory" and resolve via that cage's base — not as "use as-is".

Update the helper so:
- flag unset → owner = calling cage  (existing cage-side path)
- flag set   → owner = arg_cageid & LIND_ARG_CAGEID_MASK
- sysaddr = base(owner) + arg

This matches Sanchit's "all within addr_translation.h" framing — the
generalization of the glibc-side __lind_translate_uaddr_to_host to
arbitrary cageid, which only the runtime can do.

Removes the temporary diagnostic eprintln.
The earlier GRATE_MEMORY_FLAG-aware branches in mmap_syscall and
brk_syscall were dead code: by the time a syscall reaches the runtime,
glibc's TRANSLATE_ARG_TO_HOST (invoked by make_threei_call for every
arg) has already consumed the flag — translating uaddr → host pointer
when the flag was set and stripping the flag bit from the cageid.
The runtime always sees `(post-translation arg, flag-stripped cageid)`.

For byte-buffer args (paths, read/write bufs, etc.) the distinction
is invisible — the runtime dereferences the host pointer either way.
For mmap/brk the runtime has to *interpret* the address, so it has to
distinguish a uaddr (translate via calling cage's base) from a host
sysaddr (use as-is).

Use value range as the discriminator: wasm32 uaddrs are ≤ 4GB by
definition; host base addresses (and therefore sysaddrs) are typically
far above 4GB. The ranges don't overlap.

- sc_convert_addr_to_sys now keys on `arg <= u32::MAX`.
- brk_syscall now keys on the same range check, dropping the
  GRATE_MEMORY_FLAG check.
- Removed unused GRATE_MEMORY_FLAG import from fs_calls.rs and the
  temporary diagnostic eprintln from mmap_syscall.
@github-actions

Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

grate harness

Grate Test Report

MetricValue
Total15
Success14
Failures1
Compile Failures0
Runtime Failures0
Timeout Failures1
Missing Pair Failures0

Cases

TestStatusError TypeOutput
concurrent-request/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] PASS

STDERR:

concurrent-request/race-test_grate.cSuccess
STDOUT:
pass

STDERR:

concurrent-request/thread_race_grate.cSuccess
STDOUT:
[thread_race] Registering handler for cage 2 in grate 1 with fn ptr addr: 3
[thread_race] PASS: 20 threads x 100000 calls returned 10
[thread_race] PASS

STDERR:

copy-data-between-cages/cp-stncpy_grate.cSuccess
STDOUT:
[cage] pathname addr=0xfffb6ff9
[cage] pathname='random'
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

copy-data-between-cages/cpdata_grate.cSuccess
STDOUT:
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

interposing-calls/fork-with-newret_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Cage] Forked process with PID: 10
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-exec_grate.cSuccess
STDOUT:
[Grate|interpose-exec] Registering exec handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
Exec successful, argv[1]: --execd
[Grate|interpose-exec] PASS

STDERR:

interposing-calls/interpose-exit_grate.cSuccess
STDOUT:
[Grate|interpose-exit] Registering exit handler for cage 2 in grate 1 with fn ptr addr: 3
Exiting...

[Grate|interpose-exit] PASS

STDERR:

interposing-calls/interpose-fork_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-mmap_grate.cSuccess
STDOUT:
[Grate|interpose-mmap] Registering mmap handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
mmap test: PASS
[Grate|interpose-mmap] PASS

STDERR:

interposing-calls/interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 4
[cage] registering 107. grateid: 2 cageid: 3
[Grate|interpose-register] Handling function ptr: 4 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|geteuid] Registering geteuid handler for cage 1 in grate 1 with fn ptr addr: 3
[Grate|interpose-register] Handling function ptr: 3 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|interpose-register] PASS

STDERR:

multi-register_grate.cSuccess
STDOUT:
[Grate|multi-register_grate] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 4
[Grate|multi-register_grate] Registering getuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|multi-register_grate] Handling function ptr: 4 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Grate|multi-register_grate] Handling function ptr: 3 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Cage | multi-register] PASS: geteuid=10, getuid=20
[Grate|multi-register] PASS

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 3 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 4 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:

simple-tests/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|geteuid] Handling function ptr: 3 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

simple-tests/mmap-flag_grate.cFailureTimeout
Timed Out (timeout: 30s)

static harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases3
Number of Successes3
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Static Tests
fork_simple.cSuccessNone0.051885s4.375218s
Success
thread.cSuccessNone0.045461s4.435318s
Success
tls_test.cSuccessNone0.059234s4.465607s
Success
Fail Tests

Summary

MetricCount
Total Test Cases0
Number of Successes0
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases218
Number of Successes218
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
File Tests
chartests.cSuccessNone0.048529s0.143255s
Success
chdir_getcwd.cSuccessNone0.050481s0.113121s
Success
chmod.cSuccessNone0.055496s0.121812s
Success
clock_gettime_highlevel.cSuccessNone0.117707s0.157347s
Success
clock_gettime_simple.cSuccessNone0.045116s0.103223s
Success
cloexec.cSuccessNone0.054531s0.128192s
Success
close.cSuccessNone0.059531s0.131256s
Success
creat_access.cSuccessNone0.053350s0.115188s
Success
doubleclose.cSuccessNone0.044173s0.095716s
Success
dup.cSuccessNone0.045530s0.111573s
Success
dup2.cSuccessNone0.049471s0.108780s
Success
dup3.cSuccessNone0.047241s0.110825s
Success
dupwrite.cSuccessNone0.052296s0.108508s
Success
etc_conf.cSuccessNone0.046481s0.112958s
Success
faccessat.cSuccessNone0.046848s0.112008s
Success
fchdir.cSuccessNone0.054579s0.121943s
Success
fchmod.cSuccessNone0.053662s0.124528s
Success
fchmodat.cSuccessNone0.045979s0.111004s
Success
fcntl.cSuccessNone0.051469s0.127491s
Success
fdatasync.cSuccessNone0.049155s0.106620s
Success
filetest.cSuccessNone0.051636s0.109838s
Success
filetest1000.cSuccessNone0.058004s0.120123s
Success
flock.cSuccessNone0.059101s0.144730s
Success
fstat.cSuccessNone0.052755s0.122633s
Success
fstatfs.cSuccessNone0.048193s0.105788s
Success
fsync.cSuccessNone0.051790s0.109670s
Success
ftruncate.cSuccessNone0.056329s0.208471s
Success
getcwd.cSuccessNone0.049046s0.101699s
Success
getcwd_null.cSuccessNone0.051764s0.114964s
Success
getpgid.cSuccessNone0.044913s0.097326s
Success
getrandom.cSuccessNone0.051736s0.122845s
Success
ioctl.cSuccessNone0.053474s0.116054s
Success
link.cSuccessNone0.054499s0.152943s
Success
locale_test.cSuccessNone0.066464s0.317306s
Success
lseek.cSuccessNone0.056403s0.187651s
Success
lstat.cSuccessNone0.055475s0.131108s
Success
mkdir_rmdir.cSuccessNone0.051971s0.111428s
Success
mkfifo_test.cSuccessNone0.056529s0.152282s
Success
mknod.cSuccessNone0.051273s0.122124s
Success
nocancel_io.cSuccessNone0.054724s0.134971s
Success
open.cSuccessNone0.046249s0.099668s
Success
openat.cSuccessNone0.047382s0.109367s
Success
path_conversion_safety.cSuccessNone0.056683s0.132947s
Success
ppoll.cSuccessNone0.057408s0.123281s
Success
pread_pwrite.cSuccessNone0.050368s0.118364s
Success
preadv_pwritev.cSuccessNone0.056138s0.130254s
Success
printf.cSuccessNone0.045011s0.097437s
Success
prlimit64.cSuccessNone0.045788s0.100249s
Success
read.cSuccessNone0.052607s0.123620s
Success
readbytes.cSuccessNone0.048136s0.105008s
Success
readdir_basic.cSuccessNone0.056247s0.144445s
Success
readlink.cSuccessNone0.051495s0.120433s
Success
readlinkat.cSuccessNone0.052447s0.122207s
Success
readv_writev_test.cSuccessNone0.054218s0.123223s
Success
rename.cSuccessNone0.053523s0.115443s
Success
renameat.cSuccessNone0.054560s0.128279s
Success
sc-writev.cSuccessNone0.049952s0.108497s
Success
stat.cSuccessNone0.050643s0.120970s
Success
statfs.cSuccessNone0.044286s0.101115s
Success
symlink.cSuccessNone0.054105s0.142913s
Success
sync_file_range.cSuccessNone0.049718s0.107006s
Success
timespec_time_t_compat.cSuccessNone0.046703s0.100394s
Success
truncate.cSuccessNone0.054314s0.129346s
Success
unlink.cSuccessNone0.054384s0.147691s
Success
unlinkat.cSuccessNone0.053718s0.127827s
Success
utimensat.cSuccessNone0.049616s0.127526s
Success
write.cSuccessNone0.045464s0.099757s
Success
writeloop.cSuccessNone0.053811s0.112851s
Success
writepartial.cSuccessNone0.051035s0.101337s
Success
writev.cSuccessNone0.053180s0.120558s
Success
Math Tests
math_link_smoke.cSuccessNone0.055886s0.103037s
Success
math_tests.cSuccessNone0.061890s0.130733s
Success
printf_float.cSuccessNone0.055243s0.126736s
Success
Memory Tests
brk.cSuccessNone0.047956s0.104384s
Success
fork_large_memory.cSuccessNone0.080792s0.367313s
Success
malloc.cSuccessNone0.045906s0.095166s
Success
malloc_large.cSuccessNone0.046564s0.095655s
Success
memcpy.cSuccessNone0.045139s0.096292s
Success
memory_error_test.cSuccessNone0.051575s0.131675s
Success
mmap.cSuccessNone0.042465s0.095929s
Success
mmap_aligned.cSuccessNone0.045367s0.113546s
Success
mmap_complicated.cSuccessNone0.049650s0.120665s
Success
mmap_file.cSuccessNone0.050200s0.109674s
Success
mmap_shared.cSuccessNone0.051025s0.116003s
Success
mmaptest.cSuccessNone0.045267s0.101120s
Success
mprotect.cSuccessNone0.045395s0.097914s
Success
mprotect_boundary.cSuccessNone0.044340s0.107379s
Success
mprotect_end_region.cSuccessNone0.044217s0.103324s
Success
mprotect_middle_region.cSuccessNone0.043554s0.103145s
Success
mprotect_multiple_times.cSuccessNone0.043587s0.104193s
Success
mprotect_same_value.cSuccessNone0.043423s0.100615s
Success
mprotect_spanning_regions.cSuccessNone0.044243s0.117796s
Success
munmap_adjacent_shm.cSuccessNone0.045948s0.117544s
Success
sbrk.cSuccessNone0.045317s0.101532s
Success
segfault.cSuccessNone0.050734s0.132787s
Success
shm.cSuccessNone0.049540s0.121159s
Success
shmtest.cSuccessNone0.045230s0.104212s
Success
thread_malloc_sequential.cSuccessNone0.051786s0.148804s
Success
vtable.cSuccessNone0.055144s0.115231s
Success
Networking Tests
accept4.cSuccessNone0.056735s0.130954s
Success
dns_resolve_test.cSuccessNone0.050327s0.112490s
Success
dnstest.cSuccessNone0.049978s0.110735s
Success
epoll_badfd.cSuccessNone0.044864s0.099641s
Success
epoll_edge_triggered.cSuccessNone0.209243s0.375141s
Success
epollcreate1.cSuccessNone0.052129s0.122907s
Success
error_handling_net.cSuccessNone0.063016s0.188420s
Success
getaddrinfo_test.cSuccessNone0.057769s0.151215s
Success
getaddrinfo_unspec.cSuccessNone0.072428s0.204838s
Success
gethostname.cSuccessNone0.044005s0.095256s
Success
getifaddrs.cSuccessNone0.053602s0.114671s
Success
getsockname.cSuccessNone0.056980s0.113367s
Success
getsockopt.cSuccessNone0.055019s0.149774s
Success
ipv6_basic.cSuccessNone0.056150s0.149424s
Success
makepipe.cSuccessNone0.044075s0.095898s
Success
nonblocking_eagain.cSuccessNone0.057836s0.160410s
Success
pipe.cSuccessNone0.055429s0.122734s
Success
pipe2.cSuccessNone0.052945s0.116179s
Success
pipeinput.cSuccessNone0.054859s0.138940s
Success
pipeinput2.cSuccessNone0.057506s0.146303s
Success
pipeonestring.cSuccessNone0.056132s0.139055s
Success
pipepong.cSuccessNone0.055100s0.144990s
Success
pipewrite.cSuccessNone0.046937s0.110629s
Success
poll.cSuccessNone0.051914s0.108013s
Success
recvfrom-sendto.cSuccessNone0.052645s0.121485s
Success
sendmsg_recvmsg_test.cSuccessNone0.054336s0.126028s
Success
serverclient.cSuccessNone0.052834s0.125676s
Success
shutdown.cSuccessNone0.055112s0.122937s
Success
shutdown_fork.cSuccessNone0.051767s0.123535s
Success
simple-select.cSuccessNone0.053800s0.137716s
Success
simple_epoll.cSuccessNone0.051816s0.117085s
Success
socket.cSuccessNone0.050065s0.107238s
Success
socket_cloexec.cSuccessNone0.050182s0.106815s
Success
socket_options_advanced.cSuccessNone0.057151s0.168421s
Success
socketepoll.cSuccessNone0.050318s0.107387s
Success
socketpair.cSuccessNone0.049960s0.120444s
Success
socketselect.cSuccessNone0.050820s0.118852s
Success
udp_send_recv.cSuccessNone0.160138s0.260916s
Success
uds-getsockname.cSuccessNone0.050967s0.108399s
Success
uds-nb-select.cSuccessNone2.062134s2.180487s
Success
uds-serverclient.cSuccessNone0.055347s0.143353s
Success
uds-socketselect.cSuccessNone0.052724s0.122035s
Success
uds_listen_poll.cSuccessNone1.057746s1.155583s
Success
writev_socket.cSuccessNone0.055364s0.152326s
Success
Process Tests
barrier_test.cSuccessNone0.049572s0.113760s
Success
chain_thread.cSuccessNone1.051269s1.123572s
Success
ctor_syscall_test.cSuccessNone0.041499s0.095069s
Success
cxa_atexit_test.cSuccessNone0.046392s0.099866s
Success
exec_non_utf8.cSuccessNone0.049767s0.109023s
Success
execve_shebang.cSuccessNone0.051200s0.107899s
Success
exit.cSuccessNone0.047914s0.099477s
Success
exit_failure.cSuccessNone0.050508s0.116145s
Success
exit_group_thread.cSuccessNone0.051923s0.122382s
Success
exit_status_first_wins.cSuccessNone0.054648s0.127168s
Success
flockfile_test.cSuccessNone0.050874s0.125464s
Success
fork2malloc.cSuccessNone0.051626s0.116910s
Success
fork_select.cSuccessNone0.051130s0.127151s
Success
fork_simple.cSuccessNone0.048772s0.114642s
Success
fork_syscall.cSuccessNone0.056814s0.331394s
Success
fork_tls_ctype.cSuccessNone0.053380s0.135542s
Success
forkandopen.cSuccessNone0.051637s0.125112s
Success
forkdup.cSuccessNone0.054513s0.121074s
Success
forkexecuid.cSuccessNone0.049750s0.127777s
Success
forkexecv-arg.cSuccessNone0.049727s0.118721s
Success
forkexecv.cSuccessNone0.050212s0.115057s
Success
forkfiles.cSuccessNone0.052131s0.123179s
Success
forkmalloc.cSuccessNone0.053303s0.114869s
Success
forknodup.cSuccessNone0.051804s0.125211s
Success
function-ptr.cSuccessNone0.045087s0.097041s
Success
getegid_syscall.cSuccessNone0.050638s0.253153s
Success
getgid_syscall.cSuccessNone0.051576s0.264948s
Success
getpid.cSuccessNone0.043612s0.094769s
Success
getpid_syscall.cSuccessNone0.052872s0.271267s
Success
getppid.cSuccessNone0.051895s0.113407s
Success
getppid_syscall.cSuccessNone0.053670s0.234618s
Success
getuid.cSuccessNone0.051760s0.105641s
Success
getuid_syscall.cSuccessNone0.049974s0.168915s
Success
hello-arg.cSuccessNone0.041311s0.095720s
Success
hello.cSuccessNone0.040660s0.091384s
Success
longjmp.cSuccessNone0.043724s0.102479s
Success
mutex.cSuccessNone2.055323s2.119691s
Success
printf_deadlock_smoke.cSuccessNone0.059180s0.147163s
Success
printf_thread_test.cSuccessNone0.048996s0.121117s
Success
sem_forks.cSuccessNone0.053334s0.132571s
Success
setsid.cSuccessNone0.043433s0.093784s
Success
template.cSuccessNone0.050713s0.139292s
Success
test_exec_nofork.cSuccessNone0.049481s0.116337s
Success
test_unlink_open_file.cSuccessNone0.045059s0.096696s
Success
thread-guard.cSuccessNone0.048131s0.115230s
Success
thread-test.cSuccessNone0.046737s0.107188s
Success
thread.cSuccessNone0.045600s0.104694s
Success
thread_cageid_race.cSuccessNone0.045865s0.154502s
Success
tls_test.cSuccessNone0.048622s0.121603s
Success
uname.cSuccessNone0.043533s0.094056s
Success
wait.cSuccessNone0.047043s0.119265s
Success
waitpid_anychild.cSuccessNone0.050493s0.116838s
Success
waitpid_syscall.cSuccessNone1.051715s1.161916s
Success
waitpid_wnohang.cSuccessNone0.052506s0.122556s
Success
Signal Tests
alarm.cSuccessNone7.052136s7.147746s
Success
eintr_fork_signal.cSuccessNone1.053980s1.134415s
Success
kill.cSuccessNone1.050912s1.120496s
Success
setitimer.cSuccessNone7.052798s7.148310s
Success
sigalrm.cSuccessNone2.052748s2.123690s
Success
sigaltstack.cSuccessNone0.053961s0.121926s
Success
sigchld.cSuccessNone1.054992s1.122883s
Success
signal-fork.cSuccessNone4.054147s4.119535s
Success
signal-simple.cSuccessNone0.052895s0.110184s
Success
signal_SIGCHLD.cSuccessNone0.052425s0.128193s
Success
signal_fork.cSuccessNone0.048479s0.123162s
Success
signal_int_ignored.cSuccessNone2.052542s2.118659s
Success
signal_kill_cleanup.cSuccessNone1.049531s1.115124s
Success
signal_procmask.cSuccessNone0.047891s0.111590s
Success
signal_read_interrupt.cSuccessNone0.557958s0.629072s
Success
signal_recursive.cSuccessNone0.046738s0.111960s
Success
signal_sa_mask.cSuccessNone0.047526s0.107206s
Success
signal_select_interrupt.cSuccessNone0.558553s0.632841s
Success
signal_write_interrupt.cSuccessNone1.053086s1.128130s
Success
sigpipe.cSuccessNone1.053317s1.127184s
Success
sigprocmask.cSuccessNone1.051419s1.114328s
Success
Fail Tests

Summary

MetricCount
Total Test Cases4
Number of Successes4
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Dylink Tests
dlerror.cSuccessNone0.043930s0.098121s
Success
Memory Tests
mmap-negative1.cSuccessNone0.128946s0.103521s
Success
mmap-negative2.cSuccessNone0.129583s0.107682s
Success
Signal Tests
signal_resethand.cSuccessNone1.052748s1.114964s
Success

C++ harness

Summary

MetricValue
Total1
Success1
Failures0
Compile failures0
Runtime failures0
Output mismatch0
Timeouts0

Cases

TestStatusError typeNative timeWasm timeOutput
tests/unit-tests/cpp/sort.cppSuccess0.483918s10.621644s
LIBCPP_SORT_OK 1 2 3

Anonymous / fd=-1 mmaps (including the runtime's pre-main
early_init_stack call) are forwarded by the grate unchanged.  Tagging
those with GRATE_MEMORY_FLAG would resolve addr against the grate's
base instead of the cage's, breaking unrelated runtime mmaps.

Cage test switched from MAP_ANONYMOUS|MAP_PRIVATE to an fd-backed
MAP_SHARED mmap so the FLAG path is the one being exercised.
@github-actions

Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

grate harness

Grate Test Report

MetricValue
Total15
Success14
Failures1
Compile Failures0
Runtime Failures0
Timeout Failures1
Missing Pair Failures0

Cases

TestStatusError TypeOutput
concurrent-request/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] PASS

STDERR:

concurrent-request/race-test_grate.cSuccess
STDOUT:
pass

STDERR:

concurrent-request/thread_race_grate.cSuccess
STDOUT:
[thread_race] Registering handler for cage 2 in grate 1 with fn ptr addr: 3
[thread_race] PASS: 20 threads x 100000 calls returned 10
[thread_race] PASS

STDERR:

copy-data-between-cages/cp-stncpy_grate.cSuccess
STDOUT:
[cage] pathname addr=0xfffb6ff9
[cage] pathname='random'
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

copy-data-between-cages/cpdata_grate.cSuccess
STDOUT:
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

interposing-calls/fork-with-newret_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Cage] Forked process with PID: 10
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-exec_grate.cSuccess
STDOUT:
[Grate|interpose-exec] Registering exec handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
Exec successful, argv[1]: --execd
[Grate|interpose-exec] PASS

STDERR:

interposing-calls/interpose-exit_grate.cSuccess
STDOUT:
[Grate|interpose-exit] Registering exit handler for cage 2 in grate 1 with fn ptr addr: 3
Exiting...

[Grate|interpose-exit] PASS

STDERR:

interposing-calls/interpose-fork_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-mmap_grate.cSuccess
STDOUT:
[Grate|interpose-mmap] Registering mmap handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
mmap test: PASS
[Grate|interpose-mmap] PASS

STDERR:

interposing-calls/interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 4
[cage] registering 107. grateid: 2 cageid: 3
[Grate|interpose-register] Handling function ptr: 4 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|geteuid] Registering geteuid handler for cage 1 in grate 1 with fn ptr addr: 3
[Grate|interpose-register] Handling function ptr: 3 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|interpose-register] PASS

STDERR:

multi-register_grate.cSuccess
STDOUT:
[Grate|multi-register_grate] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 4
[Grate|multi-register_grate] Registering getuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|multi-register_grate] Handling function ptr: 4 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Grate|multi-register_grate] Handling function ptr: 3 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Cage | multi-register] PASS: geteuid=10, getuid=20
[Grate|multi-register] PASS

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 3 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 4 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:

simple-tests/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|geteuid] Handling function ptr: 3 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

simple-tests/mmap-flag_grate.cFailureTimeout
Timed Out (timeout: 30s)

static harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases3
Number of Successes3
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Static Tests
fork_simple.cSuccessNone0.057719s4.347449s
Success
thread.cSuccessNone0.049477s4.387737s
Success
tls_test.cSuccessNone0.073368s4.398771s
Success
Fail Tests

Summary

MetricCount
Total Test Cases0
Number of Successes0
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases218
Number of Successes218
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
File Tests
chartests.cSuccessNone0.051511s0.142316s
Success
chdir_getcwd.cSuccessNone0.050655s0.113682s
Success
chmod.cSuccessNone0.054726s0.123508s
Success
clock_gettime_highlevel.cSuccessNone0.122890s0.170504s
Success
clock_gettime_simple.cSuccessNone0.045866s0.101585s
Success
cloexec.cSuccessNone0.054375s0.131304s
Success
close.cSuccessNone0.062829s0.134425s
Success
creat_access.cSuccessNone0.053111s0.113905s
Success
doubleclose.cSuccessNone0.046821s0.098671s
Success
dup.cSuccessNone0.047247s0.112398s
Success
dup2.cSuccessNone0.051540s0.110207s
Success
dup3.cSuccessNone0.050391s0.113609s
Success
dupwrite.cSuccessNone0.052975s0.111822s
Success
etc_conf.cSuccessNone0.050098s0.117206s
Success
faccessat.cSuccessNone0.049901s0.114622s
Success
fchdir.cSuccessNone0.056541s0.124969s
Success
fchmod.cSuccessNone0.055062s0.122429s
Success
fchmodat.cSuccessNone0.049329s0.112789s
Success
fcntl.cSuccessNone0.053202s0.127930s
Success
fdatasync.cSuccessNone0.053125s0.109643s
Success
filetest.cSuccessNone0.053119s0.109117s
Success
filetest1000.cSuccessNone0.061945s0.124885s
Success
flock.cSuccessNone0.062155s0.147284s
Success
fstat.cSuccessNone0.055395s0.124616s
Success
fstatfs.cSuccessNone0.048868s0.106513s
Success
fsync.cSuccessNone0.052358s0.110437s
Success
ftruncate.cSuccessNone0.056625s0.206730s
Success
getcwd.cSuccessNone0.050910s0.107632s
Success
getcwd_null.cSuccessNone0.054029s0.117736s
Success
getpgid.cSuccessNone0.050688s0.103567s
Success
getrandom.cSuccessNone0.052540s0.124555s
Success
ioctl.cSuccessNone0.054605s0.117679s
Success
link.cSuccessNone0.057697s0.153583s
Success
locale_test.cSuccessNone0.064254s0.318825s
Success
lseek.cSuccessNone0.056563s0.187764s
Success
lstat.cSuccessNone0.055920s0.130988s
Success
mkdir_rmdir.cSuccessNone0.055108s0.116037s
Success
mkfifo_test.cSuccessNone0.058441s0.154212s
Success
mknod.cSuccessNone0.052314s0.124891s
Success
nocancel_io.cSuccessNone0.056488s0.139202s
Success
open.cSuccessNone0.048252s0.102819s
Success
openat.cSuccessNone0.048791s0.110878s
Success
path_conversion_safety.cSuccessNone0.056876s0.134990s
Success
ppoll.cSuccessNone0.057350s0.121771s
Success
pread_pwrite.cSuccessNone0.052225s0.120173s
Success
preadv_pwritev.cSuccessNone0.055375s0.128746s
Success
printf.cSuccessNone0.045396s0.097794s
Success
prlimit64.cSuccessNone0.047325s0.105974s
Success
read.cSuccessNone0.053098s0.122725s
Success
readbytes.cSuccessNone0.050482s0.107159s
Success
readdir_basic.cSuccessNone0.056746s0.145503s
Success
readlink.cSuccessNone0.053255s0.119084s
Success
readlinkat.cSuccessNone0.054557s0.123419s
Success
readv_writev_test.cSuccessNone0.054438s0.126395s
Success
rename.cSuccessNone0.055030s0.116936s
Success
renameat.cSuccessNone0.057640s0.130222s
Success
sc-writev.cSuccessNone0.052626s0.113009s
Success
stat.cSuccessNone0.054532s0.123967s
Success
statfs.cSuccessNone0.048252s0.105770s
Success
symlink.cSuccessNone0.055699s0.144809s
Success
sync_file_range.cSuccessNone0.054747s0.111588s
Success
timespec_time_t_compat.cSuccessNone0.050541s0.106753s
Success
truncate.cSuccessNone0.054758s0.133070s
Success
unlink.cSuccessNone0.055312s0.150431s
Success
unlinkat.cSuccessNone0.055201s0.131817s
Success
utimensat.cSuccessNone0.052524s0.131070s
Success
write.cSuccessNone0.047095s0.097474s
Success
writeloop.cSuccessNone0.055681s0.112996s
Success
writepartial.cSuccessNone0.054470s0.107610s
Success
writev.cSuccessNone0.055296s0.120913s
Success
Math Tests
math_link_smoke.cSuccessNone0.058094s0.107169s
Success
math_tests.cSuccessNone0.062094s0.136643s
Success
printf_float.cSuccessNone0.058852s0.130665s
Success
Memory Tests
brk.cSuccessNone0.051156s0.108920s
Success
fork_large_memory.cSuccessNone0.082773s0.366074s
Success
malloc.cSuccessNone0.049131s0.099561s
Success
malloc_large.cSuccessNone0.049502s0.100818s
Success
memcpy.cSuccessNone0.048921s0.100909s
Success
memory_error_test.cSuccessNone0.054725s0.131597s
Success
mmap.cSuccessNone0.046289s0.103890s
Success
mmap_aligned.cSuccessNone0.048109s0.115803s
Success
mmap_complicated.cSuccessNone0.053808s0.125686s
Success
mmap_file.cSuccessNone0.053756s0.114567s
Success
mmap_shared.cSuccessNone0.053186s0.120343s
Success
mmaptest.cSuccessNone0.050171s0.107145s
Success
mprotect.cSuccessNone0.048257s0.103322s
Success
mprotect_boundary.cSuccessNone0.047702s0.113669s
Success
mprotect_end_region.cSuccessNone0.047416s0.106573s
Success
mprotect_middle_region.cSuccessNone0.047392s0.108729s
Success
mprotect_multiple_times.cSuccessNone0.047561s0.108323s
Success
mprotect_same_value.cSuccessNone0.047183s0.105646s
Success
mprotect_spanning_regions.cSuccessNone0.048363s0.124270s
Success
munmap_adjacent_shm.cSuccessNone0.049655s0.123134s
Success
sbrk.cSuccessNone0.049184s0.103988s
Success
segfault.cSuccessNone0.054264s0.136735s
Success
shm.cSuccessNone0.052709s0.125767s
Success
shmtest.cSuccessNone0.047867s0.107880s
Success
thread_malloc_sequential.cSuccessNone0.054771s0.152342s
Success
vtable.cSuccessNone0.057503s0.118765s
Success
Networking Tests
accept4.cSuccessNone0.061192s0.129360s
Success
dns_resolve_test.cSuccessNone0.052210s0.115129s
Success
dnstest.cSuccessNone0.053440s0.113049s
Success
epoll_badfd.cSuccessNone0.048536s0.104421s
Success
epoll_edge_triggered.cSuccessNone0.212281s0.374953s
Success
epollcreate1.cSuccessNone0.054891s0.126292s
Success
error_handling_net.cSuccessNone0.060784s0.187540s
Success
getaddrinfo_test.cSuccessNone0.056646s0.151257s
Success
getaddrinfo_unspec.cSuccessNone0.064002s0.162581s
Success
gethostname.cSuccessNone0.047742s0.100173s
Success
getifaddrs.cSuccessNone0.055510s0.120668s
Success
getsockname.cSuccessNone0.058794s0.118993s
Success
getsockopt.cSuccessNone0.056861s0.151757s
Success
ipv6_basic.cSuccessNone0.059075s0.154072s
Success
makepipe.cSuccessNone0.047812s0.099494s
Success
nonblocking_eagain.cSuccessNone0.057937s0.160361s
Success
pipe.cSuccessNone0.056215s0.123403s
Success
pipe2.cSuccessNone0.055333s0.115913s
Success
pipeinput.cSuccessNone0.056681s0.138848s
Success
pipeinput2.cSuccessNone0.056694s0.143026s
Success
pipeonestring.cSuccessNone0.056558s0.139430s
Success
pipepong.cSuccessNone0.055576s0.146357s
Success
pipewrite.cSuccessNone0.050632s0.113179s
Success
poll.cSuccessNone0.053955s0.110136s
Success
recvfrom-sendto.cSuccessNone0.055020s0.123651s
Success
sendmsg_recvmsg_test.cSuccessNone0.054992s0.125828s
Success
serverclient.cSuccessNone0.054149s0.129114s
Success
shutdown.cSuccessNone0.056592s0.125628s
Success
shutdown_fork.cSuccessNone0.054820s0.127296s
Success
simple-select.cSuccessNone0.055558s0.139362s
Success
simple_epoll.cSuccessNone0.054152s0.122204s
Success
socket.cSuccessNone0.053127s0.110985s
Success
socket_cloexec.cSuccessNone0.053469s0.112760s
Success
socket_options_advanced.cSuccessNone0.059162s0.168283s
Success
socketepoll.cSuccessNone0.053865s0.113407s
Success
socketpair.cSuccessNone0.052141s0.123828s
Success
socketselect.cSuccessNone0.053006s0.119578s
Success
udp_send_recv.cSuccessNone0.161136s0.261686s
Success
uds-getsockname.cSuccessNone0.055061s0.113223s
Success
uds-nb-select.cSuccessNone2.063037s2.176326s
Success
uds-serverclient.cSuccessNone0.057672s0.157247s
Success
uds-socketselect.cSuccessNone0.054707s0.123759s
Success
uds_listen_poll.cSuccessNone1.060409s1.155270s
Success
writev_socket.cSuccessNone0.057164s0.151357s
Success
Process Tests
barrier_test.cSuccessNone0.052615s0.122406s
Success
chain_thread.cSuccessNone1.054953s1.127931s
Success
ctor_syscall_test.cSuccessNone0.045410s0.102112s
Success
cxa_atexit_test.cSuccessNone0.050671s0.106663s
Success
exec_non_utf8.cSuccessNone0.054146s0.112169s
Success
execve_shebang.cSuccessNone0.055552s0.112770s
Success
exit.cSuccessNone0.052193s0.103618s
Success
exit_failure.cSuccessNone0.053235s0.116732s
Success
exit_group_thread.cSuccessNone0.054995s0.128737s
Success
exit_status_first_wins.cSuccessNone0.056616s0.130604s
Success
flockfile_test.cSuccessNone0.053881s0.129131s
Success
fork2malloc.cSuccessNone0.054865s0.122492s
Success
fork_select.cSuccessNone0.053601s0.129101s
Success
fork_simple.cSuccessNone0.051865s0.116638s
Success
fork_syscall.cSuccessNone0.057845s0.347154s
Success
fork_tls_ctype.cSuccessNone0.057112s0.141772s
Success
forkandopen.cSuccessNone0.055521s0.133375s
Success
forkdup.cSuccessNone0.058013s0.125416s
Success
forkexecuid.cSuccessNone0.052613s0.134929s
Success
forkexecv-arg.cSuccessNone0.053379s0.124189s
Success
forkexecv.cSuccessNone0.052184s0.120172s
Success
forkfiles.cSuccessNone0.054328s0.127563s
Success
forkmalloc.cSuccessNone0.057165s0.124495s
Success
forknodup.cSuccessNone0.054537s0.129604s
Success
function-ptr.cSuccessNone0.049499s0.102326s
Success
getegid_syscall.cSuccessNone0.054272s0.260028s
Success
getgid_syscall.cSuccessNone0.055185s0.268223s
Success
getpid.cSuccessNone0.047969s0.100203s
Success
getpid_syscall.cSuccessNone0.055730s0.272264s
Success
getppid.cSuccessNone0.055728s0.118850s
Success
getppid_syscall.cSuccessNone0.056914s0.237404s
Success
getuid.cSuccessNone0.053996s0.110406s
Success
getuid_syscall.cSuccessNone0.052622s0.175299s
Success
hello-arg.cSuccessNone0.045846s0.101902s
Success
hello.cSuccessNone0.045822s0.097405s
Success
longjmp.cSuccessNone0.047577s0.106136s
Success
mutex.cSuccessNone2.057646s2.122850s
Success
printf_deadlock_smoke.cSuccessNone0.061374s0.149234s
Success
printf_thread_test.cSuccessNone0.053791s0.125656s
Success
sem_forks.cSuccessNone0.056628s0.141062s
Success
setsid.cSuccessNone0.047782s0.100632s
Success
template.cSuccessNone0.053744s0.142624s
Success
test_exec_nofork.cSuccessNone0.052343s0.119531s
Success
test_unlink_open_file.cSuccessNone0.049212s0.101376s
Success
thread-guard.cSuccessNone0.051883s0.119306s
Success
thread-test.cSuccessNone0.049170s0.109440s
Success
thread.cSuccessNone0.049270s0.109695s
Success
thread_cageid_race.cSuccessNone0.050156s0.160623s
Success
tls_test.cSuccessNone0.051752s0.124503s
Success
uname.cSuccessNone0.048550s0.102030s
Success
wait.cSuccessNone0.051161s0.124397s
Success
waitpid_anychild.cSuccessNone0.053602s0.121566s
Success
waitpid_syscall.cSuccessNone1.054681s1.166962s
Success
waitpid_wnohang.cSuccessNone0.054692s0.124509s
Success
Signal Tests
alarm.cSuccessNone7.053510s7.142015s
Success
eintr_fork_signal.cSuccessNone1.055991s1.135002s
Success
kill.cSuccessNone1.053473s1.125611s
Success
setitimer.cSuccessNone7.054206s7.140705s
Success
sigalrm.cSuccessNone2.053657s2.127371s
Success
sigaltstack.cSuccessNone0.055534s0.121851s
Success
sigchld.cSuccessNone1.055145s1.121128s
Success
signal-fork.cSuccessNone4.055314s4.122958s
Success
signal-simple.cSuccessNone0.054419s0.115442s
Success
signal_SIGCHLD.cSuccessNone0.052595s0.125109s
Success
signal_fork.cSuccessNone0.050612s0.124913s
Success
signal_int_ignored.cSuccessNone2.054399s2.122392s
Success
signal_kill_cleanup.cSuccessNone1.052660s1.118818s
Success
signal_procmask.cSuccessNone0.049188s0.113231s
Success
signal_read_interrupt.cSuccessNone0.558850s0.630066s
Success
signal_recursive.cSuccessNone0.049464s0.115811s
Success
signal_sa_mask.cSuccessNone0.049088s0.109767s
Success
signal_select_interrupt.cSuccessNone0.557531s0.633277s
Success
signal_write_interrupt.cSuccessNone1.056167s1.129741s
Success
sigpipe.cSuccessNone1.056148s1.131588s
Success
sigprocmask.cSuccessNone1.053365s1.119871s
Success
Fail Tests

Summary

MetricCount
Total Test Cases4
Number of Successes4
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Dylink Tests
dlerror.cSuccessNone0.046959s0.102650s
Success
Memory Tests
mmap-negative1.cSuccessNone0.141875s0.106396s
Success
mmap-negative2.cSuccessNone0.114626s0.120369s
Success
Signal Tests
signal_resethand.cSuccessNone1.053667s1.120667s
Success

C++ harness

Summary

MetricValue
Total1
Success1
Failures0
Compile failures0
Runtime failures0
Output mismatch0
Timeouts0

Cases

TestStatusError typeNative timeWasm timeOutput
tests/unit-tests/cpp/sort.cppSuccess0.574743s9.828530s
LIBCPP_SORT_OK 1 2 3

… id)

The first cageid param to a grate handler is the GRATE's id (3i's
_call_grate_func passes grateid there), not the calling cage.
Forwarding with target=cageid mmap'd at the grate's base, clobbering
the grate's function table — the cage's instance setup completed
normally, then the grate's next call_indirect trapped with
'uninitialized element'.

imfs already documents this: arg5 (fd) is an integer whose cage tag
is reliably the original caller (handlers.rs:1219-1223).  Use
arg5cage as the forwarding target.
@github-actions

Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

grate harness

Grate Test Report

MetricValue
Total15
Success15
Failures0
Compile Failures0
Runtime Failures0
Timeout Failures0
Missing Pair Failures0

Cases

TestStatusError TypeOutput
concurrent-request/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] PASS

STDERR:

concurrent-request/race-test_grate.cSuccess
STDOUT:
pass

STDERR:

concurrent-request/thread_race_grate.cSuccess
STDOUT:
[thread_race] Registering handler for cage 2 in grate 1 with fn ptr addr: 3
[thread_race] PASS: 20 threads x 100000 calls returned 10
[thread_race] PASS

STDERR:

copy-data-between-cages/cp-stncpy_grate.cSuccess
STDOUT:
[cage] pathname addr=0xfffb6ff9
[cage] pathname='random'
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

copy-data-between-cages/cpdata_grate.cSuccess
STDOUT:
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

interposing-calls/fork-with-newret_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Cage] Forked process with PID: 10
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-exec_grate.cSuccess
STDOUT:
[Grate|interpose-exec] Registering exec handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
Exec successful, argv[1]: --execd
[Grate|interpose-exec] PASS

STDERR:

interposing-calls/interpose-exit_grate.cSuccess
STDOUT:
[Grate|interpose-exit] Registering exit handler for cage 2 in grate 1 with fn ptr addr: 3
Exiting...

[Grate|interpose-exit] PASS

STDERR:

interposing-calls/interpose-fork_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-mmap_grate.cSuccess
STDOUT:
[Grate|interpose-mmap] Registering mmap handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
mmap test: PASS
[Grate|interpose-mmap] PASS

STDERR:

interposing-calls/interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 4
[cage] registering 107. grateid: 2 cageid: 3
[Grate|interpose-register] Handling function ptr: 4 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|geteuid] Registering geteuid handler for cage 1 in grate 1 with fn ptr addr: 3
[Grate|interpose-register] Handling function ptr: 3 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|interpose-register] PASS

STDERR:

multi-register_grate.cSuccess
STDOUT:
[Grate|multi-register_grate] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 4
[Grate|multi-register_grate] Registering getuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|multi-register_grate] Handling function ptr: 4 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Grate|multi-register_grate] Handling function ptr: 3 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Cage | multi-register] PASS: geteuid=10, getuid=20
[Grate|multi-register] PASS

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 3 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 4 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:

simple-tests/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|geteuid] Handling function ptr: 3 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

simple-tests/mmap-flag_grate.cSuccess
STDOUT:
[Cage|mmap-flag] PASS
[Grate|mmap-flag] PASS

STDERR:

static harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases3
Number of Successes3
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Static Tests
fork_simple.cSuccessNone0.063522s4.668779s
Success
thread.cSuccessNone0.052860s4.658805s
Success
tls_test.cSuccessNone0.074766s4.652867s
Success
Fail Tests

Summary

MetricCount
Total Test Cases0
Number of Successes0
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases218
Number of Successes218
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
File Tests
chartests.cSuccessNone0.055872s0.154043s
Success
chdir_getcwd.cSuccessNone0.055867s0.123588s
Success
chmod.cSuccessNone0.062451s0.138228s
Success
clock_gettime_highlevel.cSuccessNone0.128045s0.181860s
Success
clock_gettime_simple.cSuccessNone0.050564s0.112324s
Success
cloexec.cSuccessNone0.059156s0.137905s
Success
close.cSuccessNone0.070497s0.148137s
Success
creat_access.cSuccessNone0.060571s0.125724s
Success
doubleclose.cSuccessNone0.052520s0.109137s
Success
dup.cSuccessNone0.053024s0.125884s
Success
dup2.cSuccessNone0.059929s0.125394s
Success
dup3.cSuccessNone0.058066s0.127111s
Success
dupwrite.cSuccessNone0.059404s0.123410s
Success
etc_conf.cSuccessNone0.055686s0.128336s
Success
faccessat.cSuccessNone0.056286s0.127644s
Success
fchdir.cSuccessNone0.062168s0.140248s
Success
fchmod.cSuccessNone0.060500s0.132863s
Success
fchmodat.cSuccessNone0.056231s0.125245s
Success
fcntl.cSuccessNone0.058038s0.138967s
Success
fdatasync.cSuccessNone0.058594s0.124050s
Success
filetest.cSuccessNone0.059408s0.120109s
Success
filetest1000.cSuccessNone0.068794s0.136013s
Success
flock.cSuccessNone0.069385s0.162556s
Success
fstat.cSuccessNone0.062560s0.138416s
Success
fstatfs.cSuccessNone0.054914s0.120311s
Success
fsync.cSuccessNone0.057390s0.119032s
Success
ftruncate.cSuccessNone0.061775s0.217100s
Success
getcwd.cSuccessNone0.057236s0.119326s
Success
getcwd_null.cSuccessNone0.059346s0.129123s
Success
getpgid.cSuccessNone0.054571s0.115236s
Success
getrandom.cSuccessNone0.059223s0.134109s
Success
ioctl.cSuccessNone0.061548s0.133960s
Success
link.cSuccessNone0.062680s0.165474s
Success
locale_test.cSuccessNone0.071096s0.335929s
Success
lseek.cSuccessNone0.062998s0.202376s
Success
lstat.cSuccessNone0.062125s0.142732s
Success
mkdir_rmdir.cSuccessNone0.061073s0.128588s
Success
mkfifo_test.cSuccessNone0.065536s0.168328s
Success
mknod.cSuccessNone0.059347s0.135212s
Success
nocancel_io.cSuccessNone0.062437s0.150584s
Success
open.cSuccessNone0.054185s0.114613s
Success
openat.cSuccessNone0.055177s0.123328s
Success
path_conversion_safety.cSuccessNone0.063234s0.143594s
Success
ppoll.cSuccessNone0.062242s0.131812s
Success
pread_pwrite.cSuccessNone0.056104s0.127974s
Success
preadv_pwritev.cSuccessNone0.060823s0.140802s
Success
printf.cSuccessNone0.051626s0.109489s
Success
prlimit64.cSuccessNone0.053500s0.118063s
Success
read.cSuccessNone0.059250s0.137655s
Success
readbytes.cSuccessNone0.055927s0.120103s
Success
readdir_basic.cSuccessNone0.062704s0.155472s
Success
readlink.cSuccessNone0.059718s0.135388s
Success
readlinkat.cSuccessNone0.060817s0.133748s
Success
readv_writev_test.cSuccessNone0.060464s0.134345s
Success
rename.cSuccessNone0.061724s0.127829s
Success
renameat.cSuccessNone0.060819s0.141048s
Success
sc-writev.cSuccessNone0.057620s0.125142s
Success
stat.cSuccessNone0.060345s0.135451s
Success
statfs.cSuccessNone0.054636s0.119413s
Success
symlink.cSuccessNone0.061746s0.158650s
Success
sync_file_range.cSuccessNone0.057923s0.121113s
Success
timespec_time_t_compat.cSuccessNone0.057462s0.119610s
Success
truncate.cSuccessNone0.060770s0.144818s
Success
unlink.cSuccessNone0.062636s0.163142s
Success
unlinkat.cSuccessNone0.061797s0.145564s
Success
utimensat.cSuccessNone0.058812s0.144271s
Success
write.cSuccessNone0.055985s0.111163s
Success
writeloop.cSuccessNone0.061478s0.125060s
Success
writepartial.cSuccessNone0.060037s0.121760s
Success
writev.cSuccessNone0.059837s0.131525s
Success
Math Tests
math_link_smoke.cSuccessNone0.062683s0.116530s
Success
math_tests.cSuccessNone0.069027s0.149847s
Success
printf_float.cSuccessNone0.064206s0.141648s
Success
Memory Tests
brk.cSuccessNone0.056882s0.121064s
Success
fork_large_memory.cSuccessNone0.090837s0.398518s
Success
malloc.cSuccessNone0.055376s0.110386s
Success
malloc_large.cSuccessNone0.057294s0.111615s
Success
memcpy.cSuccessNone0.054556s0.112562s
Success
memory_error_test.cSuccessNone0.060521s0.144286s
Success
mmap.cSuccessNone0.052097s0.112500s
Success
mmap_aligned.cSuccessNone0.054313s0.126035s
Success
mmap_complicated.cSuccessNone0.058965s0.137481s
Success
mmap_file.cSuccessNone0.060270s0.126003s
Success
mmap_shared.cSuccessNone0.058615s0.132270s
Success
mmaptest.cSuccessNone0.055924s0.116454s
Success
mprotect.cSuccessNone0.054409s0.113873s
Success
mprotect_boundary.cSuccessNone0.052926s0.124689s
Success
mprotect_end_region.cSuccessNone0.052506s0.119029s
Success
mprotect_middle_region.cSuccessNone0.053302s0.118541s
Success
mprotect_multiple_times.cSuccessNone0.053681s0.120362s
Success
mprotect_same_value.cSuccessNone0.053311s0.117680s
Success
mprotect_spanning_regions.cSuccessNone0.053920s0.135667s
Success
munmap_adjacent_shm.cSuccessNone0.055690s0.134547s
Success
sbrk.cSuccessNone0.054908s0.115612s
Success
segfault.cSuccessNone0.067467s0.146204s
Success
shm.cSuccessNone0.059342s0.138839s
Success
shmtest.cSuccessNone0.054064s0.119802s
Success
thread_malloc_sequential.cSuccessNone0.060262s0.169737s
Success
vtable.cSuccessNone0.063994s0.129726s
Success
Networking Tests
accept4.cSuccessNone0.063951s0.143514s
Success
dns_resolve_test.cSuccessNone0.061501s0.130174s
Success
dnstest.cSuccessNone0.058811s0.125460s
Success
epoll_badfd.cSuccessNone0.054788s0.115323s
Success
epoll_edge_triggered.cSuccessNone0.216481s0.388269s
Success
epollcreate1.cSuccessNone0.061415s0.138922s
Success
error_handling_net.cSuccessNone0.066598s0.201729s
Success
getaddrinfo_test.cSuccessNone0.062274s0.161340s
Success
getaddrinfo_unspec.cSuccessNone0.064545s0.131839s
Success
gethostname.cSuccessNone0.053147s0.111281s
Success
getifaddrs.cSuccessNone0.061568s0.130451s
Success
getsockname.cSuccessNone0.064785s0.131493s
Success
getsockopt.cSuccessNone0.063345s0.171036s
Success
ipv6_basic.cSuccessNone0.064436s0.166161s
Success
makepipe.cSuccessNone0.053325s0.111458s
Success
nonblocking_eagain.cSuccessNone0.063656s0.173508s
Success
pipe.cSuccessNone0.063246s0.135816s
Success
pipe2.cSuccessNone0.061463s0.128023s
Success
pipeinput.cSuccessNone0.062307s0.149861s
Success
pipeinput2.cSuccessNone0.062649s0.157189s
Success
pipeonestring.cSuccessNone0.062237s0.152486s
Success
pipepong.cSuccessNone0.060636s0.153780s
Success
pipewrite.cSuccessNone0.056354s0.123645s
Success
poll.cSuccessNone0.058839s0.120183s
Success
recvfrom-sendto.cSuccessNone0.060914s0.133576s
Success
sendmsg_recvmsg_test.cSuccessNone0.059745s0.136981s
Success
serverclient.cSuccessNone0.062352s0.141243s
Success
shutdown.cSuccessNone0.061384s0.135624s
Success
shutdown_fork.cSuccessNone0.060726s0.141654s
Success
simple-select.cSuccessNone0.061566s0.155020s
Success
simple_epoll.cSuccessNone0.060654s0.132835s
Success
socket.cSuccessNone0.058631s0.124182s
Success
socket_cloexec.cSuccessNone0.057896s0.124877s
Success
socket_options_advanced.cSuccessNone0.064027s0.184846s
Success
socketepoll.cSuccessNone0.060222s0.124915s
Success
socketpair.cSuccessNone0.060283s0.134549s
Success
socketselect.cSuccessNone0.058294s0.130665s
Success
udp_send_recv.cSuccessNone0.167487s0.277489s
Success
uds-getsockname.cSuccessNone0.062075s0.127264s
Success
uds-nb-select.cSuccessNone2.068766s2.184564s
Success
uds-serverclient.cSuccessNone0.064833s0.159921s
Success
uds-socketselect.cSuccessNone0.059274s0.133131s
Success
uds_listen_poll.cSuccessNone1.066101s1.166234s
Success
writev_socket.cSuccessNone0.063081s0.166224s
Success
Process Tests
barrier_test.cSuccessNone0.059226s0.135161s
Success
chain_thread.cSuccessNone1.060596s1.141948s
Success
ctor_syscall_test.cSuccessNone0.050318s0.110701s
Success
cxa_atexit_test.cSuccessNone0.055804s0.120010s
Success
exec_non_utf8.cSuccessNone0.059070s0.122793s
Success
execve_shebang.cSuccessNone0.059508s0.124909s
Success
exit.cSuccessNone0.057557s0.115354s
Success
exit_failure.cSuccessNone0.059251s0.129923s
Success
exit_group_thread.cSuccessNone0.059675s0.142747s
Success
exit_status_first_wins.cSuccessNone0.062081s0.143450s
Success
flockfile_test.cSuccessNone0.060736s0.142896s
Success
fork2malloc.cSuccessNone0.059851s0.131332s
Success
fork_select.cSuccessNone0.059472s0.141714s
Success
fork_simple.cSuccessNone0.057152s0.126371s
Success
fork_syscall.cSuccessNone0.063458s0.364507s
Success
fork_tls_ctype.cSuccessNone0.061882s0.154731s
Success
forkandopen.cSuccessNone0.059803s0.142809s
Success
forkdup.cSuccessNone0.064365s0.136375s
Success
forkexecuid.cSuccessNone0.058151s0.144942s
Success
forkexecv-arg.cSuccessNone0.059347s0.137090s
Success
forkexecv.cSuccessNone0.056236s0.130830s
Success
forkfiles.cSuccessNone0.061198s0.142015s
Success
forkmalloc.cSuccessNone0.087690s0.133562s
Success
forknodup.cSuccessNone0.059843s0.141200s
Success
function-ptr.cSuccessNone0.054578s0.114926s
Success
getegid_syscall.cSuccessNone0.061822s0.291461s
Success
getgid_syscall.cSuccessNone0.060139s0.297739s
Success
getpid.cSuccessNone0.053895s0.113088s
Success
getpid_syscall.cSuccessNone0.061597s0.309403s
Success
getppid.cSuccessNone0.061486s0.129117s
Success
getppid_syscall.cSuccessNone0.062954s0.259611s
Success
getuid.cSuccessNone0.059990s0.123586s
Success
getuid_syscall.cSuccessNone0.058295s0.189827s
Success
hello-arg.cSuccessNone0.050703s0.113908s
Success
hello.cSuccessNone0.051670s0.109885s
Success
longjmp.cSuccessNone0.052477s0.118755s
Success
mutex.cSuccessNone2.064524s2.133242s
Success
printf_deadlock_smoke.cSuccessNone0.065496s0.161621s
Success
printf_thread_test.cSuccessNone0.058145s0.136414s
Success
sem_forks.cSuccessNone0.062180s0.154970s
Success
setsid.cSuccessNone0.052237s0.111243s
Success
template.cSuccessNone0.058898s0.157471s
Success
test_exec_nofork.cSuccessNone0.057730s0.129199s
Success
test_unlink_open_file.cSuccessNone0.054116s0.113291s
Success
thread-guard.cSuccessNone0.057460s0.130701s
Success
thread-test.cSuccessNone0.057452s0.122495s
Success
thread.cSuccessNone0.054563s0.119073s
Success
thread_cageid_race.cSuccessNone0.056453s0.174626s
Success
tls_test.cSuccessNone0.057917s0.136658s
Success
uname.cSuccessNone0.054253s0.112602s
Success
wait.cSuccessNone0.056165s0.136469s
Success
waitpid_anychild.cSuccessNone0.059893s0.133585s
Success
waitpid_syscall.cSuccessNone1.058920s1.179795s
Success
waitpid_wnohang.cSuccessNone0.059435s0.134998s
Success
Signal Tests
alarm.cSuccessNone7.058938s7.157535s
Success
eintr_fork_signal.cSuccessNone1.061098s1.148967s
Success
kill.cSuccessNone1.059800s1.136395s
Success
setitimer.cSuccessNone7.058884s7.162371s
Success
sigalrm.cSuccessNone2.060026s2.141363s
Success
sigaltstack.cSuccessNone0.060436s0.135234s
Success
sigchld.cSuccessNone1.061433s1.133521s
Success
signal-fork.cSuccessNone4.061460s4.146271s
Success
signal-simple.cSuccessNone0.060633s0.124487s
Success
signal_SIGCHLD.cSuccessNone0.058526s0.137093s
Success
signal_fork.cSuccessNone0.056606s0.138192s
Success
signal_int_ignored.cSuccessNone2.059582s2.134662s
Success
signal_kill_cleanup.cSuccessNone1.058237s1.130668s
Success
signal_procmask.cSuccessNone0.055075s0.124173s
Success
signal_read_interrupt.cSuccessNone0.563210s0.641876s
Success
signal_recursive.cSuccessNone0.055148s0.128078s
Success
signal_sa_mask.cSuccessNone0.054717s0.121606s
Success
signal_select_interrupt.cSuccessNone0.563126s0.646717s
Success
signal_write_interrupt.cSuccessNone1.061983s1.143921s
Success
sigpipe.cSuccessNone1.062622s1.145043s
Success
sigprocmask.cSuccessNone1.059160s1.139000s
Success
Fail Tests

Summary

MetricCount
Total Test Cases4
Number of Successes4
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Dylink Tests
dlerror.cSuccessNone0.052113s0.114441s
Success
Memory Tests
mmap-negative1.cSuccessNone0.147902s0.120265s
Success
mmap-negative2.cSuccessNone0.127147s0.134847s
Success
Signal Tests
signal_resethand.cSuccessNone1.059185s1.132515s
Success

C++ harness

Summary

MetricValue
Total1
Success1
Failures0
Compile failures0
Runtime failures0
Output mismatch0
Timeouts0

Cases

TestStatusError typeNative timeWasm timeOutput
tests/unit-tests/cpp/sort.cppSuccess0.633570s10.686608s
LIBCPP_SORT_OK 1 2 3

@rennergade rennergade requested review from Yaxuan-w, drapl0n, qianxichen233 and stupendoussuperpowers and removed request for Yaxuan-w May 11, 2026 01:40
Comment thread src/typemap/src/datatype_conversion.rs Outdated
/// - `Ok(sysaddr)` host system address.
/// - `Err(Errno::EINVAL)` if the calling cage can't be looked up or its vmmap
/// has no base address yet (only on the uaddr branch).
pub fn sc_convert_addr_to_sys(arg: u64, arg_cageid: u64, cageid: u64) -> Result<usize, Errno> {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we already have a sc_convert_addr_to_host ? We can just update that directly, they are not used anywhere else.

Adds stderr-flushed eprintlns at every decision point in mmap_syscall
so we can identify which call kills the runtime mid-printf.  Drop
before merge — same shape as the previous c4ba2a7/ef4846fb3 cycle.
@github-actions

Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

grate harness

Grate Test Report

MetricValue
Total15
Success15
Failures0
Compile Failures0
Runtime Failures0
Timeout Failures0
Missing Pair Failures0

Cases

TestStatusError TypeOutput
concurrent-request/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] PASS

STDERR:

concurrent-request/race-test_grate.cSuccess
STDOUT:
pass

STDERR:

concurrent-request/thread_race_grate.cSuccess
STDOUT:
[thread_race] Registering handler for cage 2 in grate 1 with fn ptr addr: 3
[thread_race] PASS: 20 threads x 100000 calls returned 10
[thread_race] PASS

STDERR:

copy-data-between-cages/cp-stncpy_grate.cSuccess
STDOUT:
[cage] pathname addr=0xfffb6ff9
[cage] pathname='random'
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

copy-data-between-cages/cpdata_grate.cSuccess
STDOUT:
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

interposing-calls/fork-with-newret_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Cage] Forked process with PID: 10
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-exec_grate.cSuccess
STDOUT:
[Grate|interpose-exec] Registering exec handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
Exec successful, argv[1]: --execd
[Grate|interpose-exec] PASS

STDERR:

interposing-calls/interpose-exit_grate.cSuccess
STDOUT:
[Grate|interpose-exit] Registering exit handler for cage 2 in grate 1 with fn ptr addr: 3
Exiting...

[Grate|interpose-exit] PASS

STDERR:

interposing-calls/interpose-fork_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-mmap_grate.cSuccess
STDOUT:
[Grate|interpose-mmap] Registering mmap handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
mmap test: PASS
[Grate|interpose-mmap] PASS

STDERR:

interposing-calls/interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 4
[cage] registering 107. grateid: 2 cageid: 3
[Grate|interpose-register] Handling function ptr: 4 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|geteuid] Registering geteuid handler for cage 1 in grate 1 with fn ptr addr: 3
[Grate|interpose-register] Handling function ptr: 3 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|interpose-register] PASS

STDERR:

multi-register_grate.cSuccess
STDOUT:
[Grate|multi-register_grate] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 4
[Grate|multi-register_grate] Registering getuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|multi-register_grate] Handling function ptr: 4 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Grate|multi-register_grate] Handling function ptr: 3 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Cage | multi-register] PASS: geteuid=10, getuid=20
[Grate|multi-register] PASS

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 3 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 4 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:

simple-tests/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|geteuid] Handling function ptr: 3 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

simple-tests/mmap-flag_grate.cSuccess
STDOUT:
[Cage|mmap-flag] PASS
[Grate|mmap-flag] PASS

STDERR:

static harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases3
Number of Successes3
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Static Tests
fork_simple.cSuccessNone0.063522s4.668779s
Success
thread.cSuccessNone0.052860s4.658805s
Success
tls_test.cSuccessNone0.074766s4.652867s
Success
Fail Tests

Summary

MetricCount
Total Test Cases0
Number of Successes0
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases218
Number of Successes218
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
File Tests
chartests.cSuccessNone0.055872s0.154043s
Success
chdir_getcwd.cSuccessNone0.055867s0.123588s
Success
chmod.cSuccessNone0.062451s0.138228s
Success
clock_gettime_highlevel.cSuccessNone0.128045s0.181860s
Success
clock_gettime_simple.cSuccessNone0.050564s0.112324s
Success
cloexec.cSuccessNone0.059156s0.137905s
Success
close.cSuccessNone0.070497s0.148137s
Success
creat_access.cSuccessNone0.060571s0.125724s
Success
doubleclose.cSuccessNone0.052520s0.109137s
Success
dup.cSuccessNone0.053024s0.125884s
Success
dup2.cSuccessNone0.059929s0.125394s
Success
dup3.cSuccessNone0.058066s0.127111s
Success
dupwrite.cSuccessNone0.059404s0.123410s
Success
etc_conf.cSuccessNone0.055686s0.128336s
Success
faccessat.cSuccessNone0.056286s0.127644s
Success
fchdir.cSuccessNone0.062168s0.140248s
Success
fchmod.cSuccessNone0.060500s0.132863s
Success
fchmodat.cSuccessNone0.056231s0.125245s
Success
fcntl.cSuccessNone0.058038s0.138967s
Success
fdatasync.cSuccessNone0.058594s0.124050s
Success
filetest.cSuccessNone0.059408s0.120109s
Success
filetest1000.cSuccessNone0.068794s0.136013s
Success
flock.cSuccessNone0.069385s0.162556s
Success
fstat.cSuccessNone0.062560s0.138416s
Success
fstatfs.cSuccessNone0.054914s0.120311s
Success
fsync.cSuccessNone0.057390s0.119032s
Success
ftruncate.cSuccessNone0.061775s0.217100s
Success
getcwd.cSuccessNone0.057236s0.119326s
Success
getcwd_null.cSuccessNone0.059346s0.129123s
Success
getpgid.cSuccessNone0.054571s0.115236s
Success
getrandom.cSuccessNone0.059223s0.134109s
Success
ioctl.cSuccessNone0.061548s0.133960s
Success
link.cSuccessNone0.062680s0.165474s
Success
locale_test.cSuccessNone0.071096s0.335929s
Success
lseek.cSuccessNone0.062998s0.202376s
Success
lstat.cSuccessNone0.062125s0.142732s
Success
mkdir_rmdir.cSuccessNone0.061073s0.128588s
Success
mkfifo_test.cSuccessNone0.065536s0.168328s
Success
mknod.cSuccessNone0.059347s0.135212s
Success
nocancel_io.cSuccessNone0.062437s0.150584s
Success
open.cSuccessNone0.054185s0.114613s
Success
openat.cSuccessNone0.055177s0.123328s
Success
path_conversion_safety.cSuccessNone0.063234s0.143594s
Success
ppoll.cSuccessNone0.062242s0.131812s
Success
pread_pwrite.cSuccessNone0.056104s0.127974s
Success
preadv_pwritev.cSuccessNone0.060823s0.140802s
Success
printf.cSuccessNone0.051626s0.109489s
Success
prlimit64.cSuccessNone0.053500s0.118063s
Success
read.cSuccessNone0.059250s0.137655s
Success
readbytes.cSuccessNone0.055927s0.120103s
Success
readdir_basic.cSuccessNone0.062704s0.155472s
Success
readlink.cSuccessNone0.059718s0.135388s
Success
readlinkat.cSuccessNone0.060817s0.133748s
Success
readv_writev_test.cSuccessNone0.060464s0.134345s
Success
rename.cSuccessNone0.061724s0.127829s
Success
renameat.cSuccessNone0.060819s0.141048s
Success
sc-writev.cSuccessNone0.057620s0.125142s
Success
stat.cSuccessNone0.060345s0.135451s
Success
statfs.cSuccessNone0.054636s0.119413s
Success
symlink.cSuccessNone0.061746s0.158650s
Success
sync_file_range.cSuccessNone0.057923s0.121113s
Success
timespec_time_t_compat.cSuccessNone0.057462s0.119610s
Success
truncate.cSuccessNone0.060770s0.144818s
Success
unlink.cSuccessNone0.062636s0.163142s
Success
unlinkat.cSuccessNone0.061797s0.145564s
Success
utimensat.cSuccessNone0.058812s0.144271s
Success
write.cSuccessNone0.055985s0.111163s
Success
writeloop.cSuccessNone0.061478s0.125060s
Success
writepartial.cSuccessNone0.060037s0.121760s
Success
writev.cSuccessNone0.059837s0.131525s
Success
Math Tests
math_link_smoke.cSuccessNone0.062683s0.116530s
Success
math_tests.cSuccessNone0.069027s0.149847s
Success
printf_float.cSuccessNone0.064206s0.141648s
Success
Memory Tests
brk.cSuccessNone0.056882s0.121064s
Success
fork_large_memory.cSuccessNone0.090837s0.398518s
Success
malloc.cSuccessNone0.055376s0.110386s
Success
malloc_large.cSuccessNone0.057294s0.111615s
Success
memcpy.cSuccessNone0.054556s0.112562s
Success
memory_error_test.cSuccessNone0.060521s0.144286s
Success
mmap.cSuccessNone0.052097s0.112500s
Success
mmap_aligned.cSuccessNone0.054313s0.126035s
Success
mmap_complicated.cSuccessNone0.058965s0.137481s
Success
mmap_file.cSuccessNone0.060270s0.126003s
Success
mmap_shared.cSuccessNone0.058615s0.132270s
Success
mmaptest.cSuccessNone0.055924s0.116454s
Success
mprotect.cSuccessNone0.054409s0.113873s
Success
mprotect_boundary.cSuccessNone0.052926s0.124689s
Success
mprotect_end_region.cSuccessNone0.052506s0.119029s
Success
mprotect_middle_region.cSuccessNone0.053302s0.118541s
Success
mprotect_multiple_times.cSuccessNone0.053681s0.120362s
Success
mprotect_same_value.cSuccessNone0.053311s0.117680s
Success
mprotect_spanning_regions.cSuccessNone0.053920s0.135667s
Success
munmap_adjacent_shm.cSuccessNone0.055690s0.134547s
Success
sbrk.cSuccessNone0.054908s0.115612s
Success
segfault.cSuccessNone0.067467s0.146204s
Success
shm.cSuccessNone0.059342s0.138839s
Success
shmtest.cSuccessNone0.054064s0.119802s
Success
thread_malloc_sequential.cSuccessNone0.060262s0.169737s
Success
vtable.cSuccessNone0.063994s0.129726s
Success
Networking Tests
accept4.cSuccessNone0.063951s0.143514s
Success
dns_resolve_test.cSuccessNone0.061501s0.130174s
Success
dnstest.cSuccessNone0.058811s0.125460s
Success
epoll_badfd.cSuccessNone0.054788s0.115323s
Success
epoll_edge_triggered.cSuccessNone0.216481s0.388269s
Success
epollcreate1.cSuccessNone0.061415s0.138922s
Success
error_handling_net.cSuccessNone0.066598s0.201729s
Success
getaddrinfo_test.cSuccessNone0.062274s0.161340s
Success
getaddrinfo_unspec.cSuccessNone0.064545s0.131839s
Success
gethostname.cSuccessNone0.053147s0.111281s
Success
getifaddrs.cSuccessNone0.061568s0.130451s
Success
getsockname.cSuccessNone0.064785s0.131493s
Success
getsockopt.cSuccessNone0.063345s0.171036s
Success
ipv6_basic.cSuccessNone0.064436s0.166161s
Success
makepipe.cSuccessNone0.053325s0.111458s
Success
nonblocking_eagain.cSuccessNone0.063656s0.173508s
Success
pipe.cSuccessNone0.063246s0.135816s
Success
pipe2.cSuccessNone0.061463s0.128023s
Success
pipeinput.cSuccessNone0.062307s0.149861s
Success
pipeinput2.cSuccessNone0.062649s0.157189s
Success
pipeonestring.cSuccessNone0.062237s0.152486s
Success
pipepong.cSuccessNone0.060636s0.153780s
Success
pipewrite.cSuccessNone0.056354s0.123645s
Success
poll.cSuccessNone0.058839s0.120183s
Success
recvfrom-sendto.cSuccessNone0.060914s0.133576s
Success
sendmsg_recvmsg_test.cSuccessNone0.059745s0.136981s
Success
serverclient.cSuccessNone0.062352s0.141243s
Success
shutdown.cSuccessNone0.061384s0.135624s
Success
shutdown_fork.cSuccessNone0.060726s0.141654s
Success
simple-select.cSuccessNone0.061566s0.155020s
Success
simple_epoll.cSuccessNone0.060654s0.132835s
Success
socket.cSuccessNone0.058631s0.124182s
Success
socket_cloexec.cSuccessNone0.057896s0.124877s
Success
socket_options_advanced.cSuccessNone0.064027s0.184846s
Success
socketepoll.cSuccessNone0.060222s0.124915s
Success
socketpair.cSuccessNone0.060283s0.134549s
Success
socketselect.cSuccessNone0.058294s0.130665s
Success
udp_send_recv.cSuccessNone0.167487s0.277489s
Success
uds-getsockname.cSuccessNone0.062075s0.127264s
Success
uds-nb-select.cSuccessNone2.068766s2.184564s
Success
uds-serverclient.cSuccessNone0.064833s0.159921s
Success
uds-socketselect.cSuccessNone0.059274s0.133131s
Success
uds_listen_poll.cSuccessNone1.066101s1.166234s
Success
writev_socket.cSuccessNone0.063081s0.166224s
Success
Process Tests
barrier_test.cSuccessNone0.059226s0.135161s
Success
chain_thread.cSuccessNone1.060596s1.141948s
Success
ctor_syscall_test.cSuccessNone0.050318s0.110701s
Success
cxa_atexit_test.cSuccessNone0.055804s0.120010s
Success
exec_non_utf8.cSuccessNone0.059070s0.122793s
Success
execve_shebang.cSuccessNone0.059508s0.124909s
Success
exit.cSuccessNone0.057557s0.115354s
Success
exit_failure.cSuccessNone0.059251s0.129923s
Success
exit_group_thread.cSuccessNone0.059675s0.142747s
Success
exit_status_first_wins.cSuccessNone0.062081s0.143450s
Success
flockfile_test.cSuccessNone0.060736s0.142896s
Success
fork2malloc.cSuccessNone0.059851s0.131332s
Success
fork_select.cSuccessNone0.059472s0.141714s
Success
fork_simple.cSuccessNone0.057152s0.126371s
Success
fork_syscall.cSuccessNone0.063458s0.364507s
Success
fork_tls_ctype.cSuccessNone0.061882s0.154731s
Success
forkandopen.cSuccessNone0.059803s0.142809s
Success
forkdup.cSuccessNone0.064365s0.136375s
Success
forkexecuid.cSuccessNone0.058151s0.144942s
Success
forkexecv-arg.cSuccessNone0.059347s0.137090s
Success
forkexecv.cSuccessNone0.056236s0.130830s
Success
forkfiles.cSuccessNone0.061198s0.142015s
Success
forkmalloc.cSuccessNone0.087690s0.133562s
Success
forknodup.cSuccessNone0.059843s0.141200s
Success
function-ptr.cSuccessNone0.054578s0.114926s
Success
getegid_syscall.cSuccessNone0.061822s0.291461s
Success
getgid_syscall.cSuccessNone0.060139s0.297739s
Success
getpid.cSuccessNone0.053895s0.113088s
Success
getpid_syscall.cSuccessNone0.061597s0.309403s
Success
getppid.cSuccessNone0.061486s0.129117s
Success
getppid_syscall.cSuccessNone0.062954s0.259611s
Success
getuid.cSuccessNone0.059990s0.123586s
Success
getuid_syscall.cSuccessNone0.058295s0.189827s
Success
hello-arg.cSuccessNone0.050703s0.113908s
Success
hello.cSuccessNone0.051670s0.109885s
Success
longjmp.cSuccessNone0.052477s0.118755s
Success
mutex.cSuccessNone2.064524s2.133242s
Success
printf_deadlock_smoke.cSuccessNone0.065496s0.161621s
Success
printf_thread_test.cSuccessNone0.058145s0.136414s
Success
sem_forks.cSuccessNone0.062180s0.154970s
Success
setsid.cSuccessNone0.052237s0.111243s
Success
template.cSuccessNone0.058898s0.157471s
Success
test_exec_nofork.cSuccessNone0.057730s0.129199s
Success
test_unlink_open_file.cSuccessNone0.054116s0.113291s
Success
thread-guard.cSuccessNone0.057460s0.130701s
Success
thread-test.cSuccessNone0.057452s0.122495s
Success
thread.cSuccessNone0.054563s0.119073s
Success
thread_cageid_race.cSuccessNone0.056453s0.174626s
Success
tls_test.cSuccessNone0.057917s0.136658s
Success
uname.cSuccessNone0.054253s0.112602s
Success
wait.cSuccessNone0.056165s0.136469s
Success
waitpid_anychild.cSuccessNone0.059893s0.133585s
Success
waitpid_syscall.cSuccessNone1.058920s1.179795s
Success
waitpid_wnohang.cSuccessNone0.059435s0.134998s
Success
Signal Tests
alarm.cSuccessNone7.058938s7.157535s
Success
eintr_fork_signal.cSuccessNone1.061098s1.148967s
Success
kill.cSuccessNone1.059800s1.136395s
Success
setitimer.cSuccessNone7.058884s7.162371s
Success
sigalrm.cSuccessNone2.060026s2.141363s
Success
sigaltstack.cSuccessNone0.060436s0.135234s
Success
sigchld.cSuccessNone1.061433s1.133521s
Success
signal-fork.cSuccessNone4.061460s4.146271s
Success
signal-simple.cSuccessNone0.060633s0.124487s
Success
signal_SIGCHLD.cSuccessNone0.058526s0.137093s
Success
signal_fork.cSuccessNone0.056606s0.138192s
Success
signal_int_ignored.cSuccessNone2.059582s2.134662s
Success
signal_kill_cleanup.cSuccessNone1.058237s1.130668s
Success
signal_procmask.cSuccessNone0.055075s0.124173s
Success
signal_read_interrupt.cSuccessNone0.563210s0.641876s
Success
signal_recursive.cSuccessNone0.055148s0.128078s
Success
signal_sa_mask.cSuccessNone0.054717s0.121606s
Success
signal_select_interrupt.cSuccessNone0.563126s0.646717s
Success
signal_write_interrupt.cSuccessNone1.061983s1.143921s
Success
sigpipe.cSuccessNone1.062622s1.145043s
Success
sigprocmask.cSuccessNone1.059160s1.139000s
Success
Fail Tests

Summary

MetricCount
Total Test Cases4
Number of Successes4
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Dylink Tests
dlerror.cSuccessNone0.052113s0.114441s
Success
Memory Tests
mmap-negative1.cSuccessNone0.147902s0.120265s
Success
mmap-negative2.cSuccessNone0.127147s0.134847s
Success
Signal Tests
signal_resethand.cSuccessNone1.059185s1.132515s
Success

C++ harness

Summary

MetricValue
Total1
Success1
Failures0
Compile failures0
Runtime failures0
Output mismatch0
Timeouts0

Cases

TestStatusError typeNative timeWasm timeOutput
tests/unit-tests/cpp/sort.cppSuccess0.633570s10.686608s
LIBCPP_SORT_OK 1 2 3

…new helpers

Per Sanchit's review on #1185 + issue #1186: the existing unused
sc_convert_uaddr_to_host already takes (uaddr, addr_cageid) and uses
addr_cageid to look up the right cage's base — which is exactly the
shape we need for both cage-userland calls and grate-forwarded calls
(where glibc strips FLAG and leaves addr_cageid as the grate's id).

Changes:
- sc_convert_uaddr_to_host: drop the NULL early-return (so uaddr=0
  anchors to the cage's base — needed for early_init_stack-style
  MAP_FIXED at 0); change the 'uaddr >= base_addr' panic into a
  passthrough (already-translated host pointer).
- Delete sc_convert_addr_to_sys; mmap_syscall and brk_syscall now call
  sc_convert_uaddr_to_host directly.
- Rename sc_convert_sys_to_user to sc_convert_host_to_uaddr for naming
  symmetry with the forward direction.  Keep it as the inverse helper
  for return-value bookkeeping (mmap result -> cage uaddr, brk arg
  passed as host sysaddr -> cage uaddr).

No behavior change vs the prior PR commits — same value-range
disambiguation, same passthrough semantics, just routed through the
existing helper.
check_addr_read / check_addr_rw assume addr is a pre-translated host
pointer and do 'addr - base_addr' inside calculate_page_range.  When a
grate calls copy_data_between_cages(..., cage_uaddr, cage_id, ...) with
a uaddr returned from a previous mmap (POSIX doesn't translate return
values, and glibc's TRANSLATE_UADDR_TO_HOST only fires when
arg_cageid == __lind_cageid — i.e. when the addr is in the caller's
own cage), the uaddr arrives untranslated, addr - base_addr underflows
in u64, the page_num is garbage, and validation reports 'range invalid'.

End-effect for imfs's mmap interposition: copy_data_between_cages
fails the validation when seeding a freshly-mmap'd cage region with
file contents, so the cage reads zeros.

Fix mirrors the mmap_syscall / sc_convert_uaddr_to_host change: if
'addr >= base_addr' treat as host pointer (subtract base); otherwise
treat as cage uaddr (use directly).  Same passthrough disambiguation.
Issue #1186 part 2.  copy_data_between_cages did 'let host_src_addr =
srcaddr' without actually translating — it assumed glibc's
TRANSLATE_UADDR_TO_HOST had already converted the addr to a host
pointer.  That only happens for args owned by the calling cage; cross-
cage args (e.g. a uaddr returned from a previous mmap that the caller
is passing back in for someone else's cage) arrive untranslated.

End-effect: when imfs's grate calls copy_data_between_cages(...,
cage_uaddr, cage_id, ...) to seed a freshly-mmap'd cage region with
file contents, the cage_uaddr reached the runtime as a small integer.
On main, _validate_range_* underflowed and returned 'range invalid';
the copy never ran.  Loosening calculate_page_range to accept the
small value let validation pass, but the subsequent
std::ptr::copy_nonoverlapping at the same small value segfaulted.

Fix: translate srcaddr and destaddr at the top of
copy_data_between_cages via sc_convert_uaddr_to_host, which handles
both forms — host-pointer passthrough, cage uaddr gets the named
cage's base added.  After that, _validate_range_* and the actual
copy_nonoverlapping use translated host pointers and work normally.

Reverts the calculate_page_range loosening from the previous commit;
that was the wrong layer to fix this at.
@github-actions

Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

grate harness

Grate Test Report

MetricValue
Total15
Success15
Failures0
Compile Failures0
Runtime Failures0
Timeout Failures0
Missing Pair Failures0

Cases

TestStatusError TypeOutput
concurrent-request/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] PASS

STDERR:

concurrent-request/race-test_grate.cSuccess
STDOUT:
pass

STDERR:

concurrent-request/thread_race_grate.cSuccess
STDOUT:
[thread_race] Registering handler for cage 2 in grate 1 with fn ptr addr: 3
[thread_race] PASS: 20 threads x 100000 calls returned 10
[thread_race] PASS

STDERR:

copy-data-between-cages/cp-stncpy_grate.cSuccess
STDOUT:
[cage] pathname addr=0xfffb6ff9
[cage] pathname='random'
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

copy-data-between-cages/cpdata_grate.cSuccess
STDOUT:
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

interposing-calls/fork-with-newret_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Cage] Forked process with PID: 10
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-exec_grate.cSuccess
STDOUT:
[Grate|interpose-exec] Registering exec handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
Exec successful, argv[1]: --execd
[Grate|interpose-exec] PASS

STDERR:

interposing-calls/interpose-exit_grate.cSuccess
STDOUT:
[Grate|interpose-exit] Registering exit handler for cage 2 in grate 1 with fn ptr addr: 3
Exiting...

[Grate|interpose-exit] PASS

STDERR:

interposing-calls/interpose-fork_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-mmap_grate.cSuccess
STDOUT:
[Grate|interpose-mmap] Registering mmap handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
mmap test: PASS
[Grate|interpose-mmap] PASS

STDERR:

interposing-calls/interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 4
[cage] registering 107. grateid: 2 cageid: 3
[Grate|interpose-register] Handling function ptr: 4 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|geteuid] Registering geteuid handler for cage 1 in grate 1 with fn ptr addr: 3
[Grate|interpose-register] Handling function ptr: 3 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|interpose-register] PASS

STDERR:

multi-register_grate.cSuccess
STDOUT:
[Grate|multi-register_grate] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 4
[Grate|multi-register_grate] Registering getuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|multi-register_grate] Handling function ptr: 4 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Grate|multi-register_grate] Handling function ptr: 3 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Cage | multi-register] PASS: geteuid=10, getuid=20
[Grate|multi-register] PASS

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 3 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 4 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:

simple-tests/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|geteuid] Handling function ptr: 3 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

simple-tests/mmap-flag_grate.cSuccess
STDOUT:
[Cage|mmap-flag] PASS
[Grate|mmap-flag] PASS

STDERR:

static harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases3
Number of Successes3
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Static Tests
fork_simple.cSuccessNone0.051228s4.232770s
Success
thread.cSuccessNone0.149916s4.364232s
Success
tls_test.cSuccessNone0.056488s4.286758s
Success
Fail Tests

Summary

MetricCount
Total Test Cases0
Number of Successes0
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases218
Number of Successes218
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
File Tests
chartests.cSuccessNone0.043566s0.128367s
Success
chdir_getcwd.cSuccessNone0.043262s0.103359s
Success
chmod.cSuccessNone0.048705s0.115621s
Success
clock_gettime_highlevel.cSuccessNone0.114355s0.152649s
Success
clock_gettime_simple.cSuccessNone0.040424s0.094018s
Success
cloexec.cSuccessNone0.047891s0.117671s
Success
close.cSuccessNone0.054021s0.120195s
Success
creat_access.cSuccessNone0.046054s0.100884s
Success
doubleclose.cSuccessNone0.041306s0.088978s
Success
dup.cSuccessNone0.041284s0.099832s
Success
dup2.cSuccessNone0.047117s0.101968s
Success
dup3.cSuccessNone0.042560s0.104137s
Success
dupwrite.cSuccessNone0.046102s0.103178s
Success
etc_conf.cSuccessNone0.043626s0.103212s
Success
faccessat.cSuccessNone0.042738s0.101736s
Success
fchdir.cSuccessNone0.050780s0.119551s
Success
fchmod.cSuccessNone0.050388s0.114999s
Success
fchmodat.cSuccessNone0.042437s0.100479s
Success
fcntl.cSuccessNone0.046952s0.119791s
Success
fdatasync.cSuccessNone0.047257s0.101890s
Success
filetest.cSuccessNone0.047246s0.096784s
Success
filetest1000.cSuccessNone0.052346s0.111466s
Success
flock.cSuccessNone0.056350s0.139494s
Success
fstat.cSuccessNone0.047282s0.116566s
Success
fstatfs.cSuccessNone0.042849s0.098768s
Success
fsync.cSuccessNone0.048454s0.099625s
Success
ftruncate.cSuccessNone0.055046s0.194171s
Success
getcwd.cSuccessNone0.044860s0.097318s
Success
getcwd_null.cSuccessNone0.048470s0.111602s
Success
getpgid.cSuccessNone0.040630s0.090595s
Success
getrandom.cSuccessNone0.047358s0.112309s
Success
ioctl.cSuccessNone0.048333s0.111012s
Success
link.cSuccessNone0.050161s0.145407s
Success
locale_test.cSuccessNone0.061376s0.298995s
Success
lseek.cSuccessNone0.050692s0.176949s
Success
lstat.cSuccessNone0.052745s0.124576s
Success
mkdir_rmdir.cSuccessNone0.050344s0.106996s
Success
mkfifo_test.cSuccessNone0.053572s0.147987s
Success
mknod.cSuccessNone0.046519s0.113424s
Success
nocancel_io.cSuccessNone0.049292s0.124323s
Success
open.cSuccessNone0.042802s0.095009s
Success
openat.cSuccessNone0.043673s0.101551s
Success
path_conversion_safety.cSuccessNone0.049057s0.123412s
Success
ppoll.cSuccessNone0.049091s0.109793s
Success
pread_pwrite.cSuccessNone0.044204s0.106366s
Success
preadv_pwritev.cSuccessNone0.050592s0.122732s
Success
printf.cSuccessNone0.037741s0.085925s
Success
prlimit64.cSuccessNone0.039810s0.090616s
Success
read.cSuccessNone0.049284s0.110571s
Success
readbytes.cSuccessNone0.042978s0.092932s
Success
readdir_basic.cSuccessNone0.053005s0.138574s
Success
readlink.cSuccessNone0.046041s0.107624s
Success
readlinkat.cSuccessNone0.047499s0.110213s
Success
readv_writev_test.cSuccessNone0.050194s0.115263s
Success
rename.cSuccessNone0.047896s0.105333s
Success
renameat.cSuccessNone0.050915s0.124025s
Success
sc-writev.cSuccessNone0.043486s0.098845s
Success
stat.cSuccessNone0.048793s0.115562s
Success
statfs.cSuccessNone0.041463s0.095352s
Success
symlink.cSuccessNone0.048682s0.130572s
Success
sync_file_range.cSuccessNone0.046563s0.095772s
Success
timespec_time_t_compat.cSuccessNone0.045874s0.095370s
Success
truncate.cSuccessNone0.050477s0.123220s
Success
unlink.cSuccessNone0.047978s0.133644s
Success
unlinkat.cSuccessNone0.051033s0.122595s
Success
utimensat.cSuccessNone0.045750s0.120867s
Success
write.cSuccessNone0.042348s0.089531s
Success
writeloop.cSuccessNone0.050883s0.103668s
Success
writepartial.cSuccessNone0.049010s0.099033s
Success
writev.cSuccessNone0.047564s0.108714s
Success
Math Tests
math_link_smoke.cSuccessNone0.049511s0.092870s
Success
math_tests.cSuccessNone0.056006s0.120490s
Success
printf_float.cSuccessNone0.053043s0.118054s
Success
Memory Tests
brk.cSuccessNone0.043640s0.097916s
Success
fork_large_memory.cSuccessNone0.077290s0.347718s
Success
malloc.cSuccessNone0.042230s0.092131s
Success
malloc_large.cSuccessNone0.043144s0.093136s
Success
memcpy.cSuccessNone0.043191s0.091757s
Success
memory_error_test.cSuccessNone0.049763s0.121927s
Success
mmap.cSuccessNone0.040809s0.088291s
Success
mmap_aligned.cSuccessNone0.040770s0.107075s
Success
mmap_complicated.cSuccessNone0.046370s0.110606s
Success
mmap_file.cSuccessNone0.045709s0.101539s
Success
mmap_shared.cSuccessNone0.046807s0.106875s
Success
mmaptest.cSuccessNone0.041757s0.094555s
Success
mprotect.cSuccessNone0.041221s0.089381s
Success
mprotect_boundary.cSuccessNone0.041719s0.101491s
Success
mprotect_end_region.cSuccessNone0.039768s0.099344s
Success
mprotect_middle_region.cSuccessNone0.042695s0.100948s
Success
mprotect_multiple_times.cSuccessNone0.039844s0.099301s
Success
mprotect_same_value.cSuccessNone0.041719s0.096097s
Success
mprotect_spanning_regions.cSuccessNone0.041033s0.114832s
Success
munmap_adjacent_shm.cSuccessNone0.044602s0.115206s
Success
sbrk.cSuccessNone0.041459s0.093655s
Success
segfault.cSuccessNone0.047452s0.127430s
Success
shm.cSuccessNone0.048134s0.115172s
Success
shmtest.cSuccessNone0.040792s0.097602s
Success
thread_malloc_sequential.cSuccessNone0.048310s0.137575s
Success
vtable.cSuccessNone0.053997s0.112858s
Success
Networking Tests
accept4.cSuccessNone0.052183s0.118736s
Success
dns_resolve_test.cSuccessNone0.047502s0.109398s
Success
dnstest.cSuccessNone0.045618s0.100427s
Success
epoll_badfd.cSuccessNone0.041514s0.093207s
Success
epoll_edge_triggered.cSuccessNone0.203891s0.360374s
Success
epollcreate1.cSuccessNone0.048386s0.118328s
Success
error_handling_net.cSuccessNone0.053642s0.170964s
Success
getaddrinfo_test.cSuccessNone0.051326s0.140719s
Success
getaddrinfo_unspec.cSuccessNone0.049310s0.178771s
Success
gethostname.cSuccessNone0.042144s0.092015s
Success
getifaddrs.cSuccessNone0.049117s0.109963s
Success
getsockname.cSuccessNone0.054159s0.110048s
Success
getsockopt.cSuccessNone0.049462s0.137920s
Success
ipv6_basic.cSuccessNone0.054353s0.145659s
Success
makepipe.cSuccessNone0.041596s0.091430s
Success
nonblocking_eagain.cSuccessNone0.052012s0.147704s
Success
pipe.cSuccessNone0.048810s0.112723s
Success
pipe2.cSuccessNone0.048516s0.105153s
Success
pipeinput.cSuccessNone0.049827s0.126016s
Success
pipeinput2.cSuccessNone0.049579s0.131871s
Success
pipeonestring.cSuccessNone0.052170s0.132028s
Success
pipepong.cSuccessNone0.048656s0.133754s
Success
pipewrite.cSuccessNone0.044209s0.100945s
Success
poll.cSuccessNone0.046703s0.097301s
Success
recvfrom-sendto.cSuccessNone0.047937s0.110321s
Success
sendmsg_recvmsg_test.cSuccessNone0.049044s0.115266s
Success
serverclient.cSuccessNone0.048969s0.117692s
Success
shutdown.cSuccessNone0.049101s0.111743s
Success
shutdown_fork.cSuccessNone0.047662s0.113869s
Success
simple-select.cSuccessNone0.053514s0.125183s
Success
simple_epoll.cSuccessNone0.048635s0.110248s
Success
socket.cSuccessNone0.045822s0.098965s
Success
socket_cloexec.cSuccessNone0.047652s0.098866s
Success
socket_options_advanced.cSuccessNone0.054996s0.161237s
Success
socketepoll.cSuccessNone0.045807s0.100909s
Success
socketpair.cSuccessNone0.047413s0.115248s
Success
socketselect.cSuccessNone0.048645s0.107025s
Success
udp_send_recv.cSuccessNone0.153848s0.251767s
Success
uds-getsockname.cSuccessNone0.047576s0.103580s
Success
uds-nb-select.cSuccessNone2.055476s2.160493s
Success
uds-serverclient.cSuccessNone0.052773s0.138255s
Success
uds-socketselect.cSuccessNone0.049951s0.113079s
Success
uds_listen_poll.cSuccessNone1.055312s1.139570s
Success
writev_socket.cSuccessNone0.052643s0.137636s
Success
Process Tests
barrier_test.cSuccessNone0.045779s0.111468s
Success
chain_thread.cSuccessNone1.047916s1.115790s
Success
ctor_syscall_test.cSuccessNone0.039416s0.090302s
Success
cxa_atexit_test.cSuccessNone0.043584s0.095304s
Success
exec_non_utf8.cSuccessNone0.047274s0.100039s
Success
execve_shebang.cSuccessNone0.048421s0.100548s
Success
exit.cSuccessNone0.044057s0.092392s
Success
exit_failure.cSuccessNone0.045555s0.103170s
Success
exit_group_thread.cSuccessNone0.048869s0.119080s
Success
exit_status_first_wins.cSuccessNone0.050117s0.121614s
Success
flockfile_test.cSuccessNone0.049111s0.117657s
Success
fork2malloc.cSuccessNone0.050043s0.117901s
Success
fork_select.cSuccessNone0.045971s0.116780s
Success
fork_simple.cSuccessNone0.044412s0.102634s
Success
fork_syscall.cSuccessNone0.053362s0.326123s
Success
fork_tls_ctype.cSuccessNone0.051235s0.131266s
Success
forkandopen.cSuccessNone0.047889s0.120176s
Success
forkdup.cSuccessNone0.051616s0.115900s
Success
forkexecuid.cSuccessNone0.044977s0.119060s
Success
forkexecv-arg.cSuccessNone0.046943s0.108653s
Success
forkexecv.cSuccessNone0.045424s0.108409s
Success
forkfiles.cSuccessNone0.052589s0.121461s
Success
forkmalloc.cSuccessNone0.049691s0.108222s
Success
forknodup.cSuccessNone0.047607s0.119886s
Success
function-ptr.cSuccessNone0.041898s0.090128s
Success
getegid_syscall.cSuccessNone0.047288s0.241842s
Success
getgid_syscall.cSuccessNone0.048758s0.243733s
Success
getpid.cSuccessNone0.040525s0.087594s
Success
getpid_syscall.cSuccessNone0.049055s0.247160s
Success
getppid.cSuccessNone0.049287s0.108096s
Success
getppid_syscall.cSuccessNone0.051351s0.219738s
Success
getuid.cSuccessNone0.047820s0.102978s
Success
getuid_syscall.cSuccessNone0.045919s0.159477s
Success
hello-arg.cSuccessNone0.038727s0.090215s
Success
hello.cSuccessNone0.038949s0.083769s
Success
longjmp.cSuccessNone0.038915s0.091717s
Success
mutex.cSuccessNone2.052270s2.108341s
Success
printf_deadlock_smoke.cSuccessNone0.056621s0.137729s
Success
printf_thread_test.cSuccessNone0.045758s0.111617s
Success
sem_forks.cSuccessNone0.049710s0.124302s
Success
setsid.cSuccessNone0.040144s0.089712s
Success
template.cSuccessNone0.048754s0.129465s
Success
test_exec_nofork.cSuccessNone0.044892s0.104233s
Success
test_unlink_open_file.cSuccessNone0.042392s0.090078s
Success
thread-guard.cSuccessNone0.047117s0.109751s
Success
thread-test.cSuccessNone0.041872s0.096245s
Success
thread.cSuccessNone0.043492s0.098963s
Success
thread_cageid_race.cSuccessNone0.043007s0.146206s
Success
tls_test.cSuccessNone0.047432s0.111652s
Success
uname.cSuccessNone0.041147s0.091373s
Success
wait.cSuccessNone0.044489s0.110612s
Success
waitpid_anychild.cSuccessNone0.047450s0.112726s
Success
waitpid_syscall.cSuccessNone1.048646s1.158046s
Success
waitpid_wnohang.cSuccessNone0.048612s0.111576s
Success
Signal Tests
alarm.cSuccessNone7.048464s7.127593s
Success
eintr_fork_signal.cSuccessNone1.049538s1.121465s
Success
kill.cSuccessNone1.047143s1.107747s
Success
setitimer.cSuccessNone7.047801s7.124781s
Success
sigalrm.cSuccessNone2.049780s2.122464s
Success
sigaltstack.cSuccessNone0.051421s0.117104s
Success
sigchld.cSuccessNone1.047754s1.110781s
Success
signal-fork.cSuccessNone4.048562s4.109540s
Success
signal-simple.cSuccessNone0.047828s0.100642s
Success
signal_SIGCHLD.cSuccessNone0.048349s0.113801s
Success
signal_fork.cSuccessNone0.045651s0.112077s
Success
signal_int_ignored.cSuccessNone2.049533s2.108197s
Success
signal_kill_cleanup.cSuccessNone1.045411s1.104906s
Success
signal_procmask.cSuccessNone0.043883s0.101277s
Success
signal_read_interrupt.cSuccessNone0.552584s0.616078s
Success
signal_recursive.cSuccessNone0.044035s0.106332s
Success
signal_sa_mask.cSuccessNone0.043245s0.098971s
Success
signal_select_interrupt.cSuccessNone0.553791s0.624268s
Success
signal_write_interrupt.cSuccessNone1.049700s1.120390s
Success
sigpipe.cSuccessNone1.050925s1.115743s
Success
sigprocmask.cSuccessNone1.048892s1.106480s
Success
Fail Tests

Summary

MetricCount
Total Test Cases4
Number of Successes4
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Dylink Tests
dlerror.cSuccessNone0.043147s0.093412s
Success
Memory Tests
mmap-negative1.cSuccessNone0.108785s0.101600s
Success
mmap-negative2.cSuccessNone0.107466s0.115212s
Success
Signal Tests
signal_resethand.cSuccessNone1.045614s1.106233s
Success

C++ harness

Summary

MetricValue
Total1
Success1
Failures0
Compile failures0
Runtime failures0
Output mismatch0
Timeouts0

Cases

TestStatusError typeNative timeWasm timeOutput
tests/unit-tests/cpp/sort.cppSuccess0.414711s9.541443s
LIBCPP_SORT_OK 1 2 3

@github-actions

Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

grate harness

Grate Test Report

MetricValue
Total15
Success15
Failures0
Compile Failures0
Runtime Failures0
Timeout Failures0
Missing Pair Failures0

Cases

TestStatusError TypeOutput
concurrent-request/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] PASS

STDERR:

concurrent-request/race-test_grate.cSuccess
STDOUT:
pass

STDERR:

concurrent-request/thread_race_grate.cSuccess
STDOUT:
[thread_race] Registering handler for cage 2 in grate 1 with fn ptr addr: 3
[thread_race] PASS: 20 threads x 100000 calls returned 10
[thread_race] PASS

STDERR:

copy-data-between-cages/cp-stncpy_grate.cSuccess
STDOUT:
[cage] pathname addr=0xfffb6ff9
[cage] pathname='random'
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

copy-data-between-cages/cpdata_grate.cSuccess
STDOUT:
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

interposing-calls/fork-with-newret_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Cage] Forked process with PID: 10
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-exec_grate.cSuccess
STDOUT:
[Grate|interpose-exec] Registering exec handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
Exec successful, argv[1]: --execd
[Grate|interpose-exec] PASS

STDERR:

interposing-calls/interpose-exit_grate.cSuccess
STDOUT:
[Grate|interpose-exit] Registering exit handler for cage 2 in grate 1 with fn ptr addr: 3
Exiting...

[Grate|interpose-exit] PASS

STDERR:

interposing-calls/interpose-fork_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-mmap_grate.cSuccess
STDOUT:
[Grate|interpose-mmap] Registering mmap handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
mmap test: PASS
[Grate|interpose-mmap] PASS

STDERR:

interposing-calls/interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 4
[cage] registering 107. grateid: 2 cageid: 3
[Grate|interpose-register] Handling function ptr: 4 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|geteuid] Registering geteuid handler for cage 1 in grate 1 with fn ptr addr: 3
[Grate|interpose-register] Handling function ptr: 3 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|interpose-register] PASS

STDERR:

multi-register_grate.cSuccess
STDOUT:
[Grate|multi-register_grate] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 4
[Grate|multi-register_grate] Registering getuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|multi-register_grate] Handling function ptr: 4 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Grate|multi-register_grate] Handling function ptr: 3 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Cage | multi-register] PASS: geteuid=10, getuid=20
[Grate|multi-register] PASS

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 3 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 4 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:

simple-tests/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|geteuid] Handling function ptr: 3 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

simple-tests/mmap-flag_grate.cSuccess
STDOUT:
[Cage|mmap-flag] PASS
[Grate|mmap-flag] PASS

STDERR:

static harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases3
Number of Successes3
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Static Tests
fork_simple.cSuccessNone0.053853s4.418464s
Success
thread.cSuccessNone0.045846s4.454938s
Success
tls_test.cSuccessNone0.058670s4.473896s
Success
Fail Tests

Summary

MetricCount
Total Test Cases0
Number of Successes0
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases220
Number of Successes220
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
File Tests
chartests.cSuccessNone0.047148s0.138356s
Success
chdir_getcwd.cSuccessNone0.048323s0.110430s
Success
chmod.cSuccessNone0.052899s0.118776s
Success
clock_gettime_highlevel.cSuccessNone0.118137s0.154004s
Success
clock_gettime_simple.cSuccessNone0.042065s0.097296s
Success
cloexec.cSuccessNone0.051904s0.124440s
Success
close.cSuccessNone0.060190s0.131968s
Success
creat_access.cSuccessNone0.050572s0.109662s
Success
doubleclose.cSuccessNone0.043060s0.093253s
Success
dup.cSuccessNone0.043423s0.107931s
Success
dup2.cSuccessNone0.048374s0.106489s
Success
dup3.cSuccessNone0.047634s0.110262s
Success
dupwrite.cSuccessNone0.050357s0.105431s
Success
etc_conf.cSuccessNone0.045974s0.112180s
Success
faccessat.cSuccessNone0.046894s0.111773s
Success
fchdir.cSuccessNone0.052624s0.119441s
Success
fchmod.cSuccessNone0.052336s0.117611s
Success
fchmodat.cSuccessNone0.046385s0.107731s
Success
fcntl.cSuccessNone0.051418s0.125604s
Success
fcntl_dupfd.cSuccessNone0.044623s0.102074s
Success
fdatasync.cSuccessNone0.050865s0.106715s
Success
filetest.cSuccessNone0.050806s0.105189s
Success
filetest1000.cSuccessNone0.057972s0.116642s
Success
flock.cSuccessNone0.058791s0.143214s
Success
fstat.cSuccessNone0.052189s0.119861s
Success
fstatfs.cSuccessNone0.045539s0.101455s
Success
fsync.cSuccessNone0.049565s0.104934s
Success
ftruncate.cSuccessNone0.054240s0.205410s
Success
getcwd.cSuccessNone0.047523s0.100298s
Success
getcwd_null.cSuccessNone0.051882s0.114644s
Success
getpgid.cSuccessNone0.045328s0.096189s
Success
getrandom.cSuccessNone0.049706s0.119541s
Success
ioctl.cSuccessNone0.053239s0.114446s
Success
link.cSuccessNone0.053309s0.149269s
Success
locale_test.cSuccessNone0.065380s0.315942s
Success
lseek.cSuccessNone0.056456s0.190349s
Success
lstat.cSuccessNone0.054016s0.128713s
Success
mkdir_rmdir.cSuccessNone0.051528s0.110442s
Success
mkfifo_test.cSuccessNone0.056756s0.154479s
Success
mknod.cSuccessNone0.049481s0.117112s
Success
nocancel_io.cSuccessNone0.053553s0.134416s
Success
open.cSuccessNone0.043471s0.096796s
Success
openat.cSuccessNone0.045491s0.104755s
Success
path_conversion_safety.cSuccessNone0.054787s0.127438s
Success
ppoll.cSuccessNone0.055352s0.119981s
Success
pread_pwrite.cSuccessNone0.047435s0.114288s
Success
preadv_pwritev.cSuccessNone0.053393s0.124877s
Success
printf.cSuccessNone0.042512s0.092984s
Success
prlimit64.cSuccessNone0.043893s0.098417s
Success
read.cSuccessNone0.051040s0.121094s
Success
readbytes.cSuccessNone0.048492s0.104568s
Success
readdir_basic.cSuccessNone0.054644s0.139228s
Success
readlink.cSuccessNone0.050629s0.116808s
Success
readlinkat.cSuccessNone0.051986s0.118033s
Success
readv_writev_test.cSuccessNone0.053684s0.121576s
Success
rename.cSuccessNone0.052192s0.110894s
Success
renameat.cSuccessNone0.053529s0.123999s
Success
sc-writev.cSuccessNone0.050104s0.113467s
Success
stat.cSuccessNone0.051577s0.119187s
Success
statfs.cSuccessNone0.044585s0.099308s
Success
symlink.cSuccessNone0.053330s0.139851s
Success
sync_file_range.cSuccessNone0.048373s0.104887s
Success
timespec_time_t_compat.cSuccessNone0.047911s0.101015s
Success
trailing_slash.cSuccessNone0.050337s0.114928s
Success
truncate.cSuccessNone0.051722s0.127994s
Success
unlink.cSuccessNone0.054416s0.148087s
Success
unlinkat.cSuccessNone0.054542s0.127061s
Success
utimensat.cSuccessNone0.050196s0.129582s
Success
write.cSuccessNone0.044449s0.095229s
Success
writeloop.cSuccessNone0.053045s0.108380s
Success
writepartial.cSuccessNone0.051993s0.103393s
Success
writev.cSuccessNone0.051714s0.116895s
Success
Math Tests
math_link_smoke.cSuccessNone0.054743s0.100813s
Success
math_tests.cSuccessNone0.059543s0.129870s
Success
printf_float.cSuccessNone0.055271s0.125044s
Success
Memory Tests
brk.cSuccessNone0.047348s0.103275s
Success
fork_large_memory.cSuccessNone0.079306s0.360884s
Success
malloc.cSuccessNone0.044850s0.093010s
Success
malloc_large.cSuccessNone0.045601s0.094501s
Success
memcpy.cSuccessNone0.045584s0.095062s
Success
memory_error_test.cSuccessNone0.051800s0.127613s
Success
mmap.cSuccessNone0.041738s0.094413s
Success
mmap_aligned.cSuccessNone0.043756s0.109460s
Success
mmap_complicated.cSuccessNone0.049978s0.120166s
Success
mmap_file.cSuccessNone0.050147s0.109858s
Success
mmap_shared.cSuccessNone0.049911s0.113642s
Success
mmaptest.cSuccessNone0.044575s0.099975s
Success
mprotect.cSuccessNone0.044356s0.096214s
Success
mprotect_boundary.cSuccessNone0.042941s0.106014s
Success
mprotect_end_region.cSuccessNone0.042622s0.099488s
Success
mprotect_middle_region.cSuccessNone0.043444s0.102053s
Success
mprotect_multiple_times.cSuccessNone0.043068s0.103289s
Success
mprotect_same_value.cSuccessNone0.043037s0.098753s
Success
mprotect_spanning_regions.cSuccessNone0.044125s0.118168s
Success
munmap_adjacent_shm.cSuccessNone0.048067s0.115778s
Success
sbrk.cSuccessNone0.045492s0.097293s
Success
segfault.cSuccessNone0.050651s0.129361s
Success
shm.cSuccessNone0.048997s0.119807s
Success
shmtest.cSuccessNone0.044771s0.101479s
Success
thread_malloc_sequential.cSuccessNone0.051923s0.147304s
Success
vtable.cSuccessNone0.055151s0.112996s
Success
Networking Tests
accept4.cSuccessNone0.055640s0.125365s
Success
dns_resolve_test.cSuccessNone0.048971s0.109805s
Success
dnstest.cSuccessNone0.050573s0.110689s
Success
epoll_badfd.cSuccessNone0.044558s0.097510s
Success
epoll_edge_triggered.cSuccessNone0.208678s0.373048s
Success
epollcreate1.cSuccessNone0.051683s0.120706s
Success
error_handling_net.cSuccessNone0.060083s0.184480s
Success
getaddrinfo_test.cSuccessNone0.055135s0.148426s
Success
getaddrinfo_unspec.cSuccessNone0.062634s0.144850s
Success
gethostname.cSuccessNone0.043707s0.093966s
Success
getifaddrs.cSuccessNone0.051577s0.111081s
Success
getsockname.cSuccessNone0.057311s0.113155s
Success
getsockopt.cSuccessNone0.053778s0.148392s
Success
ipv6_basic.cSuccessNone0.055178s0.148479s
Success
makepipe.cSuccessNone0.043486s0.093650s
Success
nonblocking_eagain.cSuccessNone0.055238s0.155425s
Success
pipe.cSuccessNone0.055227s0.117774s
Success
pipe2.cSuccessNone0.053428s0.112674s
Success
pipeinput.cSuccessNone0.054878s0.133921s
Success
pipeinput2.cSuccessNone0.054951s0.139408s
Success
pipeonestring.cSuccessNone0.054035s0.133946s
Success
pipepong.cSuccessNone0.052450s0.139872s
Success
pipewrite.cSuccessNone0.046689s0.107533s
Success
poll.cSuccessNone0.051106s0.105560s
Success
recvfrom-sendto.cSuccessNone0.052020s0.117400s
Success
sendmsg_recvmsg_test.cSuccessNone0.051577s0.121616s
Success
serverclient.cSuccessNone0.050983s0.123119s
Success
shutdown.cSuccessNone0.053694s0.121982s
Success
shutdown_fork.cSuccessNone0.052110s0.123304s
Success
simple-select.cSuccessNone0.053585s0.135534s
Success
simple_epoll.cSuccessNone0.051517s0.113767s
Success
socket.cSuccessNone0.050921s0.107063s
Success
socket_cloexec.cSuccessNone0.050243s0.105669s
Success
socket_options_advanced.cSuccessNone0.056379s0.163480s
Success
socketepoll.cSuccessNone0.050740s0.106882s
Success
socketpair.cSuccessNone0.049923s0.117377s
Success
socketselect.cSuccessNone0.050144s0.115346s
Success
udp_send_recv.cSuccessNone0.158464s0.260036s
Success
uds-getsockname.cSuccessNone0.051929s0.108613s
Success
uds-nb-select.cSuccessNone2.061295s2.168462s
Success
uds-serverclient.cSuccessNone0.054675s0.140605s
Success
uds-socketselect.cSuccessNone0.052709s0.118277s
Success
uds_listen_poll.cSuccessNone1.058218s1.150459s
Success
writev_socket.cSuccessNone0.054958s0.147694s
Success
Process Tests
barrier_test.cSuccessNone0.049996s0.116483s
Success
chain_thread.cSuccessNone1.052262s1.123706s
Success
ctor_syscall_test.cSuccessNone0.042062s0.094576s
Success
cxa_atexit_test.cSuccessNone0.047049s0.100139s
Success
exec_non_utf8.cSuccessNone0.049821s0.105874s
Success
execve_shebang.cSuccessNone0.052001s0.108100s
Success
exit.cSuccessNone0.048840s0.099302s
Success
exit_failure.cSuccessNone0.050769s0.113351s
Success
exit_group_thread.cSuccessNone0.052560s0.124052s
Success
exit_status_first_wins.cSuccessNone0.054462s0.125162s
Success
flockfile_test.cSuccessNone0.051388s0.124952s
Success
fork2malloc.cSuccessNone0.052751s0.117973s
Success
fork_select.cSuccessNone0.049966s0.122373s
Success
fork_simple.cSuccessNone0.048956s0.110044s
Success
fork_syscall.cSuccessNone0.054826s0.329384s
Success
fork_tls_ctype.cSuccessNone0.054795s0.137746s
Success
forkandopen.cSuccessNone0.052665s0.127982s
Success
forkdup.cSuccessNone0.056497s0.122688s
Success
forkexecuid.cSuccessNone0.050421s0.128862s
Success
forkexecv-arg.cSuccessNone0.050880s0.117874s
Success
forkexecv.cSuccessNone0.048703s0.112559s
Success
forkfiles.cSuccessNone0.050979s0.122044s
Success
forkmalloc.cSuccessNone0.052146s0.115201s
Success
forknodup.cSuccessNone0.051973s0.124868s
Success
function-ptr.cSuccessNone0.045912s0.097799s
Success
getegid_syscall.cSuccessNone0.051459s0.258910s
Success
getgid_syscall.cSuccessNone0.053039s0.266257s
Success
getpid.cSuccessNone0.044005s0.095612s
Success
getpid_syscall.cSuccessNone0.053618s0.272887s
Success
getppid.cSuccessNone0.052884s0.114570s
Success
getppid_syscall.cSuccessNone0.055012s0.232567s
Success
getuid.cSuccessNone0.051873s0.105203s
Success
getuid_syscall.cSuccessNone0.050530s0.171808s
Success
hello-arg.cSuccessNone0.041439s0.096596s
Success
hello.cSuccessNone0.042245s0.091840s
Success
longjmp.cSuccessNone0.042555s0.098280s
Success
mutex.cSuccessNone2.054552s2.116076s
Success
printf_deadlock_smoke.cSuccessNone0.060306s0.149188s
Success
printf_thread_test.cSuccessNone0.049960s0.121618s
Success
sem_forks.cSuccessNone0.056464s0.133571s
Success
setsid.cSuccessNone0.044072s0.093812s
Success
template.cSuccessNone0.051817s0.138789s
Success
test_exec_nofork.cSuccessNone0.049881s0.113813s
Success
test_unlink_open_file.cSuccessNone0.045793s0.095851s
Success
thread-guard.cSuccessNone0.048563s0.115052s
Success
thread-test.cSuccessNone0.045802s0.104189s
Success
thread.cSuccessNone0.046170s0.105582s
Success
thread_cageid_race.cSuccessNone0.047173s0.156291s
Success
tls_test.cSuccessNone0.048537s0.120110s
Success
uname.cSuccessNone0.044479s0.096016s
Success
wait.cSuccessNone0.047828s0.120129s
Success
waitpid_anychild.cSuccessNone0.051013s0.115831s
Success
waitpid_syscall.cSuccessNone1.051163s1.164369s
Success
waitpid_wnohang.cSuccessNone0.051707s0.118741s
Success
Signal Tests
alarm.cSuccessNone7.051885s7.137730s
Success
eintr_fork_signal.cSuccessNone1.052938s1.130198s
Success
kill.cSuccessNone1.054060s1.118482s
Success
setitimer.cSuccessNone7.050220s7.140718s
Success
sigalrm.cSuccessNone2.051120s2.119259s
Success
sigaltstack.cSuccessNone0.052781s0.120554s
Success
sigchld.cSuccessNone1.051600s1.117839s
Success
signal-fork.cSuccessNone4.052918s4.114589s
Success
signal-simple.cSuccessNone0.052098s0.110689s
Success
signal_SIGCHLD.cSuccessNone0.049508s0.120947s
Success
signal_fork.cSuccessNone0.048247s0.120223s
Success
signal_int_ignored.cSuccessNone2.050825s2.116263s
Success
signal_kill_cleanup.cSuccessNone1.050778s1.111403s
Success
signal_procmask.cSuccessNone0.045932s0.108386s
Success
signal_read_interrupt.cSuccessNone0.554286s0.624156s
Success
signal_recursive.cSuccessNone0.045404s0.110741s
Success
signal_sa_mask.cSuccessNone0.044745s0.102559s
Success
signal_select_interrupt.cSuccessNone0.555119s0.627281s
Success
signal_write_interrupt.cSuccessNone1.053657s1.125279s
Success
sigpipe.cSuccessNone1.053850s1.125544s
Success
sigprocmask.cSuccessNone1.050879s1.112832s
Success
Fail Tests

Summary

MetricCount
Total Test Cases4
Number of Successes4
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Dylink Tests
dlerror.cSuccessNone0.042208s0.097797s
Success
Memory Tests
mmap-negative1.cSuccessNone0.128904s0.101497s
Success
mmap-negative2.cSuccessNone0.111692s0.121197s
Success
Signal Tests
signal_resethand.cSuccessNone1.049917s1.111702s
Success

C++ harness

Summary

MetricValue
Total1
Success1
Failures0
Compile failures0
Runtime failures0
Output mismatch0
Timeouts0

Cases

TestStatusError typeNative timeWasm timeOutput
tests/unit-tests/cpp/sort.cppSuccess0.608812s10.189381s
LIBCPP_SORT_OK 1 2 3

@github-actions

Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

grate harness

Grate Test Report

MetricValue
Total15
Success15
Failures0
Compile Failures0
Runtime Failures0
Timeout Failures0
Missing Pair Failures0

Cases

TestStatusError TypeOutput
concurrent-request/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] PASS

STDERR:
[popen-trace|3i hashmap register] self=1 syscall=33 handler_cage=777777 before=0 after=1 fn=0x5641552ff820
[popen-trace|rawposix fork_syscall] parent=1 flags=0x0 isthread_by_clone_vm=false
[popen-trace|3i hashmap copy_impl] source=1 target=2 src_calls=116 src_dup2_size=1 dst_dup2_before=0 dst_dup2_after=1
[popen-trace|3i copy_handler_table] source=1 target=2 ret=0 feature_hashmap=true feature_dashmap=false
[popen-trace|rawposix fork_syscall] copied handlers parent=1 child=2 ret=0
[popen-trace|3i hashmap rm_grate] grate=2 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=2 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=107 before=1 after=0
[popen-trace|3i hashmap rm_grate] grate=1 self=1 syscall=33 before=1 after=1

concurrent-request/race-test_grate.cSuccess
STDOUT:
pass

STDERR:
[popen-trace|3i hashmap register] self=1 syscall=33 handler_cage=777777 before=0 after=1 fn=0x5564a0606820
[popen-trace|rawposix fork_syscall] parent=1 flags=0x0 isthread_by_clone_vm=false
[popen-trace|3i hashmap copy_impl] source=1 target=2 src_calls=116 src_dup2_size=1 dst_dup2_before=0 dst_dup2_after=1
[popen-trace|3i copy_handler_table] source=1 target=2 ret=0 feature_hashmap=true feature_dashmap=false
[popen-trace|rawposix fork_syscall] copied handlers parent=1 child=2 ret=0
[popen-trace|rawposix fork_syscall] parent=2 flags=0x0 isthread_by_clone_vm=false
[popen-trace|3i hashmap copy_impl] source=2 target=3 src_calls=116 src_dup2_size=1 dst_dup2_before=0 dst_dup2_after=1
[popen-trace|3i copy_handler_table] source=2 target=3 ret=0 feature_hashmap=true feature_dashmap=false
[popen-trace|rawposix fork_syscall] copied handlers parent=2 child=3 ret=0
[popen-trace|rawposix fork_syscall] parent=2 flags=0x0 isthread_by_clone_vm=false
[popen-trace|3i hashmap copy_impl] source=2 target=4 src_calls=116 src_dup2_size=1 dst_dup2_before=0 dst_dup2_after=1
[popen-trace|3i copy_handler_table] source=2 target=4 ret=0 feature_hashmap=true feature_dashmap=false
[popen-trace|rawposix fork_syscall] copied handlers parent=2 child=4 ret=0
[popen-trace|rawposix fork_syscall] parent=3 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=3 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=3 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=4 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=2 flags=0x0 isthread_by_clone_vm=false
[popen-trace|3i hashmap copy_impl] source=2 target=5 src_calls=116 src_dup2_size=1 dst_dup2_before=0 dst_dup2_after=1
[popen-trace|3i copy_handler_table] source=2 target=5 ret=0 feature_hashmap=true feature_dashmap=false
[popen-trace|rawposix fork_syscall] copied handlers parent=2 child=5 ret=0
[popen-trace|rawposix fork_syscall] parent=3 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=4 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=4 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=3 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=4 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=4 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=3 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=3 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=4 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=2 flags=0x0 isthread_by_clone_vm=false
[popen-trace|3i hashmap copy_impl] source=2 target=6 src_calls=116 src_dup2_size=1 dst_dup2_before=0 dst_dup2_after=1
[popen-trace|3i copy_handler_table] source=2 target=6 ret=0 feature_hashmap=true feature_dashmap=false
[popen-trace|rawposix fork_syscall] copied handlers parent=2 child=6 ret=0
[popen-trace|rawposix fork_syscall] parent=4 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=3 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=5 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=6 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=3 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=2 flags=0x0 isthread_by_clone_vm=false
[popen-trace|3i hashmap copy_impl] source=2 target=7 src_calls=116 src_dup2_size=1 dst_dup2_before=0 dst_dup2_after=1
[popen-trace|3i copy_handler_table] source=2 target=7 ret=0 feature_hashmap=true feature_dashmap=false
[popen-trace|rawposix fork_syscall] copied handlers parent=2 child=7 ret=0
[popen-trace|rawposix fork_syscall] parent=4 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=6 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=4 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=6 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=4 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=5 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=6 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=5 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=3 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=6 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=5 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|3i hashmap rm_grate] grate=4 self=4 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=4 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=4 self=7 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=4 self=5 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=4 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=4 self=6 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=4 self=3 syscall=33 before=1 after=1
[popen-trace|rawposix fork_syscall] parent=6 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=6 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=5 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=6 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=7 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=6 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=5 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|3i hashmap rm_grate] grate=3 self=4 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=3 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=3 self=7 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=3 self=5 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=3 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=3 self=6 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=3 self=3 syscall=33 before=1 after=1
[popen-trace|rawposix fork_syscall] parent=6 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=7 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=7 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=5 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=5 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=5 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=5 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=7 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=7 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|3i hashmap rm_grate] grate=6 self=4 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=6 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=6 self=7 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=6 self=5 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=6 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=6 self=6 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=6 self=3 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=5 self=4 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=5 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=5 self=7 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=5 self=5 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=5 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=5 self=6 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=5 self=3 syscall=33 before=1 after=1
[popen-trace|rawposix fork_syscall] parent=7 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=7 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=7 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=7 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=7 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|3i hashmap rm_grate] grate=7 self=4 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=7 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=7 self=7 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=7 self=5 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=7 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=7 self=6 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=7 self=3 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=2 self=4 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=2 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=2 self=7 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=2 self=5 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=2 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=2 self=6 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=2 self=3 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=4 syscall=202 before=1 after=0
[popen-trace|3i hashmap rm_grate] grate=1 self=4 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=4 syscall=9 before=1 after=0
[popen-trace|3i hashmap rm_grate] grate=1 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=7 syscall=9 before=1 after=0
[popen-trace|3i hashmap rm_grate] grate=1 self=7 syscall=202 before=1 after=0
[popen-trace|3i hashmap rm_grate] grate=1 self=7 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=5 syscall=9 before=1 after=0
[popen-trace|3i hashmap rm_grate] grate=1 self=5 syscall=202 before=1 after=0
[popen-trace|3i hashmap rm_grate] grate=1 self=5 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=9 before=1 after=0
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=202 before=1 after=0
[popen-trace|3i hashmap rm_grate] grate=1 self=6 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=6 syscall=9 before=1 after=0
[popen-trace|3i hashmap rm_grate] grate=1 self=6 syscall=202 before=1 after=0
[popen-trace|3i hashmap rm_grate] grate=1 self=3 syscall=202 before=1 after=0
[popen-trace|3i hashmap rm_grate] grate=1 self=3 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=3 syscall=9 before=1 after=0

concurrent-request/thread_race_grate.cSuccess
STDOUT:
[thread_race] Registering handler for cage 2 in grate 1 with fn ptr addr: 3
[thread_race] PASS: 20 threads x 100000 calls returned 10
[thread_race] PASS

STDERR:
[popen-trace|3i hashmap register] self=1 syscall=33 handler_cage=777777 before=0 after=1 fn=0x55be25a39820
[popen-trace|rawposix fork_syscall] parent=1 flags=0x0 isthread_by_clone_vm=false
[popen-trace|3i hashmap copy_impl] source=1 target=2 src_calls=116 src_dup2_size=1 dst_dup2_before=0 dst_dup2_after=1
[popen-trace|3i copy_handler_table] source=1 target=2 ret=0 feature_hashmap=true feature_dashmap=false
[popen-trace|rawposix fork_syscall] copied handlers parent=1 child=2 ret=0
[popen-trace|rawposix fork_syscall] parent=2 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=2 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=2 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=2 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=2 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=2 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=2 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=2 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=2 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=2 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=2 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=2 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=2 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=2 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=2 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=2 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=2 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=2 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=2 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|rawposix fork_syscall] parent=2 flags=0x3d0f00 isthread_by_clone_vm=true
[popen-trace|3i hashmap rm_grate] grate=2 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=2 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=107 before=1 after=0
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=33 before=1 after=1

copy-data-between-cages/cp-stncpy_grate.cSuccess
STDOUT:
[cage] pathname addr=0xfffb6ff9
[cage] pathname='random'
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:
[popen-trace|3i hashmap register] self=1 syscall=33 handler_cage=777777 before=0 after=1 fn=0x5606fc5ae820
[popen-trace|rawposix fork_syscall] parent=1 flags=0x0 isthread_by_clone_vm=false
[popen-trace|3i hashmap copy_impl] source=1 target=2 src_calls=116 src_dup2_size=1 dst_dup2_before=0 dst_dup2_after=1
[popen-trace|3i copy_handler_table] source=1 target=2 ret=0 feature_hashmap=true feature_dashmap=false
[popen-trace|rawposix fork_syscall] copied handlers parent=1 child=2 ret=0
[popen-trace|3i hashmap rm_grate] grate=2 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=2 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=2 before=1 after=0
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=33 before=1 after=1

copy-data-between-cages/cpdata_grate.cSuccess
STDOUT:
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:
[popen-trace|3i hashmap register] self=1 syscall=33 handler_cage=777777 before=0 after=1 fn=0x55c266788820
[popen-trace|rawposix fork_syscall] parent=1 flags=0x0 isthread_by_clone_vm=false
[popen-trace|3i hashmap copy_impl] source=1 target=2 src_calls=116 src_dup2_size=1 dst_dup2_before=0 dst_dup2_after=1
[popen-trace|3i copy_handler_table] source=1 target=2 ret=0 feature_hashmap=true feature_dashmap=false
[popen-trace|rawposix fork_syscall] copied handlers parent=1 child=2 ret=0
[popen-trace|3i hashmap rm_grate] grate=2 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=2 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=2 before=1 after=0
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=33 before=1 after=1

interposing-calls/fork-with-newret_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Cage] Forked process with PID: 10
[Grate|interpose-fork] PASS

STDERR:
[popen-trace|3i hashmap register] self=1 syscall=33 handler_cage=777777 before=0 after=1 fn=0x55f330ee5820
[popen-trace|rawposix fork_syscall] parent=1 flags=0x0 isthread_by_clone_vm=false
[popen-trace|3i hashmap copy_impl] source=1 target=2 src_calls=116 src_dup2_size=1 dst_dup2_before=0 dst_dup2_after=1
[popen-trace|3i copy_handler_table] source=1 target=2 ret=0 feature_hashmap=true feature_dashmap=false
[popen-trace|rawposix fork_syscall] copied handlers parent=1 child=2 ret=0
[popen-trace|rawposix fork_syscall] parent=2 flags=0x0 isthread_by_clone_vm=false
[popen-trace|3i hashmap copy_impl] source=2 target=3 src_calls=116 src_dup2_size=1 dst_dup2_before=0 dst_dup2_after=1
[popen-trace|3i copy_handler_table] source=2 target=3 ret=0 feature_hashmap=true feature_dashmap=false
[popen-trace|rawposix fork_syscall] copied handlers parent=2 child=3 ret=0
[popen-trace|3i hashmap rm_grate] grate=3 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=3 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=3 self=3 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=2 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=2 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=2 self=3 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=56 before=1 after=0
[popen-trace|3i hashmap rm_grate] grate=1 self=3 syscall=56 before=1 after=0
[popen-trace|3i hashmap rm_grate] grate=1 self=3 syscall=33 before=1 after=1

interposing-calls/interpose-exec_grate.cSuccess
STDOUT:
[Grate|interpose-exec] Registering exec handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
Exec successful, argv[1]: --execd
[Grate|interpose-exec] PASS

STDERR:
[popen-trace|3i hashmap register] self=1 syscall=33 handler_cage=777777 before=0 after=1 fn=0x55ce9fe74820
[popen-trace|rawposix fork_syscall] parent=1 flags=0x0 isthread_by_clone_vm=false
[popen-trace|3i hashmap copy_impl] source=1 target=2 src_calls=116 src_dup2_size=1 dst_dup2_before=0 dst_dup2_after=1
[popen-trace|3i copy_handler_table] source=1 target=2 ret=0 feature_hashmap=true feature_dashmap=false
[popen-trace|rawposix fork_syscall] copied handlers parent=1 child=2 ret=0
[popen-trace|3i hashmap rm_grate] grate=2 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=2 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=59 before=1 after=0
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=33 before=1 after=1

interposing-calls/interpose-exit_grate.cSuccess
STDOUT:
[Grate|interpose-exit] Registering exit handler for cage 2 in grate 1 with fn ptr addr: 3
Exiting...

[Grate|interpose-exit] PASS

STDERR:
[popen-trace|3i hashmap register] self=1 syscall=33 handler_cage=777777 before=0 after=1 fn=0x559c43c3d820
[popen-trace|rawposix fork_syscall] parent=1 flags=0x0 isthread_by_clone_vm=false
[popen-trace|3i hashmap copy_impl] source=1 target=2 src_calls=116 src_dup2_size=1 dst_dup2_before=0 dst_dup2_after=1
[popen-trace|3i copy_handler_table] source=1 target=2 ret=0 feature_hashmap=true feature_dashmap=false
[popen-trace|rawposix fork_syscall] copied handlers parent=1 child=2 ret=0
[popen-trace|3i hashmap rm_grate] grate=2 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=2 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=60 before=1 after=0
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=33 before=1 after=1

interposing-calls/interpose-fork_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Grate|interpose-fork] PASS

STDERR:
[popen-trace|3i hashmap register] self=1 syscall=33 handler_cage=777777 before=0 after=1 fn=0x55abac1ef820
[popen-trace|rawposix fork_syscall] parent=1 flags=0x0 isthread_by_clone_vm=false
[popen-trace|3i hashmap copy_impl] source=1 target=2 src_calls=116 src_dup2_size=1 dst_dup2_before=0 dst_dup2_after=1
[popen-trace|3i copy_handler_table] source=1 target=2 ret=0 feature_hashmap=true feature_dashmap=false
[popen-trace|rawposix fork_syscall] copied handlers parent=1 child=2 ret=0
[popen-trace|rawposix fork_syscall] parent=2 flags=0x0 isthread_by_clone_vm=false
[popen-trace|3i hashmap copy_impl] source=2 target=3 src_calls=116 src_dup2_size=1 dst_dup2_before=0 dst_dup2_after=1
[popen-trace|3i copy_handler_table] source=2 target=3 ret=0 feature_hashmap=true feature_dashmap=false
[popen-trace|rawposix fork_syscall] copied handlers parent=2 child=3 ret=0
[popen-trace|3i hashmap rm_grate] grate=3 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=3 self=3 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=3 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=2 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=2 self=3 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=2 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=56 before=1 after=0
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=3 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=3 syscall=56 before=1 after=0
[popen-trace|3i hashmap rm_grate] grate=1 self=1 syscall=33 before=1 after=1

interposing-calls/interpose-mmap_grate.cSuccess
STDOUT:
[Grate|interpose-mmap] Registering mmap handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
mmap test: PASS
[Grate|interpose-mmap] PASS

STDERR:
[popen-trace|3i hashmap register] self=1 syscall=33 handler_cage=777777 before=0 after=1 fn=0x55f71f6db820
[popen-trace|rawposix fork_syscall] parent=1 flags=0x0 isthread_by_clone_vm=false
[popen-trace|3i hashmap copy_impl] source=1 target=2 src_calls=116 src_dup2_size=1 dst_dup2_before=0 dst_dup2_after=1
[popen-trace|3i copy_handler_table] source=1 target=2 ret=0 feature_hashmap=true feature_dashmap=false
[popen-trace|rawposix fork_syscall] copied handlers parent=1 child=2 ret=0
[popen-trace|3i hashmap rm_grate] grate=2 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=2 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=9 before=1 after=0

interposing-calls/interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 4
[cage] registering 107. grateid: 2 cageid: 3
[Grate|interpose-register] Handling function ptr: 4 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|geteuid] Registering geteuid handler for cage 1 in grate 1 with fn ptr addr: 3
[Grate|interpose-register] Handling function ptr: 3 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|interpose-register] PASS

STDERR:
[popen-trace|3i hashmap register] self=1 syscall=33 handler_cage=777777 before=0 after=1 fn=0x55f7639bb820
[popen-trace|rawposix fork_syscall] parent=1 flags=0x0 isthread_by_clone_vm=false
[popen-trace|3i hashmap copy_impl] source=1 target=2 src_calls=116 src_dup2_size=1 dst_dup2_before=0 dst_dup2_after=1
[popen-trace|3i copy_handler_table] source=1 target=2 ret=0 feature_hashmap=true feature_dashmap=false
[popen-trace|rawposix fork_syscall] copied handlers parent=1 child=2 ret=0
[popen-trace|rawposix fork_syscall] parent=2 flags=0x0 isthread_by_clone_vm=false
[popen-trace|3i hashmap copy_impl] source=2 target=3 src_calls=116 src_dup2_size=1 dst_dup2_before=0 dst_dup2_after=1
[popen-trace|3i copy_handler_table] source=2 target=3 ret=0 feature_hashmap=true feature_dashmap=false
[popen-trace|rawposix fork_syscall] copied handlers parent=2 child=3 ret=0
[popen-trace|3i hashmap rm_grate] grate=3 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=3 self=3 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=3 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=2 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=2 self=3 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=2 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=3 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=3 syscall=1001 before=1 after=0
[popen-trace|3i hashmap rm_grate] grate=1 self=3 syscall=107 before=1 after=0
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=1001 before=1 after=0
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=33 before=1 after=1

multi-register_grate.cSuccess
STDOUT:
[Grate|multi-register_grate] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 4
[Grate|multi-register_grate] Registering getuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|multi-register_grate] Handling function ptr: 4 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Grate|multi-register_grate] Handling function ptr: 3 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Cage | multi-register] PASS: geteuid=10, getuid=20
[Grate|multi-register] PASS

STDERR:
[popen-trace|3i hashmap register] self=1 syscall=33 handler_cage=777777 before=0 after=1 fn=0x5649d144e820
[popen-trace|rawposix fork_syscall] parent=1 flags=0x0 isthread_by_clone_vm=false
[popen-trace|3i hashmap copy_impl] source=1 target=2 src_calls=116 src_dup2_size=1 dst_dup2_before=0 dst_dup2_after=1
[popen-trace|3i copy_handler_table] source=1 target=2 ret=0 feature_hashmap=true feature_dashmap=false
[popen-trace|rawposix fork_syscall] copied handlers parent=1 child=2 ret=0
[popen-trace|3i hashmap rm_grate] grate=2 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=2 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=102 before=1 after=0
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=107 before=1 after=0

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 3 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 4 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:
[popen-trace|3i hashmap register] self=1 syscall=33 handler_cage=777777 before=0 after=1 fn=0x55919490f820
[popen-trace|rawposix fork_syscall] parent=1 flags=0x0 isthread_by_clone_vm=false
[popen-trace|3i hashmap copy_impl] source=1 target=2 src_calls=116 src_dup2_size=1 dst_dup2_before=0 dst_dup2_after=1
[popen-trace|3i copy_handler_table] source=1 target=2 ret=0 feature_hashmap=true feature_dashmap=false
[popen-trace|rawposix fork_syscall] copied handlers parent=1 child=2 ret=0
[popen-trace|3i hashmap rm_grate] grate=2 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=2 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=0 before=1 after=0
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=2 before=1 after=0
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=1 syscall=33 before=1 after=1

simple-tests/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|geteuid] Handling function ptr: 3 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:
[popen-trace|3i hashmap register] self=1 syscall=33 handler_cage=777777 before=0 after=1 fn=0x55da1b340820
[popen-trace|rawposix fork_syscall] parent=1 flags=0x0 isthread_by_clone_vm=false
[popen-trace|3i hashmap copy_impl] source=1 target=2 src_calls=116 src_dup2_size=1 dst_dup2_before=0 dst_dup2_after=1
[popen-trace|3i copy_handler_table] source=1 target=2 ret=0 feature_hashmap=true feature_dashmap=false
[popen-trace|rawposix fork_syscall] copied handlers parent=1 child=2 ret=0
[popen-trace|3i hashmap rm_grate] grate=2 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=2 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=107 before=1 after=0

simple-tests/mmap-flag_grate.cSuccess
STDOUT:
[Cage|mmap-flag] PASS
[Grate|mmap-flag] PASS

STDERR:
[popen-trace|3i hashmap register] self=1 syscall=33 handler_cage=777777 before=0 after=1 fn=0x5626d50b4820
[popen-trace|rawposix fork_syscall] parent=1 flags=0x0 isthread_by_clone_vm=false
[popen-trace|3i hashmap copy_impl] source=1 target=2 src_calls=116 src_dup2_size=1 dst_dup2_before=0 dst_dup2_after=1
[popen-trace|3i copy_handler_table] source=1 target=2 ret=0 feature_hashmap=true feature_dashmap=false
[popen-trace|rawposix fork_syscall] copied handlers parent=1 child=2 ret=0
[popen-trace|3i hashmap rm_grate] grate=2 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=2 self=1 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=9 before=1 after=0
[popen-trace|3i hashmap rm_grate] grate=1 self=2 syscall=33 before=1 after=1
[popen-trace|3i hashmap rm_grate] grate=1 self=1 syscall=33 before=1 after=1

static harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases3
Number of Successes3
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Static Tests
fork_simple.cSuccessNone0.057876s4.518104s
Success
thread.cSuccessNone0.053196s4.563509s
Success
tls_test.cSuccessNone0.062571s4.616880s
Success
Fail Tests

Summary

MetricCount
Total Test Cases0
Number of Successes0
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases220
Number of Successes220
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
File Tests
chartests.cSuccessNone0.049678s0.142921s
Success
chdir_getcwd.cSuccessNone0.051543s0.113631s
Success
chmod.cSuccessNone0.055209s0.121967s
Success
clock_gettime_highlevel.cSuccessNone0.122782s0.169240s
Success
clock_gettime_simple.cSuccessNone0.044982s0.102420s
Success
cloexec.cSuccessNone0.056135s0.132014s
Success
close.cSuccessNone0.063291s0.137405s
Success
creat_access.cSuccessNone0.054591s0.117835s
Success
doubleclose.cSuccessNone0.047250s0.100194s
Success
dup.cSuccessNone0.048391s0.117589s
Success
dup2.cSuccessNone0.052550s0.115459s
Success
dup3.cSuccessNone0.052424s0.117439s
Success
dupwrite.cSuccessNone0.056448s0.118130s
Success
etc_conf.cSuccessNone0.048350s0.115824s
Success
faccessat.cSuccessNone0.050345s0.117477s
Success
fchdir.cSuccessNone0.054884s0.124365s
Success
fchmod.cSuccessNone0.054777s0.123002s
Success
fchmodat.cSuccessNone0.050957s0.116875s
Success
fcntl.cSuccessNone0.052973s0.128620s
Success
fcntl_dupfd.cSuccessNone0.046894s0.108610s
Success
fdatasync.cSuccessNone0.052488s0.108661s
Success
filetest.cSuccessNone0.053462s0.111643s
Success
filetest1000.cSuccessNone0.063167s0.127697s
Success
flock.cSuccessNone0.063134s0.153833s
Success
fstat.cSuccessNone0.054664s0.124546s
Success
fstatfs.cSuccessNone0.049583s0.108118s
Success
fsync.cSuccessNone0.054504s0.111358s
Success
ftruncate.cSuccessNone0.057699s0.211792s
Success
getcwd.cSuccessNone0.049454s0.104709s
Success
getcwd_null.cSuccessNone0.053058s0.117368s
Success
getpgid.cSuccessNone0.047542s0.101532s
Success
getrandom.cSuccessNone0.053895s0.127434s
Success
ioctl.cSuccessNone0.054735s0.116684s
Success
link.cSuccessNone0.058271s0.157589s
Success
locale_test.cSuccessNone0.066241s0.315882s
Success
lseek.cSuccessNone0.058176s0.190512s
Success
lstat.cSuccessNone0.059012s0.138030s
Success
mkdir_rmdir.cSuccessNone0.053461s0.115119s
Success
mkfifo_test.cSuccessNone0.057886s0.155428s
Success
mknod.cSuccessNone0.053972s0.126773s
Success
nocancel_io.cSuccessNone0.056619s0.137721s
Success
open.cSuccessNone0.050981s0.107579s
Success
openat.cSuccessNone0.049757s0.112557s
Success
path_conversion_safety.cSuccessNone0.058700s0.137072s
Success
ppoll.cSuccessNone0.057004s0.125499s
Success
pread_pwrite.cSuccessNone0.052279s0.121539s
Success
preadv_pwritev.cSuccessNone0.056058s0.132534s
Success
printf.cSuccessNone0.046886s0.101848s
Success
prlimit64.cSuccessNone0.046540s0.104071s
Success
read.cSuccessNone0.054085s0.126378s
Success
readbytes.cSuccessNone0.050161s0.108054s
Success
readdir_basic.cSuccessNone0.057483s0.146657s
Success
readlink.cSuccessNone0.053206s0.119587s
Success
readlinkat.cSuccessNone0.053979s0.123866s
Success
readv_writev_test.cSuccessNone0.056269s0.129204s
Success
rename.cSuccessNone0.054625s0.115434s
Success
renameat.cSuccessNone0.055296s0.128349s
Success
sc-writev.cSuccessNone0.065987s0.129619s
Success
stat.cSuccessNone0.053952s0.122689s
Success
statfs.cSuccessNone0.047832s0.104808s
Success
symlink.cSuccessNone0.055292s0.144763s
Success
sync_file_range.cSuccessNone0.051485s0.109867s
Success
timespec_time_t_compat.cSuccessNone0.050386s0.105832s
Success
trailing_slash.cSuccessNone0.052988s0.120279s
Success
truncate.cSuccessNone0.054439s0.133253s
Success
unlink.cSuccessNone0.057868s0.152336s
Success
unlinkat.cSuccessNone0.054547s0.133983s
Success
utimensat.cSuccessNone0.052502s0.134083s
Success
write.cSuccessNone0.049475s0.102066s
Success
writeloop.cSuccessNone0.054744s0.114481s
Success
writepartial.cSuccessNone0.053204s0.107209s
Success
writev.cSuccessNone0.053556s0.119996s
Success
Math Tests
math_link_smoke.cSuccessNone0.057814s0.105537s
Success
math_tests.cSuccessNone0.060386s0.134398s
Success
printf_float.cSuccessNone0.057941s0.130504s
Success
Memory Tests
brk.cSuccessNone0.050919s0.110069s
Success
fork_large_memory.cSuccessNone0.082444s0.371977s
Success
malloc.cSuccessNone0.049052s0.099612s
Success
malloc_large.cSuccessNone0.049309s0.100745s
Success
memcpy.cSuccessNone0.048804s0.102450s
Success
memory_error_test.cSuccessNone0.055571s0.132028s
Success
mmap.cSuccessNone0.046197s0.101131s
Success
mmap_aligned.cSuccessNone0.048471s0.116683s
Success
mmap_complicated.cSuccessNone0.053558s0.126254s
Success
mmap_file.cSuccessNone0.054010s0.114525s
Success
mmap_shared.cSuccessNone0.052160s0.121311s
Success
mmaptest.cSuccessNone0.049131s0.106745s
Success
mprotect.cSuccessNone0.047886s0.103751s
Success
mprotect_boundary.cSuccessNone0.048641s0.113434s
Success
mprotect_end_region.cSuccessNone0.047052s0.108265s
Success
mprotect_middle_region.cSuccessNone0.047342s0.110898s
Success
mprotect_multiple_times.cSuccessNone0.047248s0.107875s
Success
mprotect_same_value.cSuccessNone0.046904s0.105726s
Success
mprotect_spanning_regions.cSuccessNone0.047642s0.123900s
Success
munmap_adjacent_shm.cSuccessNone0.050234s0.122618s
Success
sbrk.cSuccessNone0.048761s0.104946s
Success
segfault.cSuccessNone0.053641s0.134976s
Success
shm.cSuccessNone0.052745s0.126761s
Success
shmtest.cSuccessNone0.048364s0.109634s
Success
thread_malloc_sequential.cSuccessNone0.054689s0.152832s
Success
vtable.cSuccessNone0.057820s0.119706s
Success
Networking Tests
accept4.cSuccessNone0.059036s0.130747s
Success
dns_resolve_test.cSuccessNone0.053029s0.116904s
Success
dnstest.cSuccessNone0.055180s0.121618s
Success
epoll_badfd.cSuccessNone0.049636s0.105562s
Success
epoll_edge_triggered.cSuccessNone0.212195s0.379147s
Success
epollcreate1.cSuccessNone0.054500s0.126912s
Success
error_handling_net.cSuccessNone0.062253s0.190632s
Success
getaddrinfo_test.cSuccessNone0.058234s0.154038s
Success
getaddrinfo_unspec.cSuccessNone0.059262s0.122804s
Success
gethostname.cSuccessNone0.050110s0.104718s
Success
getifaddrs.cSuccessNone0.055417s0.119207s
Success
getsockname.cSuccessNone0.059377s0.122571s
Success
getsockopt.cSuccessNone0.058544s0.157064s
Success
ipv6_basic.cSuccessNone0.057246s0.151595s
Success
makepipe.cSuccessNone0.048115s0.104025s
Success
nonblocking_eagain.cSuccessNone0.058259s0.160849s
Success
pipe.cSuccessNone0.057832s0.127287s
Success
pipe2.cSuccessNone0.057134s0.117560s
Success
pipeinput.cSuccessNone0.057549s0.143455s
Success
pipeinput2.cSuccessNone0.058220s0.148885s
Success
pipeonestring.cSuccessNone0.057027s0.143790s
Success
pipepong.cSuccessNone0.055191s0.145327s
Success
pipewrite.cSuccessNone0.050736s0.114985s
Success
poll.cSuccessNone0.053898s0.112231s
Success
recvfrom-sendto.cSuccessNone0.055740s0.127678s
Success
sendmsg_recvmsg_test.cSuccessNone0.057901s0.131830s
Success
serverclient.cSuccessNone0.054577s0.130006s
Success
shutdown.cSuccessNone0.056346s0.126838s
Success
shutdown_fork.cSuccessNone0.055790s0.131356s
Success
simple-select.cSuccessNone0.057945s0.145325s
Success
simple_epoll.cSuccessNone0.054801s0.122278s
Success
socket.cSuccessNone0.056337s0.115879s
Success
socket_cloexec.cSuccessNone0.053858s0.111157s
Success
socket_options_advanced.cSuccessNone0.059307s0.170245s
Success
socketepoll.cSuccessNone0.055670s0.120183s
Success
socketpair.cSuccessNone0.052694s0.125099s
Success
socketselect.cSuccessNone0.053716s0.120632s
Success
udp_send_recv.cSuccessNone0.160562s0.265787s
Success
uds-getsockname.cSuccessNone0.054483s0.114021s
Success
uds-nb-select.cSuccessNone2.064643s2.173758s
Success
uds-serverclient.cSuccessNone0.057777s0.148564s
Success
uds-socketselect.cSuccessNone0.055798s0.126413s
Success
uds_listen_poll.cSuccessNone1.061172s1.159666s
Success
writev_socket.cSuccessNone0.057165s0.153274s
Success
Process Tests
barrier_test.cSuccessNone0.055573s0.127953s
Success
chain_thread.cSuccessNone1.059905s1.146664s
Success
ctor_syscall_test.cSuccessNone0.057553s0.153836s
Success
cxa_atexit_test.cSuccessNone0.053072s0.113657s
Success
exec_non_utf8.cSuccessNone0.053660s0.123545s
Success
execve_shebang.cSuccessNone0.056119s0.116045s
Success
exit.cSuccessNone0.056874s0.114730s
Success
exit_failure.cSuccessNone0.057074s0.126877s
Success
exit_group_thread.cSuccessNone0.057946s0.137851s
Success
exit_status_first_wins.cSuccessNone0.059558s0.142939s
Success
flockfile_test.cSuccessNone0.058019s0.142262s
Success
fork2malloc.cSuccessNone0.058508s0.132339s
Success
fork_select.cSuccessNone0.054080s0.132488s
Success
fork_simple.cSuccessNone0.054425s0.122834s
Success
fork_syscall.cSuccessNone0.060979s0.368435s
Success
fork_tls_ctype.cSuccessNone0.061003s0.150302s
Success
forkandopen.cSuccessNone0.057964s0.140742s
Success
forkdup.cSuccessNone0.060419s0.132062s
Success
forkexecuid.cSuccessNone0.054300s0.140678s
Success
forkexecv-arg.cSuccessNone0.056106s0.132423s
Success
forkexecv.cSuccessNone0.052811s0.125463s
Success
forkfiles.cSuccessNone0.056033s0.129519s
Success
forkmalloc.cSuccessNone0.057922s0.125785s
Success
forknodup.cSuccessNone0.057890s0.140208s
Success
function-ptr.cSuccessNone0.052411s0.114934s
Success
getegid_syscall.cSuccessNone0.058295s0.284818s
Success
getgid_syscall.cSuccessNone0.058467s0.292414s
Success
getpid.cSuccessNone0.049223s0.103463s
Success
getpid_syscall.cSuccessNone0.096202s0.302367s
Success
getppid.cSuccessNone0.058862s0.126010s
Success
getppid_syscall.cSuccessNone0.059650s0.256027s
Success
getuid.cSuccessNone0.054660s0.112781s
Success
getuid_syscall.cSuccessNone0.056768s0.187663s
Success
hello-arg.cSuccessNone0.048555s0.109864s
Success
hello.cSuccessNone0.049794s0.106789s
Success
longjmp.cSuccessNone0.048015s0.117276s
Success
mutex.cSuccessNone2.060698s2.133326s
Success
printf_deadlock_smoke.cSuccessNone0.062942s0.153634s
Success
printf_thread_test.cSuccessNone0.055486s0.135568s
Success
sem_forks.cSuccessNone0.059835s0.145819s
Success
setsid.cSuccessNone0.051441s0.112204s
Success
template.cSuccessNone0.061585s0.164769s
Success
test_exec_nofork.cSuccessNone0.055821s0.128788s
Success
test_unlink_open_file.cSuccessNone0.054148s0.114594s
Success
thread-guard.cSuccessNone0.053068s0.125869s
Success
thread-test.cSuccessNone0.052908s0.125269s
Success
thread.cSuccessNone0.054121s0.120877s
Success
thread_cageid_race.cSuccessNone0.053095s0.169935s
Success
tls_test.cSuccessNone0.056598s0.138557s
Success
uname.cSuccessNone0.050718s0.112206s
Success
wait.cSuccessNone0.054919s0.134660s
Success
waitpid_anychild.cSuccessNone0.059435s0.132873s
Success
waitpid_syscall.cSuccessNone1.057881s1.177717s
Success
waitpid_wnohang.cSuccessNone0.059564s0.138612s
Success
Signal Tests
alarm.cSuccessNone7.053799s7.146846s
Success
eintr_fork_signal.cSuccessNone1.055249s1.139121s
Success
kill.cSuccessNone1.053110s1.123851s
Success
setitimer.cSuccessNone7.053402s7.148578s
Success
sigalrm.cSuccessNone2.054137s2.129024s
Success
sigaltstack.cSuccessNone0.055755s0.123636s
Success
sigchld.cSuccessNone1.055277s1.122085s
Success
signal-fork.cSuccessNone4.055132s4.121796s
Success
signal-simple.cSuccessNone0.054545s0.113695s
Success
signal_SIGCHLD.cSuccessNone0.052064s0.125824s
Success
signal_fork.cSuccessNone0.050306s0.125212s
Success
signal_int_ignored.cSuccessNone2.054236s2.123419s
Success
signal_kill_cleanup.cSuccessNone1.052043s1.119560s
Success
signal_procmask.cSuccessNone0.049259s0.114159s
Success
signal_read_interrupt.cSuccessNone0.557061s0.630964s
Success
signal_recursive.cSuccessNone0.049532s0.116309s
Success
signal_sa_mask.cSuccessNone0.048546s0.110669s
Success
signal_select_interrupt.cSuccessNone0.557370s0.631645s
Success
signal_write_interrupt.cSuccessNone1.058027s1.133424s
Success
sigpipe.cSuccessNone1.055724s1.131106s
Success
sigprocmask.cSuccessNone1.052953s1.118109s
Success
Fail Tests

Summary

MetricCount
Total Test Cases4
Number of Successes4
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Dylink Tests
dlerror.cSuccessNone0.046615s0.117090s
Success
Memory Tests
mmap-negative1.cSuccessNone0.135160s0.110575s
Success
mmap-negative2.cSuccessNone0.114951s0.121692s
Success
Signal Tests
signal_resethand.cSuccessNone1.053561s1.120006s
Success

C++ harness

Summary

MetricValue
Total1
Success0
Failures1
Compile failures0
Runtime failures0
Output mismatch1
Timeouts0

Cases

TestStatusError typeNative timeWasm timeOutput
tests/unit-tests/cpp/sort.cppFailureOutput_mismatch0.417785s9.972167s
Native exit=0
Wasm exit=0

=== Native output ===
LIBCPP_SORT_OK 1 2 3

=== Wasm output ===
LIBCPP_SORT_OK 1 2 3

[popen-trace|3i hashmap register] self=1 syscall=33 handler_cage=777777 before=0 after=1 fn=0x558bcf11e820
[popen-trace|3i hashmap rm_grate] grate=1 self=1 syscall=33 before=1 after=1

@github-actions

Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

grate harness

Grate Test Report

MetricValue
Total15
Success15
Failures0
Compile Failures0
Runtime Failures0
Timeout Failures0
Missing Pair Failures0

Cases

TestStatusError TypeOutput
concurrent-request/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] PASS

STDERR:

concurrent-request/race-test_grate.cSuccess
STDOUT:
pass

STDERR:

concurrent-request/thread_race_grate.cSuccess
STDOUT:
[thread_race] Registering handler for cage 2 in grate 1 with fn ptr addr: 3
[thread_race] PASS: 20 threads x 100000 calls returned 10
[thread_race] PASS

STDERR:

copy-data-between-cages/cp-stncpy_grate.cSuccess
STDOUT:
[cage] pathname addr=0xfffb6ff9
[cage] pathname='random'
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

copy-data-between-cages/cpdata_grate.cSuccess
STDOUT:
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

interposing-calls/fork-with-newret_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Cage] Forked process with PID: 10
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-exec_grate.cSuccess
STDOUT:
[Grate|interpose-exec] Registering exec handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
Exec successful, argv[1]: --execd
[Grate|interpose-exec] PASS

STDERR:

interposing-calls/interpose-exit_grate.cSuccess
STDOUT:
[Grate|interpose-exit] Registering exit handler for cage 2 in grate 1 with fn ptr addr: 3
Exiting...

[Grate|interpose-exit] PASS

STDERR:

interposing-calls/interpose-fork_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-mmap_grate.cSuccess
STDOUT:
[Grate|interpose-mmap] Registering mmap handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
mmap test: PASS
[Grate|interpose-mmap] PASS

STDERR:

interposing-calls/interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 4
[cage] registering 107. grateid: 2 cageid: 3
[Grate|interpose-register] Handling function ptr: 4 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|geteuid] Registering geteuid handler for cage 1 in grate 1 with fn ptr addr: 3
[Grate|interpose-register] Handling function ptr: 3 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|interpose-register] PASS

STDERR:

multi-register_grate.cSuccess
STDOUT:
[Grate|multi-register_grate] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 4
[Grate|multi-register_grate] Registering getuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|multi-register_grate] Handling function ptr: 4 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Grate|multi-register_grate] Handling function ptr: 3 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Cage | multi-register] PASS: geteuid=10, getuid=20
[Grate|multi-register] PASS

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 3 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 4 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:

simple-tests/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|geteuid] Handling function ptr: 3 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

simple-tests/mmap-flag_grate.cSuccess
STDOUT:
[Cage|mmap-flag] PASS
[Grate|mmap-flag] PASS

STDERR:

static harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases3
Number of Successes3
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Static Tests
fork_simple.cSuccessNone0.056931s4.462098s
Success
thread.cSuccessNone0.050034s4.423082s
Success
tls_test.cSuccessNone0.059420s4.438264s
Success
Fail Tests

Summary

MetricCount
Total Test Cases0
Number of Successes0
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases220
Number of Successes220
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
File Tests
chartests.cSuccessNone0.050930s0.145581s
Success
chdir_getcwd.cSuccessNone0.051848s0.119469s
Success
chmod.cSuccessNone0.056775s0.126169s
Success
clock_gettime_highlevel.cSuccessNone0.123992s0.171564s
Success
clock_gettime_simple.cSuccessNone0.047342s0.108339s
Success
cloexec.cSuccessNone0.056020s0.131789s
Success
close.cSuccessNone0.064621s0.139595s
Success
creat_access.cSuccessNone0.054396s0.118308s
Success
doubleclose.cSuccessNone0.048083s0.103115s
Success
dup.cSuccessNone0.047783s0.115804s
Success
dup2.cSuccessNone0.054410s0.119129s
Success
dup3.cSuccessNone0.051350s0.118608s
Success
dupwrite.cSuccessNone0.054468s0.114171s
Success
etc_conf.cSuccessNone0.049356s0.117696s
Success
faccessat.cSuccessNone0.052483s0.122304s
Success
fchdir.cSuccessNone0.057095s0.128849s
Success
fchmod.cSuccessNone0.057341s0.127410s
Success
fchmodat.cSuccessNone0.052131s0.120242s
Success
fcntl.cSuccessNone0.053763s0.130544s
Success
fcntl_dupfd.cSuccessNone0.048118s0.111455s
Success
fdatasync.cSuccessNone0.055715s0.111615s
Success
filetest.cSuccessNone0.052957s0.110794s
Success
filetest1000.cSuccessNone0.063222s0.128405s
Success
flock.cSuccessNone0.062857s0.150577s
Success
fstat.cSuccessNone0.055866s0.127473s
Success
fstatfs.cSuccessNone0.051384s0.113628s
Success
fsync.cSuccessNone0.053411s0.115855s
Success
ftruncate.cSuccessNone0.057705s0.209825s
Success
getcwd.cSuccessNone0.050964s0.107517s
Success
getcwd_null.cSuccessNone0.054502s0.119850s
Success
getpgid.cSuccessNone0.048593s0.104701s
Success
getrandom.cSuccessNone0.054173s0.129668s
Success
ioctl.cSuccessNone0.057200s0.122033s
Success
link.cSuccessNone0.057549s0.158179s
Success
locale_test.cSuccessNone0.065231s0.319566s
Success
lseek.cSuccessNone0.057738s0.191888s
Success
lstat.cSuccessNone0.057121s0.134174s
Success
mkdir_rmdir.cSuccessNone0.054793s0.119421s
Success
mkfifo_test.cSuccessNone0.059841s0.157451s
Success
mknod.cSuccessNone0.055043s0.129330s
Success
nocancel_io.cSuccessNone0.059399s0.141607s
Success
open.cSuccessNone0.048937s0.106738s
Success
openat.cSuccessNone0.050753s0.114946s
Success
path_conversion_safety.cSuccessNone0.057026s0.136585s
Success
ppoll.cSuccessNone0.056659s0.124856s
Success
pread_pwrite.cSuccessNone0.053221s0.119527s
Success
preadv_pwritev.cSuccessNone0.055790s0.132427s
Success
printf.cSuccessNone0.045994s0.100108s
Success
prlimit64.cSuccessNone0.047954s0.106846s
Success
read.cSuccessNone0.054740s0.126694s
Success
readbytes.cSuccessNone0.051231s0.109577s
Success
readdir_basic.cSuccessNone0.058372s0.148672s
Success
readlink.cSuccessNone0.054298s0.122986s
Success
readlinkat.cSuccessNone0.056557s0.127768s
Success
readv_writev_test.cSuccessNone0.056676s0.131430s
Success
rename.cSuccessNone0.056502s0.119575s
Success
renameat.cSuccessNone0.057538s0.132751s
Success
sc-writev.cSuccessNone0.052776s0.116625s
Success
stat.cSuccessNone0.055441s0.126512s
Success
statfs.cSuccessNone0.049400s0.109366s
Success
symlink.cSuccessNone0.056297s0.147456s
Success
sync_file_range.cSuccessNone0.052600s0.112149s
Success
timespec_time_t_compat.cSuccessNone0.051718s0.109826s
Success
trailing_slash.cSuccessNone0.053379s0.121206s
Success
truncate.cSuccessNone0.056247s0.137111s
Success
unlink.cSuccessNone0.056711s0.153106s
Success
unlinkat.cSuccessNone0.056344s0.138545s
Success
utimensat.cSuccessNone0.053778s0.135467s
Success
write.cSuccessNone0.048797s0.101830s
Success
writeloop.cSuccessNone0.056371s0.116772s
Success
writepartial.cSuccessNone0.054954s0.110311s
Success
writev.cSuccessNone0.055796s0.126523s
Success
Math Tests
math_link_smoke.cSuccessNone0.058862s0.108541s
Success
math_tests.cSuccessNone0.063503s0.135869s
Success
printf_float.cSuccessNone0.059975s0.134192s
Success
Memory Tests
brk.cSuccessNone0.053472s0.114713s
Success
fork_large_memory.cSuccessNone0.085755s0.378540s
Success
malloc.cSuccessNone0.051943s0.105913s
Success
malloc_large.cSuccessNone0.051375s0.104737s
Success
memcpy.cSuccessNone0.051157s0.106583s
Success
memory_error_test.cSuccessNone0.057442s0.138231s
Success
mmap.cSuccessNone0.049297s0.106992s
Success
mmap_aligned.cSuccessNone0.049689s0.120259s
Success
mmap_complicated.cSuccessNone0.056119s0.131530s
Success
mmap_file.cSuccessNone0.056136s0.120436s
Success
mmap_shared.cSuccessNone0.055296s0.126955s
Success
mmaptest.cSuccessNone0.051504s0.112166s
Success
mprotect.cSuccessNone0.049906s0.106796s
Success
mprotect_boundary.cSuccessNone0.051461s0.118297s
Success
mprotect_end_region.cSuccessNone0.049338s0.113116s
Success
mprotect_middle_region.cSuccessNone0.049234s0.114131s
Success
mprotect_multiple_times.cSuccessNone0.050383s0.114051s
Success
mprotect_same_value.cSuccessNone0.049422s0.110451s
Success
mprotect_spanning_regions.cSuccessNone0.050333s0.128127s
Success
munmap_adjacent_shm.cSuccessNone0.053627s0.129346s
Success
sbrk.cSuccessNone0.051760s0.110093s
Success
segfault.cSuccessNone0.056566s0.144920s
Success
shm.cSuccessNone0.054807s0.133234s
Success
shmtest.cSuccessNone0.050287s0.113369s
Success
thread_malloc_sequential.cSuccessNone0.057273s0.159476s
Success
vtable.cSuccessNone0.059877s0.124847s
Success
Networking Tests
accept4.cSuccessNone0.058334s0.132590s
Success
dns_resolve_test.cSuccessNone0.054414s0.117335s
Success
dnstest.cSuccessNone0.054731s0.116336s
Success
epoll_badfd.cSuccessNone0.050261s0.106902s
Success
epoll_edge_triggered.cSuccessNone0.213982s0.380183s
Success
epollcreate1.cSuccessNone0.057552s0.144706s
Success
error_handling_net.cSuccessNone0.061006s0.188987s
Success
getaddrinfo_test.cSuccessNone0.057027s0.152375s
Success
getaddrinfo_unspec.cSuccessNone0.057533s0.123362s
Success
gethostname.cSuccessNone0.049065s0.102255s
Success
getifaddrs.cSuccessNone0.056527s0.120570s
Success
getsockname.cSuccessNone0.060532s0.119789s
Success
getsockopt.cSuccessNone0.057498s0.156019s
Success
ipv6_basic.cSuccessNone0.058142s0.156176s
Success
makepipe.cSuccessNone0.048449s0.102420s
Success
nonblocking_eagain.cSuccessNone0.059280s0.164781s
Success
pipe.cSuccessNone0.056958s0.128221s
Success
pipe2.cSuccessNone0.055063s0.115761s
Success
pipeinput.cSuccessNone0.057608s0.140144s
Success
pipeinput2.cSuccessNone0.056795s0.147186s
Success
pipeonestring.cSuccessNone0.057947s0.141540s
Success
pipepong.cSuccessNone0.056274s0.145842s
Success
pipewrite.cSuccessNone0.052213s0.117657s
Success
poll.cSuccessNone0.055082s0.116881s
Success
recvfrom-sendto.cSuccessNone0.056644s0.125677s
Success
sendmsg_recvmsg_test.cSuccessNone0.056269s0.129719s
Success
serverclient.cSuccessNone0.056337s0.133813s
Success
shutdown.cSuccessNone0.057144s0.129106s
Success
shutdown_fork.cSuccessNone0.057380s0.132394s
Success
simple-select.cSuccessNone0.056435s0.139990s
Success
simple_epoll.cSuccessNone0.055565s0.122240s
Success
socket.cSuccessNone0.053110s0.111467s
Success
socket_cloexec.cSuccessNone0.053729s0.112618s
Success
socket_options_advanced.cSuccessNone0.059622s0.171970s
Success
socketepoll.cSuccessNone0.053151s0.112985s
Success
socketpair.cSuccessNone0.055581s0.130039s
Success
socketselect.cSuccessNone0.054505s0.122702s
Success
udp_send_recv.cSuccessNone0.161918s0.265376s
Success
uds-getsockname.cSuccessNone0.061330s0.135635s
Success
uds-nb-select.cSuccessNone2.062286s2.175854s
Success
uds-serverclient.cSuccessNone0.059866s0.151595s
Success
uds-socketselect.cSuccessNone0.057033s0.127003s
Success
uds_listen_poll.cSuccessNone1.061384s1.158388s
Success
writev_socket.cSuccessNone0.058561s0.155327s
Success
Process Tests
barrier_test.cSuccessNone0.054678s0.123722s
Success
chain_thread.cSuccessNone1.056852s1.130788s
Success
ctor_syscall_test.cSuccessNone0.047697s0.106405s
Success
cxa_atexit_test.cSuccessNone0.053577s0.109962s
Success
exec_non_utf8.cSuccessNone0.053958s0.114655s
Success
execve_shebang.cSuccessNone0.055110s0.114579s
Success
exit.cSuccessNone0.053622s0.108251s
Success
exit_failure.cSuccessNone0.055856s0.124418s
Success
exit_group_thread.cSuccessNone0.056507s0.133412s
Success
exit_status_first_wins.cSuccessNone0.057813s0.135376s
Success
flockfile_test.cSuccessNone0.054900s0.133304s
Success
fork2malloc.cSuccessNone0.057188s0.126797s
Success
fork_select.cSuccessNone0.054079s0.134281s
Success
fork_simple.cSuccessNone0.053344s0.119666s
Success
fork_syscall.cSuccessNone0.059415s0.349132s
Success
fork_tls_ctype.cSuccessNone0.057437s0.146692s
Success
forkandopen.cSuccessNone0.057694s0.137691s
Success
forkdup.cSuccessNone0.061212s0.131032s
Success
forkexecuid.cSuccessNone0.054332s0.138017s
Success
forkexecv-arg.cSuccessNone0.054955s0.130745s
Success
forkexecv.cSuccessNone0.053117s0.122857s
Success
forkfiles.cSuccessNone0.056592s0.131133s
Success
forkmalloc.cSuccessNone0.056426s0.122458s
Success
forknodup.cSuccessNone0.056742s0.136768s
Success
function-ptr.cSuccessNone0.050698s0.107533s
Success
getegid_syscall.cSuccessNone0.056252s0.273594s
Success
getgid_syscall.cSuccessNone0.056913s0.279029s
Success
getpid.cSuccessNone0.048811s0.103127s
Success
getpid_syscall.cSuccessNone0.057926s0.292912s
Success
getppid.cSuccessNone0.057521s0.126946s
Success
getppid_syscall.cSuccessNone0.058918s0.246449s
Success
getuid.cSuccessNone0.055869s0.112472s
Success
getuid_syscall.cSuccessNone0.054949s0.180567s
Success
hello-arg.cSuccessNone0.048249s0.106070s
Success
hello.cSuccessNone0.047890s0.100754s
Success
longjmp.cSuccessNone0.047913s0.108757s
Success
mutex.cSuccessNone2.058561s2.126139s
Success
printf_deadlock_smoke.cSuccessNone0.062723s0.152089s
Success
printf_thread_test.cSuccessNone0.054904s0.128806s
Success
sem_forks.cSuccessNone0.059062s0.143364s
Success
setsid.cSuccessNone0.049665s0.104967s
Success
template.cSuccessNone0.055292s0.148969s
Success
test_exec_nofork.cSuccessNone0.055431s0.128461s
Success
test_unlink_open_file.cSuccessNone0.051828s0.108694s
Success
thread-guard.cSuccessNone0.052796s0.123589s
Success
thread-test.cSuccessNone0.052004s0.119163s
Success
thread.cSuccessNone0.051046s0.124233s
Success
thread_cageid_race.cSuccessNone0.051883s0.165866s
Success
tls_test.cSuccessNone0.054074s0.132556s
Success
uname.cSuccessNone0.049298s0.106830s
Success
wait.cSuccessNone0.053365s0.131520s
Success
waitpid_anychild.cSuccessNone0.055531s0.126513s
Success
waitpid_syscall.cSuccessNone1.055985s1.172016s
Success
waitpid_wnohang.cSuccessNone0.056312s0.127769s
Success
Signal Tests
alarm.cSuccessNone7.054251s7.149806s
Success
eintr_fork_signal.cSuccessNone1.057841s1.141362s
Success
kill.cSuccessNone1.055802s1.128568s
Success
setitimer.cSuccessNone7.055065s7.150431s
Success
sigalrm.cSuccessNone2.055234s2.133003s
Success
sigaltstack.cSuccessNone0.057374s0.128870s
Success
sigchld.cSuccessNone1.057789s1.124528s
Success
signal-fork.cSuccessNone4.057272s4.126645s
Success
signal-simple.cSuccessNone0.056124s0.119535s
Success
signal_SIGCHLD.cSuccessNone0.054299s0.131484s
Success
signal_fork.cSuccessNone0.053551s0.133014s
Success
signal_int_ignored.cSuccessNone2.057228s2.125944s
Success
signal_kill_cleanup.cSuccessNone1.054434s1.122578s
Success
signal_procmask.cSuccessNone0.051415s0.117061s
Success
signal_read_interrupt.cSuccessNone0.558081s0.632664s
Success
signal_recursive.cSuccessNone0.051113s0.121235s
Success
signal_sa_mask.cSuccessNone0.050438s0.114755s
Success
signal_select_interrupt.cSuccessNone0.558803s0.634460s
Success
signal_write_interrupt.cSuccessNone1.060185s1.135287s
Success
sigpipe.cSuccessNone1.058653s1.135628s
Success
sigprocmask.cSuccessNone1.056555s1.122812s
Success
Fail Tests

Summary

MetricCount
Total Test Cases4
Number of Successes4
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Dylink Tests
dlerror.cSuccessNone0.048134s0.106121s
Success
Memory Tests
mmap-negative1.cSuccessNone0.137819s0.112059s
Success
mmap-negative2.cSuccessNone0.124073s0.148084s
Success
Signal Tests
signal_resethand.cSuccessNone1.055902s1.125264s
Success

C++ harness

Summary

MetricValue
Total1
Success1
Failures0
Compile failures0
Runtime failures0
Output mismatch0
Timeouts0

Cases

TestStatusError typeNative timeWasm timeOutput
tests/unit-tests/cpp/sort.cppSuccess0.574738s9.503003s
LIBCPP_SORT_OK 1 2 3

@github-actions

Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

grate harness

Grate Test Report

MetricValue
Total15
Success15
Failures0
Compile Failures0
Runtime Failures0
Timeout Failures0
Missing Pair Failures0

Cases

TestStatusError TypeOutput
concurrent-request/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] PASS

STDERR:

concurrent-request/race-test_grate.cSuccess
STDOUT:
pass

STDERR:

concurrent-request/thread_race_grate.cSuccess
STDOUT:
[thread_race] Registering handler for cage 2 in grate 1 with fn ptr addr: 3
[thread_race] PASS: 20 threads x 100000 calls returned 10
[thread_race] PASS

STDERR:

copy-data-between-cages/cp-stncpy_grate.cSuccess
STDOUT:
[cage] pathname addr=0xfffb6ff9
[cage] pathname='random'
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

copy-data-between-cages/cpdata_grate.cSuccess
STDOUT:
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

interposing-calls/fork-with-newret_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Cage] Forked process with PID: 10
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-exec_grate.cSuccess
STDOUT:
[Grate|interpose-exec] Registering exec handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
Exec successful, argv[1]: --execd
[Grate|interpose-exec] PASS

STDERR:

interposing-calls/interpose-exit_grate.cSuccess
STDOUT:
[Grate|interpose-exit] Registering exit handler for cage 2 in grate 1 with fn ptr addr: 3
Exiting...

[Grate|interpose-exit] PASS

STDERR:

interposing-calls/interpose-fork_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-mmap_grate.cSuccess
STDOUT:
[Grate|interpose-mmap] Registering mmap handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
mmap test: PASS
[Grate|interpose-mmap] PASS

STDERR:

interposing-calls/interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 4
[cage] registering 107. grateid: 2 cageid: 3
[Grate|interpose-register] Handling function ptr: 4 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|geteuid] Registering geteuid handler for cage 1 in grate 1 with fn ptr addr: 3
[Grate|interpose-register] Handling function ptr: 3 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|interpose-register] PASS

STDERR:

multi-register_grate.cSuccess
STDOUT:
[Grate|multi-register_grate] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 4
[Grate|multi-register_grate] Registering getuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|multi-register_grate] Handling function ptr: 4 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Grate|multi-register_grate] Handling function ptr: 3 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Cage | multi-register] PASS: geteuid=10, getuid=20
[Grate|multi-register] PASS

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 3 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 4 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:

simple-tests/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|geteuid] Handling function ptr: 3 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

simple-tests/mmap-flag_grate.cSuccess
STDOUT:
[Cage|mmap-flag] PASS
[Grate|mmap-flag] PASS

STDERR:

static harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases3
Number of Successes3
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Static Tests
fork_simple.cSuccessNone0.052465s4.367229s
Success
thread.cSuccessNone0.044419s4.409003s
Success
tls_test.cSuccessNone0.052127s4.402356s
Success
Fail Tests

Summary

MetricCount
Total Test Cases0
Number of Successes0
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases220
Number of Successes220
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
File Tests
chartests.cSuccessNone0.046350s0.134967s
Success
chdir_getcwd.cSuccessNone0.046882s0.105577s
Success
chmod.cSuccessNone0.051413s0.115638s
Success
clock_gettime_highlevel.cSuccessNone0.116645s0.153204s
Success
clock_gettime_simple.cSuccessNone0.040256s0.093219s
Success
cloexec.cSuccessNone0.050681s0.120588s
Success
close.cSuccessNone0.057326s0.125065s
Success
creat_access.cSuccessNone0.048609s0.105813s
Success
doubleclose.cSuccessNone0.040983s0.089285s
Success
dup.cSuccessNone0.041702s0.104726s
Success
dup2.cSuccessNone0.047452s0.103617s
Success
dup3.cSuccessNone0.045661s0.105876s
Success
dupwrite.cSuccessNone0.048308s0.102696s
Success
etc_conf.cSuccessNone0.045062s0.108884s
Success
faccessat.cSuccessNone0.044526s0.107013s
Success
fchdir.cSuccessNone0.051643s0.118969s
Success
fchmod.cSuccessNone0.050571s0.115630s
Success
fchmodat.cSuccessNone0.044249s0.104233s
Success
fcntl.cSuccessNone0.049370s0.123617s
Success
fcntl_dupfd.cSuccessNone0.042470s0.099130s
Success
fdatasync.cSuccessNone0.051471s0.102905s
Success
filetest.cSuccessNone0.048301s0.101179s
Success
filetest1000.cSuccessNone0.055653s0.112891s
Success
flock.cSuccessNone0.057382s0.141261s
Success
fstat.cSuccessNone0.051244s0.118327s
Success
fstatfs.cSuccessNone0.043229s0.097144s
Success
fsync.cSuccessNone0.047663s0.102814s
Success
ftruncate.cSuccessNone0.053555s0.201902s
Success
getcwd.cSuccessNone0.045142s0.096862s
Success
getcwd_null.cSuccessNone0.049930s0.110533s
Success
getpgid.cSuccessNone0.043423s0.092942s
Success
getrandom.cSuccessNone0.048235s0.116426s
Success
ioctl.cSuccessNone0.051787s0.111779s
Success
link.cSuccessNone0.051410s0.146013s
Success
locale_test.cSuccessNone0.062823s0.308419s
Success
lseek.cSuccessNone0.053058s0.181315s
Success
lstat.cSuccessNone0.052871s0.125410s
Success
mkdir_rmdir.cSuccessNone0.050185s0.107209s
Success
mkfifo_test.cSuccessNone0.054537s0.147382s
Success
mknod.cSuccessNone0.048130s0.114316s
Success
nocancel_io.cSuccessNone0.052309s0.131587s
Success
open.cSuccessNone0.042803s0.096428s
Success
openat.cSuccessNone0.044024s0.102364s
Success
path_conversion_safety.cSuccessNone0.052945s0.127304s
Success
ppoll.cSuccessNone0.052727s0.116212s
Success
pread_pwrite.cSuccessNone0.046978s0.110468s
Success
preadv_pwritev.cSuccessNone0.052075s0.124077s
Success
printf.cSuccessNone0.040300s0.089775s
Success
prlimit64.cSuccessNone0.042657s0.097172s
Success
read.cSuccessNone0.049042s0.116865s
Success
readbytes.cSuccessNone0.045557s0.100022s
Success
readdir_basic.cSuccessNone0.052901s0.137383s
Success
readlink.cSuccessNone0.049132s0.113094s
Success
readlinkat.cSuccessNone0.050610s0.116929s
Success
readv_writev_test.cSuccessNone0.050118s0.117110s
Success
rename.cSuccessNone0.051233s0.108828s
Success
renameat.cSuccessNone0.052256s0.123577s
Success
sc-writev.cSuccessNone0.046958s0.105438s
Success
stat.cSuccessNone0.050240s0.116936s
Success
statfs.cSuccessNone0.042799s0.104621s
Success
symlink.cSuccessNone0.051455s0.139053s
Success
sync_file_range.cSuccessNone0.047096s0.102559s
Success
timespec_time_t_compat.cSuccessNone0.046164s0.100321s
Success
trailing_slash.cSuccessNone0.047594s0.110187s
Success
truncate.cSuccessNone0.050468s0.125973s
Success
unlink.cSuccessNone0.051918s0.143974s
Success
unlinkat.cSuccessNone0.052048s0.125688s
Success
utimensat.cSuccessNone0.048359s0.125064s
Success
write.cSuccessNone0.042664s0.090508s
Success
writeloop.cSuccessNone0.051769s0.105710s
Success
writepartial.cSuccessNone0.050704s0.100467s
Success
writev.cSuccessNone0.050184s0.114069s
Success
Math Tests
math_link_smoke.cSuccessNone0.051687s0.097281s
Success
math_tests.cSuccessNone0.056299s0.125204s
Success
printf_float.cSuccessNone0.052782s0.122959s
Success
Memory Tests
brk.cSuccessNone0.047911s0.103816s
Success
fork_large_memory.cSuccessNone0.079924s0.360858s
Success
malloc.cSuccessNone0.046195s0.095717s
Success
malloc_large.cSuccessNone0.046674s0.097266s
Success
memcpy.cSuccessNone0.045499s0.096803s
Success
memory_error_test.cSuccessNone0.052043s0.127965s
Success
mmap.cSuccessNone0.042858s0.096529s
Success
mmap_aligned.cSuccessNone0.044124s0.111115s
Success
mmap_complicated.cSuccessNone0.051823s0.122092s
Success
mmap_file.cSuccessNone0.050804s0.111441s
Success
mmap_shared.cSuccessNone0.049525s0.116960s
Success
mmaptest.cSuccessNone0.045771s0.101201s
Success
mprotect.cSuccessNone0.044583s0.098560s
Success
mprotect_boundary.cSuccessNone0.044787s0.106972s
Success
mprotect_end_region.cSuccessNone0.043683s0.102945s
Success
mprotect_middle_region.cSuccessNone0.044090s0.103033s
Success
mprotect_multiple_times.cSuccessNone0.044814s0.105931s
Success
mprotect_same_value.cSuccessNone0.043892s0.101739s
Success
mprotect_spanning_regions.cSuccessNone0.044595s0.118513s
Success
munmap_adjacent_shm.cSuccessNone0.049728s0.119286s
Success
sbrk.cSuccessNone0.045727s0.098088s
Success
segfault.cSuccessNone0.052872s0.132252s
Success
shm.cSuccessNone0.050384s0.121546s
Success
shmtest.cSuccessNone0.043675s0.103866s
Success
thread_malloc_sequential.cSuccessNone0.051916s0.146911s
Success
vtable.cSuccessNone0.055822s0.115147s
Success
Networking Tests
accept4.cSuccessNone0.053399s0.123523s
Success
dns_resolve_test.cSuccessNone0.048899s0.107883s
Success
dnstest.cSuccessNone0.048691s0.107321s
Success
epoll_badfd.cSuccessNone0.043870s0.097630s
Success
epoll_edge_triggered.cSuccessNone0.209784s0.369028s
Success
epollcreate1.cSuccessNone0.050495s0.118405s
Success
error_handling_net.cSuccessNone0.057445s0.181568s
Success
getaddrinfo_test.cSuccessNone0.053230s0.143472s
Success
getaddrinfo_unspec.cSuccessNone0.055885s0.163083s
Success
gethostname.cSuccessNone0.042976s0.093368s
Success
getifaddrs.cSuccessNone0.052580s0.109922s
Success
getsockname.cSuccessNone0.055773s0.110620s
Success
getsockopt.cSuccessNone0.052884s0.144637s
Success
ipv6_basic.cSuccessNone0.053555s0.144635s
Success
makepipe.cSuccessNone0.044138s0.092246s
Success
nonblocking_eagain.cSuccessNone0.054051s0.154454s
Success
pipe.cSuccessNone0.051677s0.118492s
Success
pipe2.cSuccessNone0.050818s0.108610s
Success
pipeinput.cSuccessNone0.052543s0.133270s
Success
pipeinput2.cSuccessNone0.052597s0.137232s
Success
pipeonestring.cSuccessNone0.052872s0.131444s
Success
pipepong.cSuccessNone0.051506s0.136665s
Success
pipewrite.cSuccessNone0.045382s0.105137s
Success
poll.cSuccessNone0.049802s0.104009s
Success
recvfrom-sendto.cSuccessNone0.051593s0.116000s
Success
sendmsg_recvmsg_test.cSuccessNone0.051743s0.119947s
Success
serverclient.cSuccessNone0.050517s0.121790s
Success
shutdown.cSuccessNone0.052065s0.119224s
Success
shutdown_fork.cSuccessNone0.049913s0.120363s
Success
simple-select.cSuccessNone0.051564s0.133061s
Success
simple_epoll.cSuccessNone0.050246s0.114905s
Success
socket.cSuccessNone0.048272s0.103729s
Success
socket_cloexec.cSuccessNone0.047949s0.102249s
Success
socket_options_advanced.cSuccessNone0.055551s0.162582s
Success
socketepoll.cSuccessNone0.049074s0.105293s
Success
socketpair.cSuccessNone0.047905s0.115377s
Success
socketselect.cSuccessNone0.048932s0.112423s
Success
udp_send_recv.cSuccessNone0.157196s0.256041s
Success
uds-getsockname.cSuccessNone0.050407s0.106182s
Success
uds-nb-select.cSuccessNone2.059392s2.169357s
Success
uds-serverclient.cSuccessNone0.053539s0.138075s
Success
uds-socketselect.cSuccessNone0.050226s0.116843s
Success
uds_listen_poll.cSuccessNone1.057023s1.151857s
Success
writev_socket.cSuccessNone0.053823s0.147709s
Success
Process Tests
barrier_test.cSuccessNone0.049269s0.111631s
Success
chain_thread.cSuccessNone1.051335s1.120586s
Success
ctor_syscall_test.cSuccessNone0.039958s0.093537s
Success
cxa_atexit_test.cSuccessNone0.046131s0.100148s
Success
exec_non_utf8.cSuccessNone0.048385s0.104217s
Success
execve_shebang.cSuccessNone0.050680s0.105370s
Success
exit.cSuccessNone0.047349s0.097724s
Success
exit_failure.cSuccessNone0.048754s0.108798s
Success
exit_group_thread.cSuccessNone0.050285s0.121944s
Success
exit_status_first_wins.cSuccessNone0.052955s0.125195s
Success
flockfile_test.cSuccessNone0.049580s0.120044s
Success
fork2malloc.cSuccessNone0.050869s0.115698s
Success
fork_select.cSuccessNone0.049095s0.122263s
Success
fork_simple.cSuccessNone0.047145s0.107169s
Success
fork_syscall.cSuccessNone0.053890s0.326691s
Success
fork_tls_ctype.cSuccessNone0.051883s0.134976s
Success
forkandopen.cSuccessNone0.051489s0.126327s
Success
forkdup.cSuccessNone0.053667s0.118077s
Success
forkexecuid.cSuccessNone0.047999s0.124756s
Success
forkexecv-arg.cSuccessNone0.048391s0.115600s
Success
forkexecv.cSuccessNone0.046469s0.110590s
Success
forkfiles.cSuccessNone0.051257s0.119746s
Success
forkmalloc.cSuccessNone0.050779s0.110766s
Success
forknodup.cSuccessNone0.050541s0.122351s
Success
function-ptr.cSuccessNone0.044463s0.096466s
Success
getegid_syscall.cSuccessNone0.049805s0.253142s
Success
getgid_syscall.cSuccessNone0.050604s0.265002s
Success
getpid.cSuccessNone0.042407s0.091996s
Success
getpid_syscall.cSuccessNone0.051929s0.270569s
Success
getppid.cSuccessNone0.052153s0.110555s
Success
getppid_syscall.cSuccessNone0.053592s0.230767s
Success
getuid.cSuccessNone0.049579s0.102383s
Success
getuid_syscall.cSuccessNone0.049417s0.166867s
Success
hello-arg.cSuccessNone0.040810s0.095852s
Success
hello.cSuccessNone0.040108s0.088573s
Success
longjmp.cSuccessNone0.041276s0.096944s
Success
mutex.cSuccessNone2.052919s2.114723s
Success
printf_deadlock_smoke.cSuccessNone0.058394s0.142729s
Success
printf_thread_test.cSuccessNone0.047902s0.118161s
Success
sem_forks.cSuccessNone0.052950s0.129768s
Success
setsid.cSuccessNone0.044060s0.093895s
Success
template.cSuccessNone0.049412s0.133473s
Success
test_exec_nofork.cSuccessNone0.048324s0.111161s
Success
test_unlink_open_file.cSuccessNone0.044916s0.094248s
Success
thread-guard.cSuccessNone0.046711s0.111958s
Success
thread-test.cSuccessNone0.044442s0.100821s
Success
thread.cSuccessNone0.044846s0.101169s
Success
thread_cageid_race.cSuccessNone0.045579s0.153284s
Success
tls_test.cSuccessNone0.048839s0.121141s
Success
uname.cSuccessNone0.043107s0.092911s
Success
wait.cSuccessNone0.047701s0.119828s
Success
waitpid_anychild.cSuccessNone0.050149s0.116602s
Success
waitpid_syscall.cSuccessNone1.049259s1.159538s
Success
waitpid_wnohang.cSuccessNone0.051508s0.117310s
Success
Signal Tests
alarm.cSuccessNone7.049089s7.138891s
Success
eintr_fork_signal.cSuccessNone1.052899s1.128358s
Success
kill.cSuccessNone1.050308s1.118910s
Success
setitimer.cSuccessNone7.050790s7.135497s
Success
sigalrm.cSuccessNone2.050728s2.123210s
Success
sigaltstack.cSuccessNone0.054649s0.117920s
Success
sigchld.cSuccessNone1.051918s1.115951s
Success
signal-fork.cSuccessNone4.052896s4.116286s
Success
signal-simple.cSuccessNone0.051787s0.109620s
Success
signal_SIGCHLD.cSuccessNone0.048576s0.117929s
Success
signal_fork.cSuccessNone0.047673s0.120165s
Success
signal_int_ignored.cSuccessNone2.051117s2.119116s
Success
signal_kill_cleanup.cSuccessNone1.049703s1.113330s
Success
signal_procmask.cSuccessNone0.046347s0.106209s
Success
signal_read_interrupt.cSuccessNone0.553539s0.623266s
Success
signal_recursive.cSuccessNone0.046100s0.110057s
Success
signal_sa_mask.cSuccessNone0.044057s0.100346s
Success
signal_select_interrupt.cSuccessNone0.554396s0.627750s
Success
signal_write_interrupt.cSuccessNone1.052446s1.125863s
Success
sigpipe.cSuccessNone1.052835s1.125997s
Success
sigprocmask.cSuccessNone1.050004s1.115110s
Success
Fail Tests

Summary

MetricCount
Total Test Cases4
Number of Successes4
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Dylink Tests
dlerror.cSuccessNone0.041146s0.093803s
Success
Memory Tests
mmap-negative1.cSuccessNone0.136388s0.120265s
Success
mmap-negative2.cSuccessNone0.107941s0.110373s
Success
Signal Tests
signal_resethand.cSuccessNone1.050605s1.114288s
Success

C++ harness

Summary

MetricValue
Total1
Success1
Failures0
Compile failures0
Runtime failures0
Output mismatch0
Timeouts0

Cases

TestStatusError typeNative timeWasm timeOutput
tests/unit-tests/cpp/sort.cppSuccess0.484553s10.440820s
LIBCPP_SORT_OK 1 2 3

@rennergade rennergade requested a review from JustinCappos May 13, 2026 16:06
Comment thread src/typemap/src/datatype_conversion.rs Outdated
let base_addr = vmmap.base_address.unwrap() as u64;

// Only convert to host if not already converted.
if uaddr >= base_addr {

@JustinCappos JustinCappos May 13, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this should check if the top bits match the base_addr, not this.

In practice, you should have a helper function for this to handle situations where we do not have 32 bit aligned 4GB regions.

use std::collections::{hash_map::Entry, HashMap};
use std::collections::HashMap;
use std::sync::Mutex;
use sysdefs::constants::lind_platform_const;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this linter cleanup?

/// - If no entry exists for `self_cageid`.
/// - If no entry exists for `syscall_num`.
pub fn _get_handler(self_cageid: u64, syscall_num: u64, target_cageid: u64) -> Option<(u64, u64)> {
pub fn _get_handler(self_cageid: u64, syscall_num: u64, _target_cageid: u64) -> Option<(u64, u64)> {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you making the linter happy, or...?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah

Comment on lines +35 to +39
/// MSB of a syscall arg's cageid: signals that the arg should be treated as a
/// host-side reference into the named cage's linear memory, not as a uaddr
/// in the calling cage's memory. Mirrors `LIND_ARG_TRANSLATE_FLAG` in
/// `src/glibc/lind_syscall/addr_translation.h`.
pub const GRATE_MEMORY_FLAG: u64 = 1u64 << 63;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't really understand this. Need to discuss

/// `src/glibc/lind_syscall/addr_translation.h`.
pub const GRATE_MEMORY_FLAG: u64 = 1u64 << 63;
/// Mask to recover the actual cageid by clearing `GRATE_MEMORY_FLAG`.
pub const LIND_ARG_CAGEID_MASK: u64 = !GRATE_MEMORY_FLAG;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it be better to make a macro that uses this?

@github-actions

Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

grate harness

Grate Test Report

MetricValue
Total15
Success15
Failures0
Compile Failures0
Runtime Failures0
Timeout Failures0
Missing Pair Failures0

Cases

TestStatusError TypeOutput
concurrent-request/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] PASS

STDERR:

concurrent-request/race-test_grate.cSuccess
STDOUT:
pass

STDERR:

concurrent-request/thread_race_grate.cSuccess
STDOUT:
[thread_race] Registering handler for cage 2 in grate 1 with fn ptr addr: 3
[thread_race] PASS: 20 threads x 100000 calls returned 10
[thread_race] PASS

STDERR:

copy-data-between-cages/cp-stncpy_grate.cSuccess
STDOUT:
[cage] pathname addr=0xfffb6ff9
[cage] pathname='random'
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

copy-data-between-cages/cpdata_grate.cSuccess
STDOUT:
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

interposing-calls/fork-with-newret_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Cage] Forked process with PID: 10
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-exec_grate.cSuccess
STDOUT:
[Grate|interpose-exec] Registering exec handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
Exec successful, argv[1]: --execd
[Grate|interpose-exec] PASS

STDERR:

interposing-calls/interpose-exit_grate.cSuccess
STDOUT:
[Grate|interpose-exit] Registering exit handler for cage 2 in grate 1 with fn ptr addr: 3
Exiting...

[Grate|interpose-exit] PASS

STDERR:

interposing-calls/interpose-fork_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-mmap_grate.cSuccess
STDOUT:
[Grate|interpose-mmap] Registering mmap handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
mmap test: PASS
[Grate|interpose-mmap] PASS

STDERR:

interposing-calls/interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 4
[cage] registering 107. grateid: 2 cageid: 3
[Grate|interpose-register] Handling function ptr: 4 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|geteuid] Registering geteuid handler for cage 1 in grate 1 with fn ptr addr: 3
[Grate|interpose-register] Handling function ptr: 3 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|interpose-register] PASS

STDERR:

multi-register_grate.cSuccess
STDOUT:
[Grate|multi-register_grate] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 4
[Grate|multi-register_grate] Registering getuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|multi-register_grate] Handling function ptr: 4 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Grate|multi-register_grate] Handling function ptr: 3 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Cage | multi-register] PASS: geteuid=10, getuid=20
[Grate|multi-register] PASS

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 3 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 4 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:

simple-tests/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|geteuid] Handling function ptr: 3 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

simple-tests/mmap-flag_grate.cSuccess
STDOUT:
[Cage|mmap-flag] PASS
[Grate|mmap-flag] PASS

STDERR:

static harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases3
Number of Successes3
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Static Tests
fork_simple.cSuccessNone0.059087s4.500369s
Success
thread.cSuccessNone0.051786s4.513358s
Success
tls_test.cSuccessNone0.060714s4.503376s
Success
Fail Tests

Summary

MetricCount
Total Test Cases0
Number of Successes0
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases220
Number of Successes220
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
File Tests
chartests.cSuccessNone0.051491s0.144322s
Success
chdir_getcwd.cSuccessNone0.052126s0.116622s
Success
chmod.cSuccessNone0.056748s0.125205s
Success
clock_gettime_highlevel.cSuccessNone0.125162s0.172429s
Success
clock_gettime_simple.cSuccessNone0.047211s0.108099s
Success
cloexec.cSuccessNone0.058052s0.132791s
Success
close.cSuccessNone0.065121s0.137761s
Success
creat_access.cSuccessNone0.055765s0.117725s
Success
doubleclose.cSuccessNone0.048769s0.103282s
Success
dup.cSuccessNone0.049011s0.119796s
Success
dup2.cSuccessNone0.055443s0.116932s
Success
dup3.cSuccessNone0.052748s0.116942s
Success
dupwrite.cSuccessNone0.054846s0.114574s
Success
etc_conf.cSuccessNone0.052612s0.121472s
Success
faccessat.cSuccessNone0.051737s0.118231s
Success
fchdir.cSuccessNone0.057158s0.127205s
Success
fchmod.cSuccessNone0.056433s0.125749s
Success
fchmodat.cSuccessNone0.051576s0.117770s
Success
fcntl.cSuccessNone0.054353s0.131138s
Success
fcntl_dupfd.cSuccessNone0.049160s0.111530s
Success
fdatasync.cSuccessNone0.056003s0.115370s
Success
filetest.cSuccessNone0.054967s0.111780s
Success
filetest1000.cSuccessNone0.064334s0.127632s
Success
flock.cSuccessNone0.062460s0.150356s
Success
fstat.cSuccessNone0.058981s0.129376s
Success
fstatfs.cSuccessNone0.050627s0.109212s
Success
fsync.cSuccessNone0.053813s0.113242s
Success
ftruncate.cSuccessNone0.057891s0.210742s
Success
getcwd.cSuccessNone0.052505s0.108097s
Success
getcwd_null.cSuccessNone0.055173s0.122181s
Success
getpgid.cSuccessNone0.050061s0.105646s
Success
getrandom.cSuccessNone0.054582s0.128778s
Success
ioctl.cSuccessNone0.057522s0.121006s
Success
link.cSuccessNone0.059290s0.159353s
Success
locale_test.cSuccessNone0.066009s0.322036s
Success
lseek.cSuccessNone0.058779s0.191623s
Success
lstat.cSuccessNone0.058133s0.135662s
Success
mkdir_rmdir.cSuccessNone0.055944s0.119900s
Success
mkfifo_test.cSuccessNone0.060705s0.158443s
Success
mknod.cSuccessNone0.055610s0.128244s
Success
nocancel_io.cSuccessNone0.059448s0.142884s
Success
open.cSuccessNone0.050290s0.105545s
Success
openat.cSuccessNone0.050704s0.112935s
Success
path_conversion_safety.cSuccessNone0.059326s0.137413s
Success
ppoll.cSuccessNone0.058850s0.126789s
Success
pread_pwrite.cSuccessNone0.053881s0.122770s
Success
preadv_pwritev.cSuccessNone0.058016s0.134856s
Success
printf.cSuccessNone0.047243s0.101991s
Success
prlimit64.cSuccessNone0.050281s0.129539s
Success
read.cSuccessNone0.055579s0.127222s
Success
readbytes.cSuccessNone0.051611s0.110478s
Success
readdir_basic.cSuccessNone0.059556s0.149591s
Success
readlink.cSuccessNone0.055865s0.124097s
Success
readlinkat.cSuccessNone0.056926s0.126774s
Success
readv_writev_test.cSuccessNone0.057919s0.130295s
Success
rename.cSuccessNone0.058007s0.119910s
Success
renameat.cSuccessNone0.059356s0.133019s
Success
sc-writev.cSuccessNone0.053142s0.116111s
Success
stat.cSuccessNone0.056597s0.126666s
Success
statfs.cSuccessNone0.050253s0.111841s
Success
symlink.cSuccessNone0.057730s0.148742s
Success
sync_file_range.cSuccessNone0.053717s0.114533s
Success
timespec_time_t_compat.cSuccessNone0.052715s0.109841s
Success
trailing_slash.cSuccessNone0.054597s0.121893s
Success
truncate.cSuccessNone0.056159s0.137249s
Success
unlink.cSuccessNone0.057651s0.152861s
Success
unlinkat.cSuccessNone0.057565s0.135514s
Success
utimensat.cSuccessNone0.054170s0.135227s
Success
write.cSuccessNone0.049522s0.101505s
Success
writeloop.cSuccessNone0.057727s0.116449s
Success
writepartial.cSuccessNone0.056595s0.111527s
Success
writev.cSuccessNone0.056598s0.124954s
Success
Math Tests
math_link_smoke.cSuccessNone0.060019s0.109102s
Success
math_tests.cSuccessNone0.064689s0.138132s
Success
printf_float.cSuccessNone0.059793s0.132755s
Success
Memory Tests
brk.cSuccessNone0.052977s0.113771s
Success
fork_large_memory.cSuccessNone0.086114s0.375679s
Success
malloc.cSuccessNone0.051584s0.104700s
Success
malloc_large.cSuccessNone0.052125s0.104165s
Success
memcpy.cSuccessNone0.051804s0.106108s
Success
memory_error_test.cSuccessNone0.056976s0.136287s
Success
mmap.cSuccessNone0.047606s0.104263s
Success
mmap_aligned.cSuccessNone0.051021s0.121657s
Success
mmap_complicated.cSuccessNone0.055906s0.130270s
Success
mmap_file.cSuccessNone0.056509s0.119458s
Success
mmap_shared.cSuccessNone0.054946s0.125876s
Success
mmaptest.cSuccessNone0.052023s0.110048s
Success
mprotect.cSuccessNone0.050209s0.105989s
Success
mprotect_boundary.cSuccessNone0.050237s0.117982s
Success
mprotect_end_region.cSuccessNone0.049139s0.111450s
Success
mprotect_middle_region.cSuccessNone0.050713s0.112931s
Success
mprotect_multiple_times.cSuccessNone0.050682s0.114906s
Success
mprotect_same_value.cSuccessNone0.048880s0.110041s
Success
mprotect_spanning_regions.cSuccessNone0.050241s0.127204s
Success
munmap_adjacent_shm.cSuccessNone0.054653s0.127970s
Success
sbrk.cSuccessNone0.050873s0.108508s
Success
segfault.cSuccessNone0.056717s0.141264s
Success
shm.cSuccessNone0.054521s0.132004s
Success
shmtest.cSuccessNone0.050349s0.114841s
Success
thread_malloc_sequential.cSuccessNone0.057289s0.155369s
Success
vtable.cSuccessNone0.059889s0.122455s
Success
Networking Tests
accept4.cSuccessNone0.060546s0.134143s
Success
dns_resolve_test.cSuccessNone0.055332s0.119628s
Success
dnstest.cSuccessNone0.055739s0.119420s
Success
epoll_badfd.cSuccessNone0.052316s0.109342s
Success
epoll_edge_triggered.cSuccessNone0.215433s0.382152s
Success
epollcreate1.cSuccessNone0.057296s0.131332s
Success
error_handling_net.cSuccessNone0.063497s0.193485s
Success
getaddrinfo_test.cSuccessNone0.059926s0.157213s
Success
getaddrinfo_unspec.cSuccessNone0.057862s0.178813s
Success
gethostname.cSuccessNone0.050817s0.105628s
Success
getifaddrs.cSuccessNone0.057180s0.120963s
Success
getsockname.cSuccessNone0.060866s0.121894s
Success
getsockopt.cSuccessNone0.059542s0.159714s
Success
ipv6_basic.cSuccessNone0.061174s0.155898s
Success
makepipe.cSuccessNone0.050444s0.104816s
Success
nonblocking_eagain.cSuccessNone0.060336s0.164868s
Success
pipe.cSuccessNone0.058885s0.130442s
Success
pipe2.cSuccessNone0.057935s0.121939s
Success
pipeinput.cSuccessNone0.061062s0.145383s
Success
pipeinput2.cSuccessNone0.059549s0.148828s
Success
pipeonestring.cSuccessNone0.059250s0.144914s
Success
pipepong.cSuccessNone0.058869s0.151503s
Success
pipewrite.cSuccessNone0.052934s0.117834s
Success
poll.cSuccessNone0.056303s0.114182s
Success
recvfrom-sendto.cSuccessNone0.057427s0.129087s
Success
sendmsg_recvmsg_test.cSuccessNone0.057280s0.132252s
Success
serverclient.cSuccessNone0.056680s0.133476s
Success
shutdown.cSuccessNone0.059082s0.130170s
Success
shutdown_fork.cSuccessNone0.057782s0.133043s
Success
simple-select.cSuccessNone0.058831s0.145165s
Success
simple_epoll.cSuccessNone0.056929s0.123913s
Success
socket.cSuccessNone0.055749s0.118063s
Success
socket_cloexec.cSuccessNone0.055522s0.114941s
Success
socket_options_advanced.cSuccessNone0.061730s0.175278s
Success
socketepoll.cSuccessNone0.056205s0.119780s
Success
socketpair.cSuccessNone0.054826s0.128355s
Success
socketselect.cSuccessNone0.057054s0.125124s
Success
udp_send_recv.cSuccessNone0.162881s0.267819s
Success
uds-getsockname.cSuccessNone0.056945s0.116955s
Success
uds-nb-select.cSuccessNone2.065249s2.187691s
Success
uds-serverclient.cSuccessNone0.060428s0.151512s
Success
uds-socketselect.cSuccessNone0.057162s0.128638s
Success
uds_listen_poll.cSuccessNone1.063962s1.161285s
Success
writev_socket.cSuccessNone0.059607s0.157189s
Success
Process Tests
barrier_test.cSuccessNone0.055757s0.125982s
Success
chain_thread.cSuccessNone1.057292s1.134582s
Success
ctor_syscall_test.cSuccessNone0.048895s0.107469s
Success
cxa_atexit_test.cSuccessNone0.053472s0.110451s
Success
exec_non_utf8.cSuccessNone0.055400s0.115933s
Success
execve_shebang.cSuccessNone0.056248s0.118402s
Success
exit.cSuccessNone0.054530s0.110702s
Success
exit_failure.cSuccessNone0.055652s0.121058s
Success
exit_group_thread.cSuccessNone0.057947s0.137112s
Success
exit_status_first_wins.cSuccessNone0.059398s0.137564s
Success
flockfile_test.cSuccessNone0.056086s0.134868s
Success
fork2malloc.cSuccessNone0.058682s0.130149s
Success
fork_select.cSuccessNone0.056409s0.132811s
Success
fork_simple.cSuccessNone0.054477s0.121207s
Success
fork_syscall.cSuccessNone0.060878s0.354899s
Success
fork_tls_ctype.cSuccessNone0.058833s0.148244s
Success
forkandopen.cSuccessNone0.058062s0.140692s
Success
forkdup.cSuccessNone0.059637s0.132556s
Success
forkexecuid.cSuccessNone0.055920s0.139578s
Success
forkexecv-arg.cSuccessNone0.055955s0.129093s
Success
forkexecv.cSuccessNone0.054232s0.125892s
Success
forkfiles.cSuccessNone0.057117s0.132954s
Success
forkmalloc.cSuccessNone0.057143s0.123080s
Success
forknodup.cSuccessNone0.058740s0.136868s
Success
function-ptr.cSuccessNone0.053028s0.109065s
Success
getegid_syscall.cSuccessNone0.057366s0.277050s
Success
getgid_syscall.cSuccessNone0.057604s0.288524s
Success
getpid.cSuccessNone0.049948s0.104715s
Success
getpid_syscall.cSuccessNone0.059470s0.296506s
Success
getppid.cSuccessNone0.058773s0.128037s
Success
getppid_syscall.cSuccessNone0.060094s0.247782s
Success
getuid.cSuccessNone0.056689s0.114797s
Success
getuid_syscall.cSuccessNone0.055567s0.181307s
Success
hello-arg.cSuccessNone0.047089s0.107329s
Success
hello.cSuccessNone0.048652s0.102632s
Success
longjmp.cSuccessNone0.048747s0.110198s
Success
mutex.cSuccessNone2.059863s2.127822s
Success
printf_deadlock_smoke.cSuccessNone0.063901s0.155352s
Success
printf_thread_test.cSuccessNone0.055722s0.130907s
Success
sem_forks.cSuccessNone0.059527s0.144433s
Success
setsid.cSuccessNone0.050626s0.105927s
Success
template.cSuccessNone0.056263s0.148458s
Success
test_exec_nofork.cSuccessNone0.056770s0.130330s
Success
test_unlink_open_file.cSuccessNone0.052807s0.108425s
Success
thread-guard.cSuccessNone0.054581s0.124761s
Success
thread-test.cSuccessNone0.051774s0.115021s
Success
thread.cSuccessNone0.051889s0.116622s
Success
thread_cageid_race.cSuccessNone0.052690s0.165957s
Success
tls_test.cSuccessNone0.054082s0.130842s
Success
uname.cSuccessNone0.058996s0.107077s
Success
wait.cSuccessNone0.054234s0.132739s
Success
waitpid_anychild.cSuccessNone0.056560s0.125441s
Success
waitpid_syscall.cSuccessNone1.057700s1.171052s
Success
waitpid_wnohang.cSuccessNone0.058045s0.128490s
Success
Signal Tests
alarm.cSuccessNone7.055660s7.154924s
Success
eintr_fork_signal.cSuccessNone1.057204s1.140521s
Success
kill.cSuccessNone1.056183s1.127999s
Success
setitimer.cSuccessNone7.055493s7.148943s
Success
sigalrm.cSuccessNone2.056983s2.133742s
Success
sigaltstack.cSuccessNone0.058850s0.128769s
Success
sigchld.cSuccessNone1.057347s1.127095s
Success
signal-fork.cSuccessNone4.058186s4.127774s
Success
signal-simple.cSuccessNone0.057389s0.117523s
Success
signal_SIGCHLD.cSuccessNone0.054844s0.129422s
Success
signal_fork.cSuccessNone0.054964s0.134191s
Success
signal_int_ignored.cSuccessNone2.057093s2.125885s
Success
signal_kill_cleanup.cSuccessNone1.056174s1.123805s
Success
signal_procmask.cSuccessNone0.051263s0.118128s
Success
signal_read_interrupt.cSuccessNone0.559409s0.636971s
Success
signal_recursive.cSuccessNone0.051545s0.122315s
Success
signal_sa_mask.cSuccessNone0.051337s0.112650s
Success
signal_select_interrupt.cSuccessNone0.559584s0.639486s
Success
signal_write_interrupt.cSuccessNone1.059226s1.134742s
Success
sigpipe.cSuccessNone1.059270s1.134778s
Success
sigprocmask.cSuccessNone1.057407s1.126000s
Success
Fail Tests

Summary

MetricCount
Total Test Cases4
Number of Successes4
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Dylink Tests
dlerror.cSuccessNone0.053294s0.107281s
Success
Memory Tests
mmap-negative1.cSuccessNone0.119707s0.111896s
Success
mmap-negative2.cSuccessNone0.124888s0.120327s
Success
Signal Tests
signal_resethand.cSuccessNone1.057343s1.127336s
Success

C++ harness

Summary

MetricValue
Total1
Success1
Failures0
Compile failures0
Runtime failures0
Output mismatch0
Timeouts0

Cases

TestStatusError typeNative timeWasm timeOutput
tests/unit-tests/cpp/sort.cppSuccess0.421512s10.175109s
LIBCPP_SORT_OK 1 2 3

@github-actions

Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

grate harness

Grate Test Report

MetricValue
Total15
Success15
Failures0
Compile Failures0
Runtime Failures0
Timeout Failures0
Missing Pair Failures0

Cases

TestStatusError TypeOutput
concurrent-request/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] PASS

STDERR:

concurrent-request/race-test_grate.cSuccess
STDOUT:
pass

STDERR:

concurrent-request/thread_race_grate.cSuccess
STDOUT:
[thread_race] Registering handler for cage 2 in grate 1 with fn ptr addr: 3
[thread_race] PASS: 20 threads x 100000 calls returned 10
[thread_race] PASS

STDERR:

copy-data-between-cages/cp-stncpy_grate.cSuccess
STDOUT:
[cage] pathname addr=0xfffb6ff9
[cage] pathname='random'
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

copy-data-between-cages/cpdata_grate.cSuccess
STDOUT:
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

interposing-calls/fork-with-newret_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Cage] Forked process with PID: 10
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-exec_grate.cSuccess
STDOUT:
[Grate|interpose-exec] Registering exec handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
Exec successful, argv[1]: --execd
[Grate|interpose-exec] PASS

STDERR:

interposing-calls/interpose-exit_grate.cSuccess
STDOUT:
[Grate|interpose-exit] Registering exit handler for cage 2 in grate 1 with fn ptr addr: 3
Exiting...

[Grate|interpose-exit] PASS

STDERR:

interposing-calls/interpose-fork_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-mmap_grate.cSuccess
STDOUT:
[Grate|interpose-mmap] Registering mmap handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
mmap test: PASS
[Grate|interpose-mmap] PASS

STDERR:

interposing-calls/interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 4
[cage] registering 107. grateid: 2 cageid: 3
[Grate|interpose-register] Handling function ptr: 4 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|geteuid] Registering geteuid handler for cage 1 in grate 1 with fn ptr addr: 3
[Grate|interpose-register] Handling function ptr: 3 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|interpose-register] PASS

STDERR:

multi-register_grate.cSuccess
STDOUT:
[Grate|multi-register_grate] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 4
[Grate|multi-register_grate] Registering getuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|multi-register_grate] Handling function ptr: 4 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Grate|multi-register_grate] Handling function ptr: 3 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Cage | multi-register] PASS: geteuid=10, getuid=20
[Grate|multi-register] PASS

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 3 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 4 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:

simple-tests/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|geteuid] Handling function ptr: 3 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

simple-tests/mmap-flag_grate.cSuccess
STDOUT:
[Cage|mmap-flag] PASS
[Grate|mmap-flag] PASS

STDERR:

static harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases3
Number of Successes3
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Static Tests
fork_simple.cSuccessNone0.048158s4.475468s
Success
thread.cSuccessNone0.041276s4.472716s
Success
tls_test.cSuccessNone0.050976s4.480855s
Success
Fail Tests

Summary

MetricCount
Total Test Cases0
Number of Successes0
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases220
Number of Successes220
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
File Tests
chartests.cSuccessNone0.042743s0.126095s
Success
chdir_getcwd.cSuccessNone0.041685s0.100611s
Success
chmod.cSuccessNone0.046910s0.111446s
Success
clock_gettime_highlevel.cSuccessNone0.283194s0.173357s
Success
clock_gettime_simple.cSuccessNone0.038535s0.091225s
Success
cloexec.cSuccessNone0.045802s0.114485s
Success
close.cSuccessNone0.048259s0.115070s
Success
creat_access.cSuccessNone0.045504s0.101278s
Success
doubleclose.cSuccessNone0.039764s0.086913s
Success
dup.cSuccessNone0.039132s0.099650s
Success
dup2.cSuccessNone0.043965s0.100040s
Success
dup3.cSuccessNone0.041583s0.098593s
Success
dupwrite.cSuccessNone0.044765s0.099374s
Success
etc_conf.cSuccessNone0.039542s0.101488s
Success
faccessat.cSuccessNone0.041058s0.103414s
Success
fchdir.cSuccessNone0.046796s0.112766s
Success
fchmod.cSuccessNone0.046709s0.109528s
Success
fchmodat.cSuccessNone0.041369s0.101054s
Success
fcntl.cSuccessNone0.044358s0.115088s
Success
fcntl_dupfd.cSuccessNone0.038712s0.094516s
Success
fdatasync.cSuccessNone0.045116s0.096736s
Success
filetest.cSuccessNone0.043539s0.094773s
Success
filetest1000.cSuccessNone0.047467s0.103537s
Success
flock.cSuccessNone0.054035s0.138786s
Success
fstat.cSuccessNone0.045487s0.109942s
Success
fstatfs.cSuccessNone0.041902s0.095057s
Success
fsync.cSuccessNone0.044483s0.097766s
Success
ftruncate.cSuccessNone0.047681s0.186572s
Success
getcwd.cSuccessNone0.042209s0.093814s
Success
getcwd_null.cSuccessNone0.044270s0.104004s
Success
getpgid.cSuccessNone0.040242s0.089041s
Success
getrandom.cSuccessNone0.044858s0.111031s
Success
ioctl.cSuccessNone0.044688s0.104599s
Success
link.cSuccessNone0.048291s0.141534s
Success
locale_test.cSuccessNone0.056722s0.281588s
Success
lseek.cSuccessNone0.048550s0.170335s
Success
lstat.cSuccessNone0.047619s0.117618s
Success
mkdir_rmdir.cSuccessNone0.044736s0.102785s
Success
mkfifo_test.cSuccessNone0.049984s0.142122s
Success
mknod.cSuccessNone0.044750s0.110755s
Success
nocancel_io.cSuccessNone0.048368s0.121766s
Success
open.cSuccessNone0.040774s0.091025s
Success
openat.cSuccessNone0.041099s0.098673s
Success
path_conversion_safety.cSuccessNone0.047578s0.116375s
Success
ppoll.cSuccessNone0.048246s0.109897s
Success
pread_pwrite.cSuccessNone0.042169s0.105963s
Success
preadv_pwritev.cSuccessNone0.046570s0.116600s
Success
printf.cSuccessNone0.036757s0.084788s
Success
prlimit64.cSuccessNone0.038431s0.091541s
Success
read.cSuccessNone0.046644s0.111600s
Success
readbytes.cSuccessNone0.042393s0.094651s
Success
readdir_basic.cSuccessNone0.048310s0.128772s
Success
readlink.cSuccessNone0.043865s0.107219s
Success
readlinkat.cSuccessNone0.046502s0.110065s
Success
readv_writev_test.cSuccessNone0.046549s0.110660s
Success
rename.cSuccessNone0.048129s0.102722s
Success
renameat.cSuccessNone0.046815s0.116460s
Success
sc-writev.cSuccessNone0.043317s0.100570s
Success
stat.cSuccessNone0.044669s0.106757s
Success
statfs.cSuccessNone0.039500s0.092065s
Success
symlink.cSuccessNone0.046380s0.128793s
Success
sync_file_range.cSuccessNone0.043039s0.096818s
Success
timespec_time_t_compat.cSuccessNone0.042468s0.092641s
Success
trailing_slash.cSuccessNone0.043785s0.104768s
Success
truncate.cSuccessNone0.046030s0.117505s
Success
unlink.cSuccessNone0.047091s0.132343s
Success
unlinkat.cSuccessNone0.045287s0.115112s
Success
utimensat.cSuccessNone0.044625s0.119548s
Success
write.cSuccessNone0.039854s0.086144s
Success
writeloop.cSuccessNone0.047463s0.102620s
Success
writepartial.cSuccessNone0.044988s0.093502s
Success
writev.cSuccessNone0.047072s0.109034s
Success
Math Tests
math_link_smoke.cSuccessNone0.048672s0.092766s
Success
math_tests.cSuccessNone0.054491s0.119340s
Success
printf_float.cSuccessNone0.048483s0.115893s
Success
Memory Tests
brk.cSuccessNone0.043069s0.095049s
Success
fork_large_memory.cSuccessNone0.073220s0.345750s
Success
malloc.cSuccessNone0.041228s0.086743s
Success
malloc_large.cSuccessNone0.042186s0.087654s
Success
memcpy.cSuccessNone0.041463s0.088674s
Success
memory_error_test.cSuccessNone0.046291s0.118453s
Success
mmap.cSuccessNone0.038776s0.090256s
Success
mmap_aligned.cSuccessNone0.040661s0.102109s
Success
mmap_complicated.cSuccessNone0.045265s0.109912s
Success
mmap_file.cSuccessNone0.044946s0.102013s
Success
mmap_shared.cSuccessNone0.044681s0.109034s
Success
mmaptest.cSuccessNone0.040759s0.093661s
Success
mprotect.cSuccessNone0.039303s0.090952s
Success
mprotect_boundary.cSuccessNone0.040338s0.101429s
Success
mprotect_end_region.cSuccessNone0.039189s0.096194s
Success
mprotect_middle_region.cSuccessNone0.039052s0.095607s
Success
mprotect_multiple_times.cSuccessNone0.039175s0.097520s
Success
mprotect_same_value.cSuccessNone0.039549s0.094187s
Success
mprotect_spanning_regions.cSuccessNone0.040932s0.111220s
Success
munmap_adjacent_shm.cSuccessNone0.041954s0.110264s
Success
sbrk.cSuccessNone0.041378s0.091062s
Success
segfault.cSuccessNone0.045764s0.121239s
Success
shm.cSuccessNone0.044288s0.112875s
Success
shmtest.cSuccessNone0.040844s0.094969s
Success
thread_malloc_sequential.cSuccessNone0.047266s0.139020s
Success
vtable.cSuccessNone0.049592s0.104922s
Success
Networking Tests
accept4.cSuccessNone0.050143s0.118963s
Success
dns_resolve_test.cSuccessNone0.043059s0.100550s
Success
dnstest.cSuccessNone0.045868s0.103651s
Success
epoll_badfd.cSuccessNone0.039579s0.089390s
Success
epoll_edge_triggered.cSuccessNone0.201660s0.354460s
Success
epollcreate1.cSuccessNone0.045854s0.110955s
Success
error_handling_net.cSuccessNone0.051765s0.167767s
Success
getaddrinfo_test.cSuccessNone0.047656s0.133337s
Success
getaddrinfo_unspec.cSuccessNone0.076922s0.165422s
Success
gethostname.cSuccessNone0.040313s0.088020s
Success
getifaddrs.cSuccessNone0.046568s0.104689s
Success
getsockname.cSuccessNone0.049041s0.103735s
Success
getsockopt.cSuccessNone0.048077s0.136574s
Success
ipv6_basic.cSuccessNone0.048949s0.135104s
Success
makepipe.cSuccessNone0.039382s0.086172s
Success
nonblocking_eagain.cSuccessNone0.048823s0.142466s
Success
pipe.cSuccessNone0.048077s0.110654s
Success
pipe2.cSuccessNone0.045842s0.102838s
Success
pipeinput.cSuccessNone0.048601s0.127296s
Success
pipeinput2.cSuccessNone0.048778s0.131029s
Success
pipeonestring.cSuccessNone0.047854s0.125647s
Success
pipepong.cSuccessNone0.048050s0.131257s
Success
pipewrite.cSuccessNone0.042652s0.098744s
Success
poll.cSuccessNone0.045317s0.097131s
Success
recvfrom-sendto.cSuccessNone0.047621s0.110114s
Success
sendmsg_recvmsg_test.cSuccessNone0.047241s0.115730s
Success
serverclient.cSuccessNone0.045429s0.110340s
Success
shutdown.cSuccessNone0.047167s0.112058s
Success
shutdown_fork.cSuccessNone0.046008s0.117128s
Success
simple-select.cSuccessNone0.046945s0.124682s
Success
simple_epoll.cSuccessNone0.045742s0.104478s
Success
socket.cSuccessNone0.044743s0.100924s
Success
socket_cloexec.cSuccessNone0.044774s0.097924s
Success
socket_options_advanced.cSuccessNone0.049950s0.150624s
Success
socketepoll.cSuccessNone0.046050s0.101370s
Success
socketpair.cSuccessNone0.044080s0.110816s
Success
socketselect.cSuccessNone0.044961s0.104209s
Success
udp_send_recv.cSuccessNone0.151666s0.246055s
Success
uds-getsockname.cSuccessNone0.044979s0.099266s
Success
uds-nb-select.cSuccessNone2.054274s2.158057s
Success
uds-serverclient.cSuccessNone0.047903s0.129800s
Success
uds-socketselect.cSuccessNone0.045480s0.109878s
Success
uds_listen_poll.cSuccessNone1.050874s1.139653s
Success
writev_socket.cSuccessNone0.048258s0.135936s
Success
Process Tests
barrier_test.cSuccessNone0.045431s0.109365s
Success
chain_thread.cSuccessNone1.045877s1.114036s
Success
ctor_syscall_test.cSuccessNone0.038313s0.089700s
Success
cxa_atexit_test.cSuccessNone0.043575s0.094426s
Success
exec_non_utf8.cSuccessNone0.043145s0.096631s
Success
execve_shebang.cSuccessNone0.044836s0.098844s
Success
exit.cSuccessNone0.043942s0.093682s
Success
exit_failure.cSuccessNone0.044385s0.105714s
Success
exit_group_thread.cSuccessNone0.047959s0.118992s
Success
exit_status_first_wins.cSuccessNone0.048271s0.118406s
Success
flockfile_test.cSuccessNone0.045040s0.115176s
Success
fork2malloc.cSuccessNone0.046372s0.113117s
Success
fork_select.cSuccessNone0.044172s0.115106s
Success
fork_simple.cSuccessNone0.044001s0.104337s
Success
fork_syscall.cSuccessNone0.048674s0.360640s
Success
fork_tls_ctype.cSuccessNone0.048433s0.130989s
Success
forkandopen.cSuccessNone0.046774s0.122136s
Success
forkdup.cSuccessNone0.049683s0.113863s
Success
forkexecuid.cSuccessNone0.044315s0.118976s
Success
forkexecv-arg.cSuccessNone0.044331s0.110559s
Success
forkexecv.cSuccessNone0.043456s0.105319s
Success
forkfiles.cSuccessNone0.045010s0.112534s
Success
forkmalloc.cSuccessNone0.046304s0.104655s
Success
forknodup.cSuccessNone0.047282s0.120538s
Success
function-ptr.cSuccessNone0.041252s0.091351s
Success
getegid_syscall.cSuccessNone0.046606s0.299364s
Success
getgid_syscall.cSuccessNone0.047547s0.305634s
Success
getpid.cSuccessNone0.039485s0.087192s
Success
getpid_syscall.cSuccessNone0.048531s0.310045s
Success
getppid.cSuccessNone0.047337s0.108753s
Success
getppid_syscall.cSuccessNone0.048361s0.250636s
Success
getuid.cSuccessNone0.045594s0.097906s
Success
getuid_syscall.cSuccessNone0.045513s0.172955s
Success
hello-arg.cSuccessNone0.038882s0.091495s
Success
hello.cSuccessNone0.038720s0.087479s
Success
longjmp.cSuccessNone0.037938s0.091712s
Success
mutex.cSuccessNone2.047959s2.107642s
Success
printf_deadlock_smoke.cSuccessNone0.051483s0.135487s
Success
printf_thread_test.cSuccessNone0.044024s0.114193s
Success
sem_forks.cSuccessNone0.048589s0.135751s
Success
setsid.cSuccessNone0.039186s0.087839s
Success
template.cSuccessNone0.044559s0.131683s
Success
test_exec_nofork.cSuccessNone0.044210s0.106679s
Success
test_unlink_open_file.cSuccessNone0.041894s0.090646s
Success
thread-guard.cSuccessNone0.043797s0.106547s
Success
thread-test.cSuccessNone0.040787s0.097445s
Success
thread.cSuccessNone0.041488s0.097870s
Success
thread_cageid_race.cSuccessNone0.041818s0.154526s
Success
tls_test.cSuccessNone0.045318s0.113689s
Success
uname.cSuccessNone0.039446s0.090974s
Success
wait.cSuccessNone0.042355s0.111733s
Success
waitpid_anychild.cSuccessNone0.047739s0.110392s
Success
waitpid_syscall.cSuccessNone1.045756s1.163435s
Success
waitpid_wnohang.cSuccessNone0.046798s0.111065s
Success
Signal Tests
alarm.cSuccessNone7.044549s7.116833s
Success
eintr_fork_signal.cSuccessNone1.047578s1.124327s
Success
kill.cSuccessNone1.045231s1.111223s
Success
setitimer.cSuccessNone7.045998s7.137901s
Success
sigalrm.cSuccessNone2.046132s2.119153s
Success
sigaltstack.cSuccessNone0.048361s0.107998s
Success
sigchld.cSuccessNone1.047638s1.108075s
Success
signal-fork.cSuccessNone4.047470s4.109040s
Success
signal-simple.cSuccessNone0.046961s0.100457s
Success
signal_SIGCHLD.cSuccessNone0.044874s0.116110s
Success
signal_fork.cSuccessNone0.042766s0.113432s
Success
signal_int_ignored.cSuccessNone2.046088s2.110883s
Success
signal_kill_cleanup.cSuccessNone1.043694s1.107087s
Success
signal_procmask.cSuccessNone0.040949s0.098743s
Success
signal_read_interrupt.cSuccessNone0.549045s0.616039s
Success
signal_recursive.cSuccessNone0.040310s0.102142s
Success
signal_sa_mask.cSuccessNone0.040122s0.095192s
Success
signal_select_interrupt.cSuccessNone0.549040s0.617563s
Success
signal_write_interrupt.cSuccessNone1.048706s1.118754s
Success
sigpipe.cSuccessNone1.046749s1.120217s
Success
sigprocmask.cSuccessNone1.046275s1.103525s
Success
Fail Tests

Summary

MetricCount
Total Test Cases4
Number of Successes4
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Dylink Tests
dlerror.cSuccessNone0.037972s0.089358s
Success
Memory Tests
mmap-negative1.cSuccessNone0.091002s0.098040s
Success
mmap-negative2.cSuccessNone0.087742s0.119987s
Success
Signal Tests
signal_resethand.cSuccessNone1.045469s1.110113s
Success

C++ harness

Summary

MetricValue
Total1
Success1
Failures0
Compile failures0
Runtime failures0
Output mismatch0
Timeouts0

Cases

TestStatusError typeNative timeWasm timeOutput
tests/unit-tests/cpp/sort.cppSuccess0.607436s10.263499s
LIBCPP_SORT_OK 1 2 3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants