Skip to content

Add ISO-003 cross-cage vmmap escape tests - #1333

Merged
Yaxuan-w merged 2 commits into
mainfrom
iso-003-vmmap-escape-test
Aug 3, 2026
Merged

Yaxuan-w merged 2 commits into
mainfrom
iso-003-vmmap-escape-test

Conversation

@lionne99

Copy link
Copy Markdown
Contributor

Adds ISO-003 tests to verify that invalid memory ranges cannot escape the cage memory boundaries.

Changes
Added cross_cage_vmmap_escape.c unit test:

  • Verifies that writing from a fully unmapped region returns EFAULT
  • Verifies that writing across a mapped/unmapped page boundary is rejected
  • Verifies that extremely large lengths that could overflow range calculations are rejected
  • Uses a pipe canary check to ensure failed writes do not partially modify the destination

Added vmmap unit tests:

  • Added coverage for rejecting address range calculations with overflowing lengths
  • Added coverage for calculate_page_range returning None when the requested range overflows

@lionne99
lionne99 force-pushed the iso-003-vmmap-escape-test branch from 7b643a2 to af2499e Compare July 27, 2026 20:40
@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/copy-handler-table_grate.cSuccess
STDOUT:
[Grate|copy-handler-table] Registering geteuid handler for cage 2 in grate 1
[Grate|copy-handler-table] geteuid handler invoked for cage 1
[Grate|copy-handler-table] geteuid handler invoked for cage 1
[Cage|copy-handler-table] PASS: child inherited handler, then overwrite changed geteuid to 0
[Cage|copy-handler-table] PASS: parent=123 child_exit=0
[Grate|copy-handler-table] 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:

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.055657s4.051728s
Success
thread.cSuccessNone0.046642s4.158060s
Success
tls_test.cSuccessNone0.053124s4.138353s
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 Cases237
Number of Successes237
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
basic.cSuccessNone0.048353s0.132055s
Success
dlopen_fork.cSuccessNone0.055313s0.165676s
Success
dlopen_thread.cSuccessNone0.058750s0.156410s
Success
double_fork_dlopen.cSuccessNone0.057795s0.221412s
Success
fork_dlopen.cSuccessNone0.051519s0.147333s
Success
longjmp_dlopen.cSuccessNone0.049804s0.146726s
Success
rdynamic_main.cSuccessNone0.054381s0.153914s
Success
File Tests
chartests.cSuccessNone0.047171s0.148160s
Success
chdir_getcwd.cSuccessNone0.048377s0.121311s
Success
chmod.cSuccessNone0.054083s0.131324s
Success
clock_gettime_highlevel.cSuccessNone0.118549s0.181461s
Success
clock_gettime_simple.cSuccessNone0.042427s0.104599s
Success
cloexec.cSuccessNone0.051257s0.142707s
Success
close.cSuccessNone0.060777s0.149497s
Success
copy_file_range.cSuccessNone0.052389s0.143882s
Success
creat_access.cSuccessNone0.051219s0.118787s
Success
cross_cage_fd_bruteforce.cSuccessNone0.052829s0.202946s
Success
doubleclose.cSuccessNone0.043766s0.104889s
Success
dup.cSuccessNone0.043967s0.122217s
Success
dup2.cSuccessNone0.050281s0.114467s
Success
dup3.cSuccessNone0.048375s0.116941s
Success
dupwrite.cSuccessNone0.051447s0.117202s
Success
etc_conf.cSuccessNone0.046367s0.120707s
Success
faccessat.cSuccessNone0.047757s0.119851s
Success
fchdir.cSuccessNone0.054141s0.132585s
Success
fchmod.cSuccessNone0.055315s0.132002s
Success
fchmodat.cSuccessNone0.047173s0.116321s
Success
fcntl.cSuccessNone0.051208s0.133067s
Success
fcntl_dupfd.cSuccessNone0.045629s0.113519s
Success
fdatasync.cSuccessNone0.050375s0.114450s
Success
filetest.cSuccessNone0.050097s0.113104s
Success
filetest1000.cSuccessNone0.058353s0.126754s
Success
flock.cSuccessNone0.064171s0.168509s
Success
fstat.cSuccessNone0.052807s0.131984s
Success
fstatfs.cSuccessNone0.045850s0.115056s
Success
fsync.cSuccessNone0.051655s0.113054s
Success
ftruncate.cSuccessNone0.055285s0.208712s
Success
getcwd.cSuccessNone0.047238s0.112453s
Success
getcwd_null.cSuccessNone0.051574s0.124206s
Success
getpgid.cSuccessNone0.044495s0.108601s
Success
getrandom.cSuccessNone0.050556s0.128789s
Success
ioctl.cSuccessNone0.056600s0.122530s
Success
link.cSuccessNone0.055233s0.159369s
Success
locale_test.cSuccessNone0.064723s0.314148s
Success
lseek.cSuccessNone0.055750s0.202960s
Success
lstat.cSuccessNone0.054882s0.140609s
Success
mkdir_rmdir.cSuccessNone0.051425s0.126462s
Success
mkfifo_test.cSuccessNone0.056647s0.178435s
Success
mknod.cSuccessNone0.049612s0.129791s
Success
nocancel_io.cSuccessNone0.054521s0.146952s
Success
open.cSuccessNone0.045367s0.106689s
Success
openat.cSuccessNone0.046225s0.113717s
Success
path_conversion_safety.cSuccessNone0.055683s0.139019s
Success
ppoll.cSuccessNone0.055802s0.134301s
Success
pread_pwrite.cSuccessNone0.048536s0.123118s
Success
preadv_pwritev.cSuccessNone0.053540s0.139285s
Success
printf.cSuccessNone0.042367s0.100575s
Success
prlimit64.cSuccessNone0.044961s0.107662s
Success
read.cSuccessNone0.051879s0.128813s
Success
readbytes.cSuccessNone0.048767s0.120923s
Success
readdir_basic.cSuccessNone0.056016s0.150462s
Success
readlink.cSuccessNone0.051530s0.124595s
Success
readlinkat.cSuccessNone0.052924s0.127825s
Success
readv_writev_test.cSuccessNone0.053327s0.131981s
Success
rename.cSuccessNone0.053541s0.123026s
Success
renameat.cSuccessNone0.054398s0.136039s
Success
sc-writev.cSuccessNone0.050112s0.117984s
Success
stat.cSuccessNone0.052372s0.130884s
Success
statfs.cSuccessNone0.047903s0.111403s
Success
symlink.cSuccessNone0.054167s0.155742s
Success
sync_file_range.cSuccessNone0.049459s0.113601s
Success
timespec_time_t_compat.cSuccessNone0.048049s0.111756s
Success
trailing_slash.cSuccessNone0.049688s0.126297s
Success
truncate.cSuccessNone0.052568s0.144895s
Success
unlink.cSuccessNone0.053616s0.155944s
Success
unlinkat.cSuccessNone0.053767s0.139544s
Success
utimensat.cSuccessNone0.050333s0.136945s
Success
write.cSuccessNone0.044713s0.101061s
Success
writeloop.cSuccessNone0.054248s0.120553s
Success
writepartial.cSuccessNone0.052513s0.113302s
Success
writev.cSuccessNone0.053312s0.127039s
Success
Math Tests
math_link_smoke.cSuccessNone0.056717s0.115841s
Success
math_tests.cSuccessNone0.060606s0.143851s
Success
printf_float.cSuccessNone0.059607s0.136071s
Success
Memory Tests
brk.cSuccessNone0.051993s0.123788s
Success
cross_cage_vmmap_escape.cSuccessNone0.053894s0.141386s
Success
fork_large_memory.cSuccessNone0.082926s0.490752s
Success
malloc.cSuccessNone0.080012s0.147348s
Success
malloc_large.cSuccessNone0.050161s0.105468s
Success
memcpy.cSuccessNone0.046878s0.234476s
Success
memory_error_test.cSuccessNone0.054784s0.140097s
Success
mmap.cSuccessNone0.046319s0.106809s
Success
mmap_address_truncation.cSuccessNone0.049950s0.113323s
Success
mmap_aligned.cSuccessNone0.047382s0.130003s
Success
mmap_complicated.cSuccessNone0.069151s0.201092s
Success
mmap_file.cSuccessNone0.052434s0.124658s
Success
mmap_shared.cSuccessNone0.058971s0.151037s
Success
mmaptest.cSuccessNone0.046906s0.115058s
Success
mprotect.cSuccessNone0.054447s0.110905s
Success
mprotect_boundary.cSuccessNone0.072062s0.230812s
Success
mprotect_end_region.cSuccessNone0.048051s0.127785s
Success
mprotect_middle_region.cSuccessNone0.045416s0.113966s
Success
mprotect_multiple_times.cSuccessNone0.095884s0.228150s
Success
mprotect_same_value.cSuccessNone0.045534s0.111873s
Success
mprotect_spanning_regions.cSuccessNone0.057995s0.138869s
Success
munmap_adjacent_shm.cSuccessNone0.048540s0.133193s
Success
sbrk.cSuccessNone0.049105s0.112365s
Success
segfault.cSuccessNone0.056297s0.172240s
Success
shm.cSuccessNone0.075956s0.245644s
Success
shmtest.cSuccessNone0.050938s0.122802s
Success
thread_malloc_sequential.cSuccessNone0.077431s0.302325s
Success
vtable.cSuccessNone0.061709s0.132922s
Success
Networking Tests
accept4.cSuccessNone0.058930s0.135770s
Success
dns_resolve_test.cSuccessNone0.052777s0.121115s
Success
dnstest.cSuccessNone0.053045s0.118262s
Success
epoll_badfd.cSuccessNone0.046498s0.112471s
Success
epoll_edge_triggered.cSuccessNone0.210750s0.384042s
Success
epollcreate1.cSuccessNone0.051953s0.130012s
Success
error_handling_net.cSuccessNone0.063103s0.198401s
Success
getaddrinfo_test.cSuccessNone0.056665s0.157648s
Success
getaddrinfo_unspec.cSuccessNone0.059573s0.132280s
Success
gethostname.cSuccessNone0.045463s0.102832s
Success
getifaddrs.cSuccessNone0.055339s0.128619s
Success
getsockname.cSuccessNone0.054055s0.124108s
Success
getsockopt.cSuccessNone0.056558s0.160061s
Success
ipv6_basic.cSuccessNone0.057227s0.160880s
Success
makepipe.cSuccessNone0.045269s0.107537s
Success
nonblocking_eagain.cSuccessNone0.055602s0.167244s
Success
pipe.cSuccessNone0.054719s0.129399s
Success
pipe2.cSuccessNone0.054507s0.121902s
Success
pipeinput.cSuccessNone0.056619s0.166633s
Success
pipeinput2.cSuccessNone0.056361s0.167861s
Success
pipeonestring.cSuccessNone0.057998s0.163405s
Success
pipepong.cSuccessNone0.053845s0.163680s
Success
pipewrite.cSuccessNone0.048454s0.123354s
Success
poll.cSuccessNone0.053378s0.116008s
Success
recvfrom-sendto.cSuccessNone0.054783s0.134008s
Success
sendmsg_recvmsg_test.cSuccessNone0.053951s0.130966s
Success
serverclient.cSuccessNone0.054038s0.135747s
Success
shutdown.cSuccessNone0.053677s0.131884s
Success
shutdown_fork.cSuccessNone0.054661s0.152864s
Success
simple-select.cSuccessNone0.055391s0.162469s
Success
simple_epoll.cSuccessNone0.051794s0.124961s
Success
socket.cSuccessNone0.052463s0.117229s
Success
socket_cloexec.cSuccessNone0.050757s0.113190s
Success
socket_options_advanced.cSuccessNone0.058850s0.174891s
Success
socketepoll.cSuccessNone0.050070s0.116986s
Success
socketpair.cSuccessNone0.051961s0.140087s
Success
socketselect.cSuccessNone0.051772s0.131933s
Success
udp_send_recv.cSuccessNone0.161046s0.277912s
Success
uds-getsockname.cSuccessNone0.052472s0.122750s
Success
uds-nb-select.cSuccessNone2.067686s2.191968s
Success
uds-serverclient.cSuccessNone0.056707s0.163285s
Success
uds-socketselect.cSuccessNone0.054081s0.133327s
Success
uds_listen_poll.cSuccessNone1.060264s1.172660s
Success
writev_socket.cSuccessNone0.056518s0.159947s
Success
Process Tests
barrier_test.cSuccessNone0.051502s0.153900s
Success
chain_thread.cSuccessNone1.055242s1.151273s
Success
ctor_syscall_test.cSuccessNone0.043476s0.108827s
Success
cxa_atexit_test.cSuccessNone0.046818s0.109680s
Success
exec_non_utf8.cSuccessNone0.054525s0.125983s
Success
execve_shebang.cSuccessNone0.052006s0.120869s
Success
exit.cSuccessNone0.050214s0.110126s
Success
exit_failure.cSuccessNone0.050777s0.133695s
Success
exit_group_thread.cSuccessNone0.053150s0.159964s
Success
exit_status_first_wins.cSuccessNone0.053769s0.164435s
Success
flockfile_test.cSuccessNone0.051898s0.150543s
Success
fork2malloc.cSuccessNone0.053895s0.144232s
Success
fork_select.cSuccessNone0.049871s0.157186s
Success
fork_simple.cSuccessNone0.051576s0.135264s
Success
fork_syscall.cSuccessNone0.056787s0.642026s
Success
fork_tls_ctype.cSuccessNone0.054807s0.160493s
Success
forkandopen.cSuccessNone0.053742s0.153523s
Success
forkdup.cSuccessNone0.054429s0.147533s
Success
forkexecuid.cSuccessNone0.050433s0.166694s
Success
forkexecv-arg.cSuccessNone0.053750s0.164045s
Success
forkexecv.cSuccessNone0.048884s0.146690s
Success
forkfiles.cSuccessNone0.053868s0.157716s
Success
forkmalloc.cSuccessNone0.052107s0.143088s
Success
forknodup.cSuccessNone0.051921s0.148469s
Success
function-ptr.cSuccessNone0.048011s0.114221s
Success
getegid_syscall.cSuccessNone0.051958s0.471793s
Success
getgid_syscall.cSuccessNone0.055677s0.506902s
Success
getpid.cSuccessNone0.046002s0.112966s
Success
getpid_syscall.cSuccessNone0.055280s0.499118s
Success
getppid.cSuccessNone0.052568s0.137599s
Success
getppid_syscall.cSuccessNone0.057801s0.416580s
Success
getuid.cSuccessNone0.052958s0.114171s
Success
getuid_syscall.cSuccessNone0.050387s0.253946s
Success
hello-arg.cSuccessNone0.044344s0.120115s
Success
hello.cSuccessNone0.043024s0.103710s
Success
longjmp.cSuccessNone0.042433s0.110207s
Success
mutex.cSuccessNone2.055289s2.138113s
Success
printf_deadlock_smoke.cSuccessNone0.062065s0.177138s
Success
printf_thread_test.cSuccessNone0.053037s0.148530s
Success
sem_forks.cSuccessNone0.056313s0.190613s
Success
sem_slow_path.cSuccessNone1.055551s1.151232s
Success
setjmp_edge.cSuccessNone0.048863s0.207686s
Success
setsid.cSuccessNone0.046425s0.105763s
Success
template.cSuccessNone0.051266s0.191217s
Success
test_crossmodule_longjmp.cSuccessNone0.053599s0.156257s
Success
test_exec_nofork.cSuccessNone0.053118s0.145756s
Success
test_unlink_open_file.cSuccessNone0.047434s0.111453s
Success
thread-guard.cSuccessNone0.049769s0.135898s
Success
thread-test.cSuccessNone0.047507s0.121730s
Success
thread.cSuccessNone0.046234s0.121476s
Success
thread_cageid_race.cSuccessNone0.050428s0.289199s
Success
tls_test.cSuccessNone0.050412s0.170327s
Success
uname.cSuccessNone0.044338s0.105844s
Success
wait.cSuccessNone0.051268s0.168372s
Success
waitpid_anychild.cSuccessNone0.053044s0.152027s
Success
waitpid_syscall.cSuccessNone1.054943s1.242719s
Success
waitpid_wnohang.cSuccessNone0.055159s0.150509s
Success
Signal Tests
alarm.cSuccessNone7.051143s7.153223s
Success
eintr_fork_signal.cSuccessNone1.054302s1.158310s
Success
kill.cSuccessNone1.052412s1.146142s
Success
pause_test.cSuccessNone1.051873s1.145870s
Success
setitimer.cSuccessNone7.051186s7.161525s
Success
sigalrm.cSuccessNone2.063055s2.137155s
Success
sigaltstack.cSuccessNone0.054197s0.129389s
Success
sigchld.cSuccessNone1.052147s1.141148s
Success
signal-fork.cSuccessNone4.052052s4.134711s
Success
signal-simple.cSuccessNone0.056390s0.128916s
Success
signal_SIGCHLD.cSuccessNone0.049531s0.143979s
Success
signal_fork.cSuccessNone0.047113s0.144277s
Success
signal_int_ignored.cSuccessNone2.051637s2.140924s
Success
signal_kill_cleanup.cSuccessNone1.050203s1.135121s
Success
signal_procmask.cSuccessNone0.045683s0.119711s
Success
signal_read_interrupt.cSuccessNone0.554736s0.642056s
Success
signal_recursive.cSuccessNone0.046641s0.124427s
Success
signal_sa_mask.cSuccessNone0.054816s0.165757s
Success
signal_select_interrupt.cSuccessNone0.555542s0.650291s
Success
signal_write_interrupt.cSuccessNone1.055765s1.137354s
Success
sigpipe.cSuccessNone1.053358s1.148651s
Success
sigprocmask.cSuccessNone1.052844s1.124973s
Success
sigsuspend_test.cSuccessNone1.048857s1.148050s
Success
test_sigsetjmp.cSuccessNone0.052233s0.151966s
Success

Fail Tests

Summary

MetricCount
Total Test Cases6
Number of Successes6
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.045713s0.114005s
Success
Memory Tests
invalid_access_direct.cSuccessNone0.115461s0.133435s
Success
invalid_access_fork.cSuccessNone0.142914s0.151832s
Success
mmap-negative1.cSuccessNone0.161143s0.209910s
Success
mmap-negative2.cSuccessNone0.154395s0.173933s
Success
Signal Tests
signal_resethand.cSuccessNone1.068117s1.163307s
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.427487s8.793418s
LIBCPP_SORT_OK 1 2 3

@Yaxuan-w Yaxuan-w left a comment

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.

Thanks for the PR! The tests are well-designed overall. Few things:

  1. Worth also testing read(fd, bad_buf, len) = host (writing into cage memory).
  2. Worth documenting in a comment: Test 2/3 assume native Linux returns a full EFAULT (rather than a POSIX-permitted partial write) for a straddling buffer on a pipe. Not all kernel has same behavior on this case

Comment thread src/cage/src/memory/vmmap.rs Outdated
Comment on lines +2509 to +2510
let mut vmmap = Vmmap::new();
vmmap.set_base_address(0);

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.

Can we use test_vmmap() here?

Comment thread tests/unit-tests/memory_tests/deterministic/vmmap_escape.c
@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/copy-handler-table_grate.cSuccess
STDOUT:
[Grate|copy-handler-table] Registering geteuid handler for cage 2 in grate 1
[Grate|copy-handler-table] geteuid handler invoked for cage 1
[Grate|copy-handler-table] geteuid handler invoked for cage 1
[Cage|copy-handler-table] PASS: child inherited handler, then overwrite changed geteuid to 0
[Cage|copy-handler-table] PASS: parent=123 child_exit=0
[Grate|copy-handler-table] 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:

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.058304s4.103663s
Success
thread.cSuccessNone0.047584s4.142624s
Success
tls_test.cSuccessNone0.051522s4.175502s
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 Cases237
Number of Successes237
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
basic.cSuccessNone0.049472s0.129596s
Success
dlopen_fork.cSuccessNone0.052620s0.154890s
Success
dlopen_thread.cSuccessNone0.051600s0.145870s
Success
double_fork_dlopen.cSuccessNone0.055766s0.195500s
Success
fork_dlopen.cSuccessNone0.050386s0.153208s
Success
longjmp_dlopen.cSuccessNone0.048356s0.136899s
Success
rdynamic_main.cSuccessNone0.050667s0.147760s
Success
File Tests
chartests.cSuccessNone0.049262s0.148238s
Success
chdir_getcwd.cSuccessNone0.049685s0.125226s
Success
chmod.cSuccessNone0.055350s0.139789s
Success
clock_gettime_highlevel.cSuccessNone0.122363s0.173473s
Success
clock_gettime_simple.cSuccessNone0.043051s0.109233s
Success
cloexec.cSuccessNone0.053522s0.150216s
Success
close.cSuccessNone0.062274s0.145910s
Success
copy_file_range.cSuccessNone0.051854s0.144399s
Success
creat_access.cSuccessNone0.053506s0.122171s
Success
cross_cage_fd_bruteforce.cSuccessNone0.054249s0.191784s
Success
doubleclose.cSuccessNone0.044987s0.106360s
Success
dup.cSuccessNone0.044622s0.124425s
Success
dup2.cSuccessNone0.051106s0.117129s
Success
dup3.cSuccessNone0.049179s0.125471s
Success
dupwrite.cSuccessNone0.053062s0.125395s
Success
etc_conf.cSuccessNone0.046866s0.121961s
Success
faccessat.cSuccessNone0.049177s0.123159s
Success
fchdir.cSuccessNone0.055026s0.137051s
Success
fchmod.cSuccessNone0.053766s0.140974s
Success
fchmodat.cSuccessNone0.047692s0.123514s
Success
fcntl.cSuccessNone0.052984s0.140561s
Success
fcntl_dupfd.cSuccessNone0.046535s0.116895s
Success
fdatasync.cSuccessNone0.055458s0.119838s
Success
filetest.cSuccessNone0.051790s0.119750s
Success
filetest1000.cSuccessNone0.061177s0.131094s
Success
flock.cSuccessNone0.068636s0.175742s
Success
fstat.cSuccessNone0.052781s0.135694s
Success
fstatfs.cSuccessNone0.046859s0.113851s
Success
fsync.cSuccessNone0.050857s0.119216s
Success
ftruncate.cSuccessNone0.057600s0.215571s
Success
getcwd.cSuccessNone0.048963s0.111683s
Success
getcwd_null.cSuccessNone0.055417s0.131983s
Success
getpgid.cSuccessNone0.045895s0.112549s
Success
getrandom.cSuccessNone0.052106s0.130107s
Success
ioctl.cSuccessNone0.056119s0.123331s
Success
link.cSuccessNone0.056787s0.167938s
Success
locale_test.cSuccessNone0.065780s0.322404s
Success
lseek.cSuccessNone0.058890s0.197309s
Success
lstat.cSuccessNone0.056828s0.142922s
Success
mkdir_rmdir.cSuccessNone0.053630s0.134926s
Success
mkfifo_test.cSuccessNone0.059572s0.185788s
Success
mknod.cSuccessNone0.050588s0.130186s
Success
nocancel_io.cSuccessNone0.057232s0.149928s
Success
open.cSuccessNone0.047252s0.108649s
Success
openat.cSuccessNone0.047921s0.117049s
Success
path_conversion_safety.cSuccessNone0.057491s0.140421s
Success
ppoll.cSuccessNone0.058707s0.129611s
Success
pread_pwrite.cSuccessNone0.050405s0.124588s
Success
preadv_pwritev.cSuccessNone0.057025s0.142757s
Success
printf.cSuccessNone0.045767s0.109778s
Success
prlimit64.cSuccessNone0.046517s0.111567s
Success
read.cSuccessNone0.054312s0.132949s
Success
readbytes.cSuccessNone0.049849s0.116914s
Success
readdir_basic.cSuccessNone0.061343s0.158431s
Success
readlink.cSuccessNone0.052381s0.125907s
Success
readlinkat.cSuccessNone0.054155s0.131529s
Success
readv_writev_test.cSuccessNone0.056451s0.134172s
Success
rename.cSuccessNone0.054731s0.122915s
Success
renameat.cSuccessNone0.055746s0.137064s
Success
sc-writev.cSuccessNone0.051954s0.121305s
Success
stat.cSuccessNone0.053428s0.136218s
Success
statfs.cSuccessNone0.047335s0.112134s
Success
symlink.cSuccessNone0.056956s0.152821s
Success
sync_file_range.cSuccessNone0.050514s0.118461s
Success
timespec_time_t_compat.cSuccessNone0.049380s0.120516s
Success
trailing_slash.cSuccessNone0.050973s0.128188s
Success
truncate.cSuccessNone0.053901s0.141747s
Success
unlink.cSuccessNone0.056560s0.157397s
Success
unlinkat.cSuccessNone0.056249s0.150425s
Success
utimensat.cSuccessNone0.052228s0.137256s
Success
write.cSuccessNone0.045832s0.109536s
Success
writeloop.cSuccessNone0.058591s0.124628s
Success
writepartial.cSuccessNone0.054746s0.118005s
Success
writev.cSuccessNone0.056763s0.129968s
Success
Math Tests
math_link_smoke.cSuccessNone0.058426s0.123410s
Success
math_tests.cSuccessNone0.060152s0.143006s
Success
printf_float.cSuccessNone0.056341s0.149165s
Success
Memory Tests
brk.cSuccessNone0.051398s0.115965s
Success
fork_large_memory.cSuccessNone0.147569s0.529235s
Success
malloc.cSuccessNone0.052333s0.111868s
Success
malloc_large.cSuccessNone0.049814s0.109899s
Success
memcpy.cSuccessNone0.050611s0.122675s
Success
memory_error_test.cSuccessNone0.057640s0.145757s
Success
mmap.cSuccessNone0.046740s0.111177s
Success
mmap_address_truncation.cSuccessNone0.046298s0.108988s
Success
mmap_aligned.cSuccessNone0.047247s0.172836s
Success
mmap_complicated.cSuccessNone0.053461s0.165110s
Success
mmap_file.cSuccessNone0.056633s0.141079s
Success
mmap_shared.cSuccessNone0.055673s0.155028s
Success
mmaptest.cSuccessNone0.046704s0.111921s
Success
mprotect.cSuccessNone0.047105s0.115331s
Success
mprotect_boundary.cSuccessNone0.066485s0.207531s
Success
mprotect_end_region.cSuccessNone0.048310s0.115476s
Success
mprotect_middle_region.cSuccessNone0.046200s0.123144s
Success
mprotect_multiple_times.cSuccessNone0.074884s0.171376s
Success
mprotect_same_value.cSuccessNone0.048817s0.115014s
Success
mprotect_spanning_regions.cSuccessNone0.085271s0.261458s
Success
munmap_adjacent_shm.cSuccessNone0.051361s0.132201s
Success
sbrk.cSuccessNone0.047637s0.113156s
Success
segfault.cSuccessNone0.055917s0.161388s
Success
shm.cSuccessNone0.054985s0.154786s
Success
shmtest.cSuccessNone0.061792s0.192568s
Success
thread_malloc_sequential.cSuccessNone0.057726s0.210744s
Success
vmmap_escape.cSuccessNone0.070949s0.261892s
Success
vtable.cSuccessNone0.059966s0.131246s
Success
Networking Tests
accept4.cSuccessNone0.056799s0.136945s
Success
dns_resolve_test.cSuccessNone0.050918s0.120412s
Success
dnstest.cSuccessNone0.053148s0.120458s
Success
epoll_badfd.cSuccessNone0.046315s0.110171s
Success
epoll_edge_triggered.cSuccessNone0.211725s0.382017s
Success
epollcreate1.cSuccessNone0.052263s0.131910s
Success
error_handling_net.cSuccessNone0.064419s0.199577s
Success
getaddrinfo_test.cSuccessNone0.056314s0.156858s
Success
getaddrinfo_unspec.cSuccessNone0.055955s0.141550s
Success
gethostname.cSuccessNone0.044983s0.109898s
Success
getifaddrs.cSuccessNone0.056247s0.134840s
Success
getsockname.cSuccessNone0.057138s0.127411s
Success
getsockopt.cSuccessNone0.058151s0.162432s
Success
ipv6_basic.cSuccessNone0.057876s0.159719s
Success
makepipe.cSuccessNone0.047206s0.105117s
Success
nonblocking_eagain.cSuccessNone0.055777s0.169996s
Success
pipe.cSuccessNone0.056046s0.130554s
Success
pipe2.cSuccessNone0.056561s0.131554s
Success
pipeinput.cSuccessNone0.056921s0.163330s
Success
pipeinput2.cSuccessNone0.056431s0.172351s
Success
pipeonestring.cSuccessNone0.058386s0.162771s
Success
pipepong.cSuccessNone0.056013s0.165017s
Success
pipewrite.cSuccessNone0.048969s0.119339s
Success
poll.cSuccessNone0.054049s0.117685s
Success
recvfrom-sendto.cSuccessNone0.054484s0.129867s
Success
sendmsg_recvmsg_test.cSuccessNone0.053204s0.134595s
Success
serverclient.cSuccessNone0.054802s0.134497s
Success
shutdown.cSuccessNone0.053093s0.132308s
Success
shutdown_fork.cSuccessNone0.057014s0.152321s
Success
simple-select.cSuccessNone0.054447s0.160531s
Success
simple_epoll.cSuccessNone0.053882s0.129190s
Success
socket.cSuccessNone0.053185s0.118877s
Success
socket_cloexec.cSuccessNone0.051380s0.119276s
Success
socket_options_advanced.cSuccessNone0.059222s0.177299s
Success
socketepoll.cSuccessNone0.050142s0.119666s
Success
socketpair.cSuccessNone0.053527s0.147013s
Success
socketselect.cSuccessNone0.052178s0.126616s
Success
udp_send_recv.cSuccessNone0.162570s0.283059s
Success
uds-getsockname.cSuccessNone0.055587s0.124098s
Success
uds-nb-select.cSuccessNone2.063587s2.204044s
Success
uds-serverclient.cSuccessNone0.058047s0.164210s
Success
uds-socketselect.cSuccessNone0.056473s0.132144s
Success
uds_listen_poll.cSuccessNone1.062767s1.176087s
Success
writev_socket.cSuccessNone0.059398s0.177399s
Success
Process Tests
barrier_test.cSuccessNone0.051305s0.146265s
Success
chain_thread.cSuccessNone1.052729s1.150745s
Success
ctor_syscall_test.cSuccessNone0.042799s0.107906s
Success
cxa_atexit_test.cSuccessNone0.047882s0.112035s
Success
exec_non_utf8.cSuccessNone0.050311s0.116959s
Success
execve_shebang.cSuccessNone0.051776s0.120255s
Success
exit.cSuccessNone0.051296s0.118251s
Success
exit_failure.cSuccessNone0.051131s0.136230s
Success
exit_group_thread.cSuccessNone0.053236s0.165015s
Success
exit_status_first_wins.cSuccessNone0.054219s0.162263s
Success
flockfile_test.cSuccessNone0.054651s0.151880s
Success
fork2malloc.cSuccessNone0.052823s0.142660s
Success
fork_select.cSuccessNone0.049869s0.153152s
Success
fork_simple.cSuccessNone0.050974s0.133392s
Success
fork_syscall.cSuccessNone0.056520s0.645095s
Success
fork_tls_ctype.cSuccessNone0.054613s0.166388s
Success
forkandopen.cSuccessNone0.054287s0.155040s
Success
forkdup.cSuccessNone0.053367s0.151253s
Success
forkexecuid.cSuccessNone0.048875s0.161714s
Success
forkexecv-arg.cSuccessNone0.049461s0.157717s
Success
forkexecv.cSuccessNone0.048329s0.148953s
Success
forkfiles.cSuccessNone0.055299s0.155764s
Success
forkmalloc.cSuccessNone0.054650s0.142286s
Success
forknodup.cSuccessNone0.053439s0.150052s
Success
function-ptr.cSuccessNone0.048649s0.111681s
Success
getegid_syscall.cSuccessNone0.054927s0.483998s
Success
getgid_syscall.cSuccessNone0.053657s0.501844s
Success
getpid.cSuccessNone0.044780s0.105689s
Success
getpid_syscall.cSuccessNone0.055125s0.535036s
Success
getppid.cSuccessNone0.052723s0.143650s
Success
getppid_syscall.cSuccessNone0.055489s0.402465s
Success
getuid.cSuccessNone0.053055s0.118582s
Success
getuid_syscall.cSuccessNone0.049929s0.256074s
Success
hello-arg.cSuccessNone0.043250s0.106613s
Success
hello.cSuccessNone0.041333s0.101572s
Success
longjmp.cSuccessNone0.043999s0.111116s
Success
mutex.cSuccessNone2.058674s2.137396s
Success
printf_deadlock_smoke.cSuccessNone0.061124s0.178843s
Success
printf_thread_test.cSuccessNone0.051241s0.155206s
Success
sem_forks.cSuccessNone0.059914s0.180503s
Success
sem_slow_path.cSuccessNone1.054947s1.150070s
Success
setjmp_edge.cSuccessNone0.049873s0.209358s
Success
setsid.cSuccessNone0.045752s0.105091s
Success
template.cSuccessNone0.051205s0.193861s
Success
test_crossmodule_longjmp.cSuccessNone0.052639s0.155438s
Success
test_exec_nofork.cSuccessNone0.050293s0.135713s
Success
test_unlink_open_file.cSuccessNone0.047005s0.105907s
Success
thread-guard.cSuccessNone0.050839s0.138339s
Success
thread-test.cSuccessNone0.048659s0.126008s
Success
thread.cSuccessNone0.047602s0.131753s
Success
thread_cageid_race.cSuccessNone0.047794s0.295840s
Success
tls_test.cSuccessNone0.051506s0.182439s
Success
uname.cSuccessNone0.045751s0.106779s
Success
wait.cSuccessNone0.055239s0.171382s
Success
waitpid_anychild.cSuccessNone0.051205s0.143035s
Success
waitpid_syscall.cSuccessNone1.051861s1.238552s
Success
waitpid_wnohang.cSuccessNone0.052071s0.146077s
Success
Signal Tests
alarm.cSuccessNone7.052604s7.154779s
Success
eintr_fork_signal.cSuccessNone1.055395s1.189569s
Success
kill.cSuccessNone1.051887s1.143109s
Success
pause_test.cSuccessNone1.059832s1.164798s
Success
setitimer.cSuccessNone7.051938s7.158848s
Success
sigalrm.cSuccessNone2.052337s2.141538s
Success
sigaltstack.cSuccessNone0.053388s0.137431s
Success
sigchld.cSuccessNone1.053001s1.144207s
Success
signal-fork.cSuccessNone4.054353s4.138147s
Success
signal-simple.cSuccessNone0.053672s0.125940s
Success
signal_SIGCHLD.cSuccessNone0.050043s0.149133s
Success
signal_fork.cSuccessNone0.052712s0.169288s
Success
signal_int_ignored.cSuccessNone2.052341s2.143253s
Success
signal_kill_cleanup.cSuccessNone1.049853s1.133943s
Success
signal_procmask.cSuccessNone0.046155s0.116275s
Success
signal_read_interrupt.cSuccessNone0.555368s0.645603s
Success
signal_recursive.cSuccessNone0.092390s0.124597s
Success
signal_sa_mask.cSuccessNone0.049354s0.120854s
Success
signal_select_interrupt.cSuccessNone0.555558s0.648676s
Success
signal_write_interrupt.cSuccessNone1.055002s1.138730s
Success
sigpipe.cSuccessNone1.054884s1.158989s
Success
sigprocmask.cSuccessNone1.053222s1.130722s
Success
sigsuspend_test.cSuccessNone1.051471s1.145391s
Success
test_sigsetjmp.cSuccessNone0.053158s0.154775s
Success

Fail Tests

Summary

MetricCount
Total Test Cases6
Number of Successes6
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.044516s0.118830s
Success
Memory Tests
invalid_access_direct.cSuccessNone0.116119s0.113064s
Success
invalid_access_fork.cSuccessNone0.169769s0.139699s
Success
mmap-negative1.cSuccessNone0.166050s0.222751s
Success
mmap-negative2.cSuccessNone0.132348s0.152503s
Success
Signal Tests
signal_resethand.cSuccessNone1.052511s1.141762s
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.406125s8.691925s
LIBCPP_SORT_OK 1 2 3

@lionne99
lionne99 requested a review from Yaxuan-w July 28, 2026 17:40
@Yaxuan-w
Yaxuan-w merged commit 4a0f0f0 into main Aug 3, 2026
3 checks passed
@Yaxuan-w
Yaxuan-w deleted the iso-003-vmmap-escape-test branch August 3, 2026 17:28
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.

2 participants