Skip to content

munmap: consult vmmap before PROT_NONE to avoid unlinking adjacent mappings#1075

Draft
rishabhBudhouliya wants to merge 16 commits intomainfrom
munmap-fix
Draft

munmap: consult vmmap before PROT_NONE to avoid unlinking adjacent mappings#1075
rishabhBudhouliya wants to merge 16 commits intomainfrom
munmap-fix

Conversation

@rishabhBudhouliya
Copy link
Copy Markdown
Contributor

@rishabhBudhouliya rishabhBudhouliya commented Apr 16, 2026

Purpose

  • munmap_syscall blindly called mmap(MAP_FIXED|PROT_NONE) over the rounded-up byte range without checking what pages the caller actually owns. When the rounded length extended into an adjacent shm page, it got wiped.
  • Now intersects the requested range with vmmap entries and only PROT_NONEs pages belonging to anonymous mappings. SharedMemory-backed entries are left to shmdt.
  • Fixes the dead read-lock/drop at the top of the function (the lock is now a single write lock used for both lookup and mutation).

Fixes #1062 and #1052

Concern

I was reading Linux's behavior around this un-mapping logic and it seems like for the calling process, the kernel would unlink even the shared memory reference (alongside the anonymous backed region). In our case, we simply ignore that problem.
I suspect this could cause a divergence in the state of shm at the cage level. However, I couldn't conceptualize/didn't invest enough time to read how that state works.
I was also reading that it is unlikely for VMAs of anonymous and shared memory being adjacent to each other.

Please let me know if I should dig deeper if this fix isn't optimal for our use-case.

@rishabhBudhouliya rishabhBudhouliya requested review from qianxichen233 and rennergade and removed request for qianxichen233 April 16, 2026 02:09
@github-actions
Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

Unified Test Report

grate harness

MetricValue
Total11
Success11
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: 2
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] 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: 2
[Grate|interpose-exec] Handling function ptr: 2 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 2 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: 2
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: 2
[Grate|interpose-fork] Handling function ptr: 2 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: 2
[Grate|interpose-mmap] Handling function ptr: 2 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 2 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 2 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 2 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: 3
[cage] registering 107. grateid: 2 cageid: 3
[Grate|interpose-register] Handling function ptr: 3 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: 2
[Grate|interpose-register] Handling function ptr: 2 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: 2
[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: 2 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:

race-test_grate.cSuccess
STDOUT:
pass

STDERR:

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

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 2 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: 3 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: 2
[Grate|geteuid] Handling function ptr: 2 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases199
Number of Successes199
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.045097s0.180668s
Success
chdir_getcwd.cSuccessNone0.045555s0.139975s
Success
chmod.cSuccessNone0.050744s0.150923s
Success
clock_gettime_highlevel.cSuccessNone0.115855s0.316689s
Success
clock_gettime_simple.cSuccessNone0.039962s0.124094s
Success
cloexec.cSuccessNone0.049265s0.206599s
Success
close.cSuccessNone0.056016s0.161347s
Success
creat_access.cSuccessNone0.048403s0.141009s
Success
doubleclose.cSuccessNone0.040569s0.123508s
Success
dup.cSuccessNone0.041735s0.139088s
Success
dup2.cSuccessNone0.047014s0.137658s
Success
dup3.cSuccessNone0.045185s0.140294s
Success
dupwrite.cSuccessNone0.048635s0.133600s
Success
etc_conf.cSuccessNone0.043547s0.142509s
Success
fchdir.cSuccessNone0.051381s0.151452s
Success
fchmod.cSuccessNone0.050154s0.152808s
Success
fcntl.cSuccessNone0.047595s0.143527s
Success
fdatasync.cSuccessNone0.047163s0.134973s
Success
filetest.cSuccessNone0.047757s0.135104s
Success
filetest1000.cSuccessNone0.056206s0.146522s
Success
flock.cSuccessNone0.061876s0.176182s
Success
fstat.cSuccessNone0.050709s0.150249s
Success
fstatfs.cSuccessNone0.043140s0.129573s
Success
fsync.cSuccessNone0.046930s0.132607s
Success
ftruncate.cSuccessNone0.052266s0.256393s
Success
getcwd.cSuccessNone0.044608s0.129981s
Success
getrandom.cSuccessNone0.047759s0.139841s
Success
ioctl.cSuccessNone0.050269s0.140201s
Success
link.cSuccessNone0.051639s0.199307s
Success
locale_test.cSuccessNone0.061719s0.621227s
Success
lseek.cSuccessNone0.052505s0.253511s
Success
mkdir_rmdir.cSuccessNone0.049250s0.143441s
Success
mkfifo_test.cSuccessNone0.054418s0.186983s
Success
mknod.cSuccessNone0.047261s0.148541s
Success
nocancel_io.cSuccessNone0.051343s0.170738s
Success
open.cSuccessNone0.044037s0.124731s
Success
openat.cSuccessNone0.043282s0.133547s
Success
path_conversion_safety.cSuccessNone0.052805s0.168618s
Success
pread_pwrite.cSuccessNone0.045465s0.146346s
Success
preadv_pwritev.cSuccessNone0.050588s0.155728s
Success
printf.cSuccessNone0.039726s0.119084s
Success
prlimit64.cSuccessNone0.041604s0.126617s
Success
read.cSuccessNone0.048721s0.143423s
Success
readbytes.cSuccessNone0.045112s0.128900s
Success
readdir_basic.cSuccessNone0.052156s0.164751s
Success
readlink.cSuccessNone0.048205s0.140693s
Success
readlinkat.cSuccessNone0.049942s0.155810s
Success
readv_writev_test.cSuccessNone0.050526s0.153036s
Success
rename.cSuccessNone0.050484s0.140318s
Success
sc-writev.cSuccessNone0.046312s0.137095s
Success
stat.cSuccessNone0.049421s0.145227s
Success
statfs.cSuccessNone0.042725s0.130414s
Success
sync_file_range.cSuccessNone0.046464s0.140801s
Success
timespec_time_t_compat.cSuccessNone0.046367s0.129703s
Success
truncate.cSuccessNone0.050079s0.157955s
Success
unlink.cSuccessNone0.050784s0.188142s
Success
unlinkat.cSuccessNone0.050116s0.160690s
Success
write.cSuccessNone0.041581s0.120876s
Success
writeloop.cSuccessNone0.051174s0.131871s
Success
writepartial.cSuccessNone0.048704s0.127943s
Success
writev.cSuccessNone0.049951s0.151829s
Success
Math Tests
math_link_smoke.cSuccessNone0.052064s0.131041s
Success
math_tests.cSuccessNone0.055125s0.163590s
Success
Memory Tests
brk.cSuccessNone0.046163s0.132388s
Success
fork_large_memory.cSuccessNone0.077232s0.388700s
Success
malloc.cSuccessNone0.044296s0.122895s
Success
malloc_large.cSuccessNone0.045328s0.128011s
Success
memcpy.cSuccessNone0.044450s0.124866s
Success
memory_error_test.cSuccessNone0.050277s0.167897s
Success
mmap.cSuccessNone0.041716s0.128343s
Success
mmap_aligned.cSuccessNone0.042921s0.141582s
Success
mmap_complicated.cSuccessNone0.048949s0.146226s
Success
mmap_file.cSuccessNone0.048877s0.140518s
Success
mmap_shared.cSuccessNone0.048093s0.143202s
Success
mmaptest.cSuccessNone0.044131s0.133646s
Success
mprotect.cSuccessNone0.042400s0.128022s
Success
mprotect_boundary.cSuccessNone0.042683s0.142904s
Success
mprotect_end_region.cSuccessNone0.041776s0.134838s
Success
mprotect_middle_region.cSuccessNone0.042267s0.137094s
Success
mprotect_multiple_times.cSuccessNone0.042301s0.137651s
Success
mprotect_same_value.cSuccessNone0.042074s0.133157s
Success
mprotect_spanning_regions.cSuccessNone0.043378s0.150430s
Success
sbrk.cSuccessNone0.044308s0.126502s
Success
segfault.cSuccessNone0.049898s0.158035s
Success
shm.cSuccessNone0.048224s0.149039s
Success
shmtest.cSuccessNone0.043027s0.133291s
Success
thread_malloc_sequential.cSuccessNone0.050725s0.158270s
Success
vtable.cSuccessNone0.053457s0.144480s
Success
Networking Tests
accept4.cSuccessNone0.054026s0.160814s
Success
dns_resolve_test.cSuccessNone0.048214s0.138413s
Success
dnstest.cSuccessNone0.048919s0.147785s
Success
epoll_edge_triggered.cSuccessNone0.206245s0.481395s
Success
epollcreate1.cSuccessNone0.051048s0.149359s
Success
error_handling_net.cSuccessNone0.056691s0.253646s
Success
getaddrinfo_test.cSuccessNone0.052328s0.182818s
Success
getaddrinfo_unspec.cSuccessNone0.048614s0.186096s
Success
gethostname.cSuccessNone0.042688s0.121845s
Success
getifaddrs.cSuccessNone0.050888s0.143893s
Success
getsockname.cSuccessNone0.054195s0.143692s
Success
getsockopt.cSuccessNone0.052781s0.193063s
Success
ipv6_basic.cSuccessNone0.054515s0.195022s
Success
makepipe.cSuccessNone0.042129s0.120407s
Success
nonblocking_eagain.cSuccessNone0.054027s0.204726s
Success
pipe.cSuccessNone0.051713s0.152030s
Success
pipe2.cSuccessNone0.051048s0.140417s
Success
pipeinput.cSuccessNone0.052070s0.160894s
Success
pipeinput2.cSuccessNone0.052236s0.161395s
Success
pipeonestring.cSuccessNone0.052156s0.162986s
Success
pipepong.cSuccessNone0.050777s0.164758s
Success
pipewrite.cSuccessNone0.045272s0.141246s
Success
poll.cSuccessNone0.049368s0.134298s
Success
recvfrom-sendto.cSuccessNone0.050703s0.154444s
Success
sendmsg_recvmsg_test.cSuccessNone0.050347s0.149421s
Success
serverclient.cSuccessNone0.049993s0.143898s
Success
shutdown.cSuccessNone0.052992s0.147497s
Success
shutdown_fork.cSuccessNone0.050533s0.149541s
Success
simple-select.cSuccessNone0.051500s0.163445s
Success
simple_epoll.cSuccessNone0.049664s0.147610s
Success
socket.cSuccessNone0.047802s0.133611s
Success
socket_cloexec.cSuccessNone0.048104s0.134707s
Success
socket_options_advanced.cSuccessNone0.055064s0.215524s
Success
socketepoll.cSuccessNone0.048358s0.137616s
Success
socketpair.cSuccessNone0.048407s0.145208s
Success
socketselect.cSuccessNone0.048465s0.141769s
Success
udp_send_recv.cSuccessNone0.156578s0.307725s
Success
uds-getsockname.cSuccessNone0.049506s0.139723s
Success
uds-nb-select.cSuccessNone2.057715s2.212918s
Success
uds-serverclient.cSuccessNone0.053732s0.177253s
Success
uds-socketselect.cSuccessNone0.049948s0.144391s
Success
writev_socket.cSuccessNone0.052517s0.181998s
Success
Process Tests
barrier_test.cSuccessNone0.048051s0.144119s
Success
chain_thread.cSuccessNone1.050595s1.148581s
Success
ctor_syscall_test.cSuccessNone0.039927s0.121816s
Success
cxa_atexit_test.cSuccessNone0.045669s0.127539s
Success
execve_shebang.cSuccessNone0.049568s0.139375s
Success
exit.cSuccessNone0.046734s0.125229s
Success
exit_failure.cSuccessNone0.048364s0.135398s
Success
exit_group_thread.cSuccessNone0.050684s0.147250s
Success
flockfile_test.cSuccessNone0.049730s0.159214s
Success
fork2malloc.cSuccessNone0.050537s0.144122s
Success
fork_select.cSuccessNone0.048434s0.149429s
Success
fork_simple.cSuccessNone0.046970s0.135884s
Success
fork_syscall.cSuccessNone0.053167s0.280817s
Success
fork_tls_ctype.cSuccessNone0.051745s0.167043s
Success
forkandopen.cSuccessNone0.050793s0.160065s
Success
forkdup.cSuccessNone0.052755s0.152952s
Success
forkexecuid.cSuccessNone0.047593s0.211282s
Success
forkexecv-arg.cSuccessNone0.048023s0.195454s
Success
forkexecv.cSuccessNone0.046149s0.187357s
Success
forkfiles.cSuccessNone0.050479s0.154234s
Success
forkmalloc.cSuccessNone0.057165s0.139587s
Success
forknodup.cSuccessNone0.050448s0.155704s
Success
function-ptr.cSuccessNone0.044310s0.128850s
Success
getegid_syscall.cSuccessNone0.049690s0.246634s
Success
getgid_syscall.cSuccessNone0.050076s0.252216s
Success
getpid.cSuccessNone0.042323s0.123073s
Success
getpid_syscall.cSuccessNone0.051444s0.263808s
Success
getppid.cSuccessNone0.050089s0.144309s
Success
getppid_syscall.cSuccessNone0.052717s0.228085s
Success
getuid.cSuccessNone0.050001s0.134074s
Success
getuid_syscall.cSuccessNone0.049040s0.178498s
Success
hello-arg.cSuccessNone0.041745s0.124539s
Success
hello.cSuccessNone0.040173s0.118210s
Success
longjmp.cSuccessNone0.041373s0.125347s
Success
mutex.cSuccessNone2.051952s2.153107s
Success
printf_deadlock_smoke.cSuccessNone0.058148s0.183874s
Success
printf_thread_test.cSuccessNone0.051002s0.154096s
Success
sem_forks.cSuccessNone0.051980s0.157813s
Success
setsid.cSuccessNone0.042270s0.123331s
Success
template.cSuccessNone0.049283s0.155419s
Success
test_exec_nofork.cSuccessNone0.049136s0.186485s
Success
test_unlink_open_file.cSuccessNone0.044467s0.125556s
Success
thread-test.cSuccessNone0.044687s0.132492s
Success
thread.cSuccessNone0.044550s0.130841s
Success
thread_cageid_race.cSuccessNone0.044992s0.164709s
Success
tls_test.cSuccessNone0.047432s0.145215s
Success
uname.cSuccessNone0.042591s0.124627s
Success
wait.cSuccessNone2.046227s2.145179s
Success
waitpid_anychild.cSuccessNone0.049470s0.141105s
Success
waitpid_syscall.cSuccessNone1.049201s1.174327s
Success
waitpid_wnohang.cSuccessNone0.049625s0.140975s
Success
Signal Tests
alarm.cSuccessNone7.048407s7.160983s
Success
eintr_fork_signal.cSuccessNone1.051370s1.159338s
Success
kill.cSuccessNone1.048674s1.144869s
Success
setitimer.cSuccessNone7.049424s7.166639s
Success
sigalrm.cSuccessNone2.049111s2.152224s
Success
sigaltstack.cSuccessNone0.050873s0.148415s
Success
sigchld.cSuccessNone1.050809s1.144684s
Success
signal-fork.cSuccessNone4.050780s4.150043s
Success
signal-simple.cSuccessNone0.049870s0.140380s
Success
signal_SIGCHLD.cSuccessNone0.048121s0.144957s
Success
signal_fork.cSuccessNone0.046571s0.150601s
Success
signal_int_ignored.cSuccessNone2.049450s2.148720s
Success
signal_kill_cleanup.cSuccessNone1.047108s1.140506s
Success
signal_procmask.cSuccessNone0.044355s0.139008s
Success
signal_recursive.cSuccessNone0.044357s0.138889s
Success
signal_sa_mask.cSuccessNone0.043775s0.131429s
Success
sigpipe.cSuccessNone1.051358s1.163072s
Success
sigprocmask.cSuccessNone1.049284s1.148119s
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.040952s0.124036s
Success
Memory Tests
mmap-negative1.cSuccessNone0.108216s0.128843s
Success
mmap-negative2.cSuccessNone0.118040s0.130888s
Success
Signal Tests
signal_resethand.cSuccessNone1.049451s1.144885s
Success

@rennergade
Copy link
Copy Markdown
Contributor

This is a really good find/PR. Thanks @rishabhBudhouliya.

It would be good to add a test that would have failed before this fix to confirm this.

As for your questions, I think the inconsistency is only visible if the same cage tries to re-access the address after munmap, which is undefined behavior anyway. I don't think we really need to worry about that.

@github-actions
Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

Unified Test Report

grate harness

MetricValue
Total11
Success11
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: 2
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] 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: 2
[Grate|interpose-exec] Handling function ptr: 2 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 2 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: 2
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: 2
[Grate|interpose-fork] Handling function ptr: 2 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: 2
[Grate|interpose-mmap] Handling function ptr: 2 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 2 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 2 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 2 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 2 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: 3
[cage] registering 107. grateid: 2 cageid: 3
[Grate|interpose-register] Handling function ptr: 3 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: 2
[Grate|interpose-register] Handling function ptr: 2 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: 2
[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: 2 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:

race-test_grate.cSuccess
STDOUT:
pass

STDERR:

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

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 2 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: 3 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: 2
[Grate|geteuid] Handling function ptr: 2 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases200
Number of Successes199
Number of Failures1
Number of Compilation Failure Native0
Number of Runtime Failure Native1
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.047762s0.190149s
Success
chdir_getcwd.cSuccessNone0.047488s0.146455s
Success
chmod.cSuccessNone0.053088s0.155173s
Success
clock_gettime_highlevel.cSuccessNone0.118674s0.326628s
Success
clock_gettime_simple.cSuccessNone0.042620s0.135427s
Success
cloexec.cSuccessNone0.052283s0.215974s
Success
close.cSuccessNone0.060182s0.174144s
Success
creat_access.cSuccessNone0.050905s0.147982s
Success
doubleclose.cSuccessNone0.042901s0.128055s
Success
dup.cSuccessNone0.042516s0.146683s
Success
dup2.cSuccessNone0.048213s0.145550s
Success
dup3.cSuccessNone0.048056s0.149815s
Success
dupwrite.cSuccessNone0.051033s0.141964s
Success
etc_conf.cSuccessNone0.044849s0.151165s
Success
fchdir.cSuccessNone0.052812s0.157675s
Success
fchmod.cSuccessNone0.052177s0.158754s
Success
fcntl.cSuccessNone0.049592s0.153778s
Success
fdatasync.cSuccessNone0.050762s0.143285s
Success
filetest.cSuccessNone0.049917s0.142820s
Success
filetest1000.cSuccessNone0.057218s0.153831s
Success
flock.cSuccessNone0.059865s0.184965s
Success
fstat.cSuccessNone0.051318s0.155169s
Success
fstatfs.cSuccessNone0.046652s0.136546s
Success
fsync.cSuccessNone0.048246s0.137238s
Success
ftruncate.cSuccessNone0.054103s0.270707s
Success
getcwd.cSuccessNone0.046873s0.139547s
Success
getrandom.cSuccessNone0.050916s0.147798s
Success
ioctl.cSuccessNone0.052238s0.147933s
Success
link.cSuccessNone0.053929s0.205303s
Success
locale_test.cSuccessNone0.065240s0.661489s
Success
lseek.cSuccessNone0.053929s0.261901s
Success
mkdir_rmdir.cSuccessNone0.051129s0.150090s
Success
mkfifo_test.cSuccessNone0.056302s0.196517s
Success
mknod.cSuccessNone0.049550s0.155440s
Success
nocancel_io.cSuccessNone0.052822s0.177450s
Success
open.cSuccessNone0.045503s0.131273s
Success
openat.cSuccessNone0.045601s0.141948s
Success
path_conversion_safety.cSuccessNone0.054420s0.176981s
Success
pread_pwrite.cSuccessNone0.047054s0.153342s
Success
preadv_pwritev.cSuccessNone0.054289s0.163298s
Success
printf.cSuccessNone0.041116s0.126507s
Success
prlimit64.cSuccessNone0.044366s0.133513s
Success
read.cSuccessNone0.050126s0.147904s
Success
readbytes.cSuccessNone0.046590s0.139184s
Success
readdir_basic.cSuccessNone0.053742s0.173272s
Success
readlink.cSuccessNone0.050953s0.151479s
Success
readlinkat.cSuccessNone0.052393s0.157257s
Success
readv_writev_test.cSuccessNone0.053461s0.158828s
Success
rename.cSuccessNone0.052440s0.145316s
Success
sc-writev.cSuccessNone0.048700s0.147423s
Success
stat.cSuccessNone0.053609s0.153605s
Success
statfs.cSuccessNone0.047228s0.141141s
Success
sync_file_range.cSuccessNone0.049244s0.146733s
Success
timespec_time_t_compat.cSuccessNone0.047801s0.134101s
Success
truncate.cSuccessNone0.051479s0.162087s
Success
unlink.cSuccessNone0.053989s0.201476s
Success
unlinkat.cSuccessNone0.052819s0.166726s
Success
write.cSuccessNone0.043942s0.129492s
Success
writeloop.cSuccessNone0.052669s0.137525s
Success
writepartial.cSuccessNone0.053309s0.139080s
Success
writev.cSuccessNone0.052343s0.156008s
Success
Math Tests
math_link_smoke.cSuccessNone0.054581s0.142955s
Success
math_tests.cSuccessNone0.061356s0.170857s
Success
Memory Tests
brk.cSuccessNone0.047268s0.136671s
Success
fork_large_memory.cSuccessNone0.078881s0.387898s
Success
malloc.cSuccessNone0.045818s0.126400s
Success
malloc_large.cSuccessNone0.047495s0.132260s
Success
memcpy.cSuccessNone0.046686s0.129507s
Success
memory_error_test.cSuccessNone0.051381s0.169390s
Success
mmap.cSuccessNone0.041375s0.133329s
Success
mmap_aligned.cSuccessNone0.043691s0.146241s
Success
mmap_complicated.cSuccessNone0.051073s0.153656s
Success
mmap_file.cSuccessNone0.049905s0.144338s
Success
mmap_shared.cSuccessNone0.048748s0.146598s
Success
mmaptest.cSuccessNone0.045418s0.137904s
Success
mprotect.cSuccessNone0.043953s0.132612s
Success
mprotect_boundary.cSuccessNone0.044047s0.146593s
Success
mprotect_end_region.cSuccessNone0.042526s0.142284s
Success
mprotect_middle_region.cSuccessNone0.043712s0.141832s
Success
mprotect_multiple_times.cSuccessNone0.043153s0.142297s
Success
mprotect_same_value.cSuccessNone0.043116s0.138071s
Success
mprotect_spanning_regions.cSuccessNone0.044228s0.158292s
Success
munmap_adjacent_shm.cFailureFailure_native_running0.046669sN/A
Native execution: DIAG: shm  = 0x7f94125fa000
DIAG: anon = 0x7f94125b3000  (anon + PAGE = 0x7f94125b4000, gap = 286720 bytes)
FAIL: could not create adjacent anon+shm layout; allocator did not place anon immediately before shm.
sbrk.cSuccessNone0.046006s0.130754s
Success
segfault.cSuccessNone0.051181s0.163317s
Success
shm.cSuccessNone0.049273s0.154659s
Success
shmtest.cSuccessNone0.044225s0.136563s
Success
thread_malloc_sequential.cSuccessNone0.052403s0.162022s
Success
vtable.cSuccessNone0.054721s0.155323s
Success
Networking Tests
accept4.cSuccessNone0.057337s0.169005s
Success
dns_resolve_test.cSuccessNone0.050361s0.144404s
Success
dnstest.cSuccessNone0.052161s0.157454s
Success
epoll_edge_triggered.cSuccessNone0.208134s0.509564s
Success
epollcreate1.cSuccessNone0.051128s0.153337s
Success
error_handling_net.cSuccessNone0.058404s0.271840s
Success
getaddrinfo_test.cSuccessNone0.053990s0.190424s
Success
getaddrinfo_unspec.cSuccessNone0.051496s0.161808s
Success
gethostname.cSuccessNone0.043570s0.129233s
Success
getifaddrs.cSuccessNone0.053206s0.151011s
Success
getsockname.cSuccessNone0.057522s0.148847s
Success
getsockopt.cSuccessNone0.053673s0.201158s
Success
ipv6_basic.cSuccessNone0.056412s0.205107s
Success
makepipe.cSuccessNone0.043086s0.125413s
Success
nonblocking_eagain.cSuccessNone0.055283s0.216910s
Success
pipe.cSuccessNone0.052700s0.157355s
Success
pipe2.cSuccessNone0.052483s0.148207s
Success
pipeinput.cSuccessNone0.053277s0.166810s
Success
pipeinput2.cSuccessNone0.055081s0.173291s
Success
pipeonestring.cSuccessNone0.053210s0.169058s
Success
pipepong.cSuccessNone0.051735s0.171795s
Success
pipewrite.cSuccessNone0.046883s0.152704s
Success
poll.cSuccessNone0.051670s0.141283s
Success
recvfrom-sendto.cSuccessNone0.052217s0.158556s
Success
sendmsg_recvmsg_test.cSuccessNone0.054003s0.184471s
Success
serverclient.cSuccessNone0.052355s0.154961s
Success
shutdown.cSuccessNone0.053766s0.152038s
Success
shutdown_fork.cSuccessNone0.051137s0.156739s
Success
simple-select.cSuccessNone0.053689s0.172760s
Success
simple_epoll.cSuccessNone0.051219s0.152650s
Success
socket.cSuccessNone0.051946s0.141842s
Success
socket_cloexec.cSuccessNone0.049189s0.141368s
Success
socket_options_advanced.cSuccessNone0.056588s0.222157s
Success
socketepoll.cSuccessNone0.050151s0.145772s
Success
socketpair.cSuccessNone0.049271s0.149900s
Success
socketselect.cSuccessNone0.049844s0.148156s
Success
udp_send_recv.cSuccessNone0.157802s0.315983s
Success
uds-getsockname.cSuccessNone0.054169s0.149248s
Success
uds-nb-select.cSuccessNone2.062062s2.219366s
Success
uds-serverclient.cSuccessNone0.055108s0.218520s
Success
uds-socketselect.cSuccessNone0.051044s0.149375s
Success
writev_socket.cSuccessNone0.054934s0.189169s
Success
Process Tests
barrier_test.cSuccessNone0.050739s0.159253s
Success
chain_thread.cSuccessNone1.052080s1.159432s
Success
ctor_syscall_test.cSuccessNone0.042638s0.131694s
Success
cxa_atexit_test.cSuccessNone0.048064s0.134991s
Success
execve_shebang.cSuccessNone0.050700s0.146275s
Success
exit.cSuccessNone0.049326s0.130927s
Success
exit_failure.cSuccessNone0.051361s0.144314s
Success
exit_group_thread.cSuccessNone0.052854s0.157134s
Success
flockfile_test.cSuccessNone0.054158s0.172553s
Success
fork2malloc.cSuccessNone0.053841s0.150413s
Success
fork_select.cSuccessNone0.051116s0.158027s
Success
fork_simple.cSuccessNone0.049826s0.150313s
Success
fork_syscall.cSuccessNone0.055235s0.304285s
Success
fork_tls_ctype.cSuccessNone0.054981s0.177568s
Success
forkandopen.cSuccessNone0.053607s0.171258s
Success
forkdup.cSuccessNone0.061036s0.164196s
Success
forkexecuid.cSuccessNone0.049351s0.219008s
Success
forkexecv-arg.cSuccessNone0.050022s0.201644s
Success
forkexecv.cSuccessNone0.048714s0.199289s
Success
forkfiles.cSuccessNone0.051122s0.160206s
Success
forkmalloc.cSuccessNone0.065231s0.146546s
Success
forknodup.cSuccessNone0.052591s0.165658s
Success
function-ptr.cSuccessNone0.047698s0.133589s
Success
getegid_syscall.cSuccessNone0.053515s0.261314s
Success
getgid_syscall.cSuccessNone0.052406s0.258756s
Success
getpid.cSuccessNone0.044051s0.127104s
Success
getpid_syscall.cSuccessNone0.053472s0.286546s
Success
getppid.cSuccessNone0.051873s0.153940s
Success
getppid_syscall.cSuccessNone0.053772s0.236824s
Success
getuid.cSuccessNone0.051126s0.140083s
Success
getuid_syscall.cSuccessNone0.050258s0.186250s
Success
hello-arg.cSuccessNone0.041342s0.129122s
Success
hello.cSuccessNone0.041604s0.130103s
Success
longjmp.cSuccessNone0.043102s0.131385s
Success
mutex.cSuccessNone2.054502s2.160126s
Success
printf_deadlock_smoke.cSuccessNone0.059608s0.193391s
Success
printf_thread_test.cSuccessNone0.050509s0.161751s
Success
sem_forks.cSuccessNone0.055306s0.165864s
Success
setsid.cSuccessNone0.043809s0.128317s
Success
template.cSuccessNone0.051660s0.166416s
Success
test_exec_nofork.cSuccessNone0.048949s0.202851s
Success
test_unlink_open_file.cSuccessNone0.047753s0.135479s
Success
thread-test.cSuccessNone0.047398s0.141082s
Success
thread.cSuccessNone0.045209s0.137014s
Success
thread_cageid_race.cSuccessNone0.048772s0.171078s
Success
tls_test.cSuccessNone0.048629s0.151819s
Success
uname.cSuccessNone0.045207s0.135627s
Success
wait.cSuccessNone2.049683s2.147357s
Success
waitpid_anychild.cSuccessNone0.051941s0.150120s
Success
waitpid_syscall.cSuccessNone1.050975s1.193090s
Success
waitpid_wnohang.cSuccessNone0.051411s0.152849s
Success
Signal Tests
alarm.cSuccessNone7.050261s7.171628s
Success
eintr_fork_signal.cSuccessNone1.055376s1.173880s
Success
kill.cSuccessNone1.050980s1.150416s
Success
setitimer.cSuccessNone7.054273s7.180253s
Success
sigalrm.cSuccessNone2.050756s2.167937s
Success
sigaltstack.cSuccessNone0.053257s0.158663s
Success
sigchld.cSuccessNone1.054318s1.156477s
Success
signal-fork.cSuccessNone4.053396s4.158329s
Success
signal-simple.cSuccessNone0.053187s0.151588s
Success
signal_SIGCHLD.cSuccessNone0.050723s0.153712s
Success
signal_fork.cSuccessNone0.048251s0.160464s
Success
signal_int_ignored.cSuccessNone2.051741s2.157131s
Success
signal_kill_cleanup.cSuccessNone1.049166s1.148970s
Success
signal_procmask.cSuccessNone0.046360s0.148122s
Success
signal_recursive.cSuccessNone0.045575s0.145299s
Success
signal_sa_mask.cSuccessNone0.046026s0.143225s
Success
sigpipe.cSuccessNone1.053916s1.175650s
Success
sigprocmask.cSuccessNone1.053811s1.159405s
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.041992s0.128046s
Success
Memory Tests
mmap-negative1.cSuccessNone0.144628s0.129390s
Success
mmap-negative2.cSuccessNone0.112172s0.138614s
Success
Signal Tests
signal_resethand.cSuccessNone1.049860s1.153629s
Success

@rishabhBudhouliya rishabhBudhouliya marked this pull request as draft April 16, 2026 16:32
@github-actions
Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

Unified Test Report

grate harness

MetricValue
Total11
Success11
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: 2
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] 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: 2
[Grate|interpose-exec] Handling function ptr: 2 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 2 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: 2
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: 2
[Grate|interpose-fork] Handling function ptr: 2 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: 2
[Grate|interpose-mmap] Handling function ptr: 2 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 2 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 2 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 2 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 2 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: 3
[cage] registering 107. grateid: 2 cageid: 3
[Grate|interpose-register] Handling function ptr: 3 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: 2
[Grate|interpose-register] Handling function ptr: 2 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: 2
[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: 2 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:

race-test_grate.cSuccess
STDOUT:
pass

STDERR:

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

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 2 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: 3 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: 2
[Grate|geteuid] Handling function ptr: 2 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases200
Number of Successes198
Number of Failures2
Number of Compilation Failure Native0
Number of Runtime Failure Native1
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 mismatch1
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.050105s0.197128s
Success
chdir_getcwd.cSuccessNone0.050489s0.153971s
Success
chmod.cSuccessNone0.054688s0.164687s
Success
clock_gettime_highlevel.cSuccessNone0.121779s0.356971s
Success
clock_gettime_simple.cSuccessNone0.045116s0.139249s
Success
cloexec.cSuccessNone0.053445s0.228145s
Success
close.cSuccessNone0.062619s0.178244s
Success
creat_access.cSuccessNone0.053135s0.153649s
Success
doubleclose.cSuccessNone0.045907s0.136272s
Success
dup.cSuccessNone0.047185s0.154175s
Success
dup2.cSuccessNone0.051987s0.151292s
Success
dup3.cSuccessNone0.050057s0.155984s
Success
dupwrite.cSuccessNone0.052859s0.148749s
Success
etc_conf.cSuccessNone0.048385s0.155699s
Success
fchdir.cSuccessNone0.054863s0.166779s
Success
fchmod.cSuccessNone0.054608s0.165856s
Success
fcntl.cSuccessNone0.052472s0.159852s
Success
fdatasync.cSuccessNone0.052186s0.145862s
Success
filetest.cSuccessNone0.052246s0.148899s
Success
filetest1000.cSuccessNone0.063124s0.163952s
Success
flock.cSuccessNone0.062954s0.192596s
Success
fstat.cSuccessNone0.054548s0.163394s
Success
fstatfs.cSuccessNone0.048554s0.144563s
Success
fsync.cSuccessNone0.051880s0.147130s
Success
ftruncate.cSuccessNone0.056091s0.276436s
Success
getcwd.cSuccessNone0.049479s0.142920s
Success
getrandom.cSuccessNone0.052568s0.155272s
Success
ioctl.cSuccessNone0.054489s0.154540s
Success
link.cSuccessNone0.056369s0.211708s
Success
locale_test.cSuccessNone0.063415s0.625310s
Success
lseek.cSuccessNone0.056349s0.272100s
Success
mkdir_rmdir.cSuccessNone0.053369s0.155578s
Success
mkfifo_test.cSuccessNone0.057729s0.200929s
Success
mknod.cSuccessNone0.053704s0.165060s
Success
nocancel_io.cSuccessNone0.056129s0.185157s
Success
open.cSuccessNone0.047993s0.138951s
Success
openat.cSuccessNone0.048631s0.148338s
Success
path_conversion_safety.cSuccessNone0.056227s0.183021s
Success
pread_pwrite.cSuccessNone0.050692s0.162463s
Success
preadv_pwritev.cSuccessNone0.054974s0.170123s
Success
printf.cSuccessNone0.045378s0.132638s
Success
prlimit64.cSuccessNone0.047021s0.140070s
Success
read.cSuccessNone0.053659s0.158030s
Success
readbytes.cSuccessNone0.049824s0.142115s
Success
readdir_basic.cSuccessNone0.056822s0.180289s
Success
readlink.cSuccessNone0.053237s0.155436s
Success
readlinkat.cSuccessNone0.054515s0.162012s
Success
readv_writev_test.cSuccessNone0.054557s0.168165s
Success
rename.cSuccessNone0.054403s0.152465s
Success
sc-writev.cSuccessNone0.051468s0.152347s
Success
stat.cSuccessNone0.054011s0.158885s
Success
statfs.cSuccessNone0.047807s0.145831s
Success
sync_file_range.cSuccessNone0.051342s0.152899s
Success
timespec_time_t_compat.cSuccessNone0.050209s0.142665s
Success
truncate.cSuccessNone0.055046s0.173441s
Success
unlink.cSuccessNone0.054964s0.203977s
Success
unlinkat.cSuccessNone0.054564s0.172530s
Success
write.cSuccessNone0.047268s0.135650s
Success
writeloop.cSuccessNone0.056180s0.145007s
Success
writepartial.cSuccessNone0.053861s0.143022s
Success
writev.cSuccessNone0.054517s0.162872s
Success
Math Tests
math_link_smoke.cSuccessNone0.057259s0.144259s
Success
math_tests.cSuccessNone0.060430s0.175911s
Success
Memory Tests
brk.cSuccessNone0.050811s0.146752s
Success
fork_large_memory.cSuccessNone0.082568s0.402589s
Success
malloc.cSuccessNone0.049550s0.135282s
Success
malloc_large.cSuccessNone0.051073s0.146308s
Success
memcpy.cSuccessNone0.048876s0.138166s
Success
memory_error_test.cSuccessNone0.054451s0.181739s
Success
mmap.cSuccessNone0.044726s0.141884s
Success
mmap_aligned.cSuccessNone0.047651s0.155053s
Success
mmap_complicated.cSuccessNone0.053700s0.162522s
Success
mmap_file.cSuccessNone0.053300s0.154999s
Success
mmap_shared.cSuccessNone0.052013s0.156187s
Success
mmaptest.cSuccessNone0.049036s0.148198s
Success
mprotect.cSuccessNone0.047976s0.140854s
Success
mprotect_boundary.cSuccessNone0.047604s0.158387s
Success
mprotect_end_region.cSuccessNone0.046904s0.148697s
Success
mprotect_middle_region.cSuccessNone0.047102s0.152171s
Success
mprotect_multiple_times.cSuccessNone0.047230s0.151508s
Success
mprotect_same_value.cSuccessNone0.047200s0.147235s
Success
mprotect_spanning_regions.cSuccessNone0.048048s0.164941s
Success
munmap_adjacent_shm.cFailureFailure_native_running0.049779sN/A
Native execution: DIAG: shm  = 0x7f79e4756000
DIAG: anon = 0x7f79e470f000  (anon + PAGE = 0x7f79e4710000, gap = 286720 bytes)
FAIL: could not create adjacent anon+shm layout; allocator did not place anon immediately before shm.
sbrk.cSuccessNone0.048908s0.139451s
Success
segfault.cSuccessNone0.054138s0.173660s
Success
shm.cSuccessNone0.053071s0.163979s
Success
shmtest.cSuccessNone0.047995s0.145961s
Success
thread_malloc_sequential.cSuccessNone0.054038s0.171885s
Success
vtable.cSuccessNone0.058238s0.158493s
Success
Networking Tests
accept4.cSuccessNone0.058422s0.175755s
Success
dns_resolve_test.cSuccessNone0.052497s0.152313s
Success
dnstest.cSuccessNone0.053406s0.162334s
Success
epoll_edge_triggered.cSuccessNone0.209546s0.502623s
Success
epollcreate1.cSuccessNone0.054501s0.162475s
Success
error_handling_net.cSuccessNone0.060202s0.271486s
Success
getaddrinfo_test.cSuccessNone0.056545s0.198386s
Success
getaddrinfo_unspec.cSuccessNone0.056023s0.158738s
Success
gethostname.cSuccessNone0.047596s0.137007s
Success
getifaddrs.cSuccessNone0.054964s0.157670s
Success
getsockname.cSuccessNone0.057913s0.157222s
Success
getsockopt.cSuccessNone0.056195s0.207958s
Success
ipv6_basic.cSuccessNone0.058017s0.208012s
Success
makepipe.cSuccessNone0.047244s0.134319s
Success
nonblocking_eagain.cSuccessNone0.057797s0.222018s
Success
pipe.cSuccessNone0.055671s0.165733s
Success
pipe2.cSuccessNone0.055063s0.154688s
Success
pipeinput.cSuccessNone0.056067s0.179206s
Success
pipeinput2.cSuccessNone0.056743s0.176610s
Success
pipeonestring.cSuccessNone0.055962s0.175147s
Success
pipepong.cSuccessNone0.055349s0.180352s
Success
pipewrite.cSuccessNone0.050245s0.155985s
Success
poll.cSuccessNone0.054124s0.146978s
Success
recvfrom-sendto.cSuccessNone0.055173s0.169357s
Success
sendmsg_recvmsg_test.cSuccessNone0.054468s0.163608s
Success
serverclient.cSuccessNone0.054119s0.157512s
Success
shutdown.cSuccessNone0.056042s0.159991s
Success
shutdown_fork.cSuccessNone0.054400s0.165037s
Success
simple-select.cSuccessNone0.055591s0.181065s
Success
simple_epoll.cSuccessNone0.054578s0.160488s
Success
socket.cSuccessNone0.052751s0.146751s
Success
socket_cloexec.cSuccessNone0.052859s0.149341s
Success
socket_options_advanced.cSuccessNone0.058437s0.230052s
Success
socketepoll.cSuccessNone0.052854s0.155334s
Success
socketpair.cSuccessNone0.052909s0.160478s
Success
socketselect.cSuccessNone0.053497s0.156881s
Success
udp_send_recv.cSuccessNone0.160283s0.325602s
Success
uds-getsockname.cSuccessNone0.053735s0.154327s
Success
uds-nb-select.cSuccessNone2.061445s2.226924s
Success
uds-serverclient.cSuccessNone0.057698s0.191892s
Success
uds-socketselect.cSuccessNone0.054822s0.157538s
Success
writev_socket.cSuccessNone0.056424s0.195394s
Success
Process Tests
barrier_test.cSuccessNone0.053114s0.158321s
Success
chain_thread.cSuccessNone1.054922s1.163086s
Success
ctor_syscall_test.cSuccessNone0.044786s0.137333s
Success
cxa_atexit_test.cSuccessNone0.050160s0.141063s
Success
execve_shebang.cSuccessNone0.054037s0.153652s
Success
exit.cSuccessNone0.051603s0.138563s
Success
exit_failure.cSuccessNone0.052642s0.151666s
Success
exit_group_thread.cSuccessNone0.054805s0.162024s
Success
flockfile_test.cSuccessNone0.054026s0.174548s
Success
fork2malloc.cSuccessNone0.054793s0.158196s
Success
fork_select.cSuccessNone0.053722s0.166464s
Success
fork_simple.cSuccessNone0.051786s0.149918s
Success
fork_syscall.cSuccessNone0.057633s0.303036s
Success
fork_tls_ctype.cSuccessNone0.055692s0.180537s
Success
forkandopen.cSuccessNone0.054844s0.174627s
Success
forkdup.cSuccessNone0.057146s0.168486s
Success
forkexecuid.cSuccessNone0.051881s0.232435s
Success
forkexecv-arg.cSuccessNone0.052251s0.214437s
Success
forkexecv.cSuccessNone0.050378s0.211979s
Success
forkfiles.cSuccessNone0.054853s0.169668s
Success
forkmalloc.cSuccessNone0.060605s0.155059s
Success
forknodup.cSuccessNone0.054644s0.170070s
Success
function-ptr.cSuccessNone0.049167s0.143000s
Success
getegid_syscall.cSuccessNone0.053939s0.265295s
Success
getgid_syscall.cSuccessNone0.054862s0.272108s
Success
getpid.cSuccessNone0.047558s0.135062s
Success
getpid_syscall.cSuccessNone0.055463s0.286539s
Success
getppid.cSuccessNone0.054052s0.158042s
Success
getppid_syscall.cSuccessNone0.056894s0.244177s
Success
getuid.cSuccessNone0.053804s0.147997s
Success
getuid_syscall.cSuccessNone0.053113s0.195969s
Success
hello-arg.cSuccessNone0.046316s0.144790s
Success
hello.cSuccessNone0.045741s0.132348s
Success
longjmp.cSuccessNone0.045953s0.139780s
Success
mutex.cSuccessNone2.056346s2.170520s
Success
printf_deadlock_smoke.cSuccessNone0.061324s0.197569s
Success
printf_thread_test.cSuccessNone0.053179s0.165921s
Success
sem_forks.cSuccessNone0.056095s0.171356s
Success
setsid.cSuccessNone0.047595s0.135813s
Success
template.cSuccessNone0.054096s0.172071s
Success
test_exec_nofork.cSuccessNone0.052693s0.210189s
Success
test_unlink_open_file.cSuccessNone0.049522s0.140474s
Success
thread-test.cSuccessNone0.049274s0.145156s
Success
thread.cSuccessNone0.049152s0.146269s
Success
thread_cageid_race.cSuccessNone0.050630s0.180360s
Success
tls_test.cSuccessNone0.052257s0.157124s
Success
uname.cSuccessNone0.047817s0.137642s
Success
wait.cSuccessNone2.051521s2.157250s
Success
waitpid_anychild.cSuccessNone0.054305s0.155525s
Success
waitpid_syscall.cSuccessNone1.054022s1.192472s
Success
waitpid_wnohang.cSuccessNone0.054690s0.155310s
Success
Signal Tests
alarm.cSuccessNone7.053450s7.180570s
Success
eintr_fork_signal.cSuccessNone1.055828s1.177295s
Success
kill.cSuccessNone1.053394s1.160185s
Success
setitimer.cSuccessNone7.054699s7.185741s
Success
sigalrm.cSuccessNone2.054612s2.169713s
Success
sigaltstack.cSuccessNone0.055029s0.163164s
Success
sigchld.cFailureOutput_mismatch1.055156s1.160938s
=== Expected Output ===
Signal Child Test!

=== WASM Output ===

signal-fork.cSuccessNone4.055897s4.166611s
Success
signal-simple.cSuccessNone0.055020s0.152778s
Success
signal_SIGCHLD.cSuccessNone0.052427s0.160289s
Success
signal_fork.cSuccessNone0.050488s0.167404s
Success
signal_int_ignored.cSuccessNone2.054443s2.163965s
Success
signal_kill_cleanup.cSuccessNone1.052509s1.156755s
Success
signal_procmask.cSuccessNone0.049724s0.153417s
Success
signal_recursive.cSuccessNone0.049007s0.154902s
Success
signal_sa_mask.cSuccessNone0.049008s0.143898s
Success
sigpipe.cSuccessNone1.056516s1.179379s
Success
sigprocmask.cSuccessNone1.055160s1.161529s
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.046294s0.136847s
Success
Memory Tests
mmap-negative1.cSuccessNone0.122859s0.150446s
Success
mmap-negative2.cSuccessNone0.111594s0.144880s
Success
Signal Tests
signal_resethand.cSuccessNone1.053806s1.162488s
Success

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.

munmap() rounding up page logic potentially causes memory faults

2 participants