You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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).
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.
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.c
Success
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.c
Success
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.c
Success
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.c
Success
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.c
Success
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.c
Success
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.c
Success
STDOUT:
pass
STDERR:
simple-tests/cpdata_grate.c
Success
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.c
Success
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.c
Success
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
Metric
Count
Total Test Cases
199
Number of Successes
199
Number of Failures
0
Number of Compilation Failure Native
0
Number of Runtime Failure Native
0
Number of Segmentation Fault Native
0
Number of Timeout During Native
0
Number of Lind Wasm Compile Failure
0
Number of Lind Wasm Runtime Failure
0
Number of Lind Wasm Segmentation Failure
0
Number of Timeout During Lind Wasm run
0
Number of Unknown Failure
0
Number of C Compiler and Wasm Output mismatch
0
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 Case
Status
Error Type
Native Time
Wasm Time
Output
File Tests
chartests.c
Success
None
0.045097s
0.180668s
Success
chdir_getcwd.c
Success
None
0.045555s
0.139975s
Success
chmod.c
Success
None
0.050744s
0.150923s
Success
clock_gettime_highlevel.c
Success
None
0.115855s
0.316689s
Success
clock_gettime_simple.c
Success
None
0.039962s
0.124094s
Success
cloexec.c
Success
None
0.049265s
0.206599s
Success
close.c
Success
None
0.056016s
0.161347s
Success
creat_access.c
Success
None
0.048403s
0.141009s
Success
doubleclose.c
Success
None
0.040569s
0.123508s
Success
dup.c
Success
None
0.041735s
0.139088s
Success
dup2.c
Success
None
0.047014s
0.137658s
Success
dup3.c
Success
None
0.045185s
0.140294s
Success
dupwrite.c
Success
None
0.048635s
0.133600s
Success
etc_conf.c
Success
None
0.043547s
0.142509s
Success
fchdir.c
Success
None
0.051381s
0.151452s
Success
fchmod.c
Success
None
0.050154s
0.152808s
Success
fcntl.c
Success
None
0.047595s
0.143527s
Success
fdatasync.c
Success
None
0.047163s
0.134973s
Success
filetest.c
Success
None
0.047757s
0.135104s
Success
filetest1000.c
Success
None
0.056206s
0.146522s
Success
flock.c
Success
None
0.061876s
0.176182s
Success
fstat.c
Success
None
0.050709s
0.150249s
Success
fstatfs.c
Success
None
0.043140s
0.129573s
Success
fsync.c
Success
None
0.046930s
0.132607s
Success
ftruncate.c
Success
None
0.052266s
0.256393s
Success
getcwd.c
Success
None
0.044608s
0.129981s
Success
getrandom.c
Success
None
0.047759s
0.139841s
Success
ioctl.c
Success
None
0.050269s
0.140201s
Success
link.c
Success
None
0.051639s
0.199307s
Success
locale_test.c
Success
None
0.061719s
0.621227s
Success
lseek.c
Success
None
0.052505s
0.253511s
Success
mkdir_rmdir.c
Success
None
0.049250s
0.143441s
Success
mkfifo_test.c
Success
None
0.054418s
0.186983s
Success
mknod.c
Success
None
0.047261s
0.148541s
Success
nocancel_io.c
Success
None
0.051343s
0.170738s
Success
open.c
Success
None
0.044037s
0.124731s
Success
openat.c
Success
None
0.043282s
0.133547s
Success
path_conversion_safety.c
Success
None
0.052805s
0.168618s
Success
pread_pwrite.c
Success
None
0.045465s
0.146346s
Success
preadv_pwritev.c
Success
None
0.050588s
0.155728s
Success
printf.c
Success
None
0.039726s
0.119084s
Success
prlimit64.c
Success
None
0.041604s
0.126617s
Success
read.c
Success
None
0.048721s
0.143423s
Success
readbytes.c
Success
None
0.045112s
0.128900s
Success
readdir_basic.c
Success
None
0.052156s
0.164751s
Success
readlink.c
Success
None
0.048205s
0.140693s
Success
readlinkat.c
Success
None
0.049942s
0.155810s
Success
readv_writev_test.c
Success
None
0.050526s
0.153036s
Success
rename.c
Success
None
0.050484s
0.140318s
Success
sc-writev.c
Success
None
0.046312s
0.137095s
Success
stat.c
Success
None
0.049421s
0.145227s
Success
statfs.c
Success
None
0.042725s
0.130414s
Success
sync_file_range.c
Success
None
0.046464s
0.140801s
Success
timespec_time_t_compat.c
Success
None
0.046367s
0.129703s
Success
truncate.c
Success
None
0.050079s
0.157955s
Success
unlink.c
Success
None
0.050784s
0.188142s
Success
unlinkat.c
Success
None
0.050116s
0.160690s
Success
write.c
Success
None
0.041581s
0.120876s
Success
writeloop.c
Success
None
0.051174s
0.131871s
Success
writepartial.c
Success
None
0.048704s
0.127943s
Success
writev.c
Success
None
0.049951s
0.151829s
Success
Math Tests
math_link_smoke.c
Success
None
0.052064s
0.131041s
Success
math_tests.c
Success
None
0.055125s
0.163590s
Success
Memory Tests
brk.c
Success
None
0.046163s
0.132388s
Success
fork_large_memory.c
Success
None
0.077232s
0.388700s
Success
malloc.c
Success
None
0.044296s
0.122895s
Success
malloc_large.c
Success
None
0.045328s
0.128011s
Success
memcpy.c
Success
None
0.044450s
0.124866s
Success
memory_error_test.c
Success
None
0.050277s
0.167897s
Success
mmap.c
Success
None
0.041716s
0.128343s
Success
mmap_aligned.c
Success
None
0.042921s
0.141582s
Success
mmap_complicated.c
Success
None
0.048949s
0.146226s
Success
mmap_file.c
Success
None
0.048877s
0.140518s
Success
mmap_shared.c
Success
None
0.048093s
0.143202s
Success
mmaptest.c
Success
None
0.044131s
0.133646s
Success
mprotect.c
Success
None
0.042400s
0.128022s
Success
mprotect_boundary.c
Success
None
0.042683s
0.142904s
Success
mprotect_end_region.c
Success
None
0.041776s
0.134838s
Success
mprotect_middle_region.c
Success
None
0.042267s
0.137094s
Success
mprotect_multiple_times.c
Success
None
0.042301s
0.137651s
Success
mprotect_same_value.c
Success
None
0.042074s
0.133157s
Success
mprotect_spanning_regions.c
Success
None
0.043378s
0.150430s
Success
sbrk.c
Success
None
0.044308s
0.126502s
Success
segfault.c
Success
None
0.049898s
0.158035s
Success
shm.c
Success
None
0.048224s
0.149039s
Success
shmtest.c
Success
None
0.043027s
0.133291s
Success
thread_malloc_sequential.c
Success
None
0.050725s
0.158270s
Success
vtable.c
Success
None
0.053457s
0.144480s
Success
Networking Tests
accept4.c
Success
None
0.054026s
0.160814s
Success
dns_resolve_test.c
Success
None
0.048214s
0.138413s
Success
dnstest.c
Success
None
0.048919s
0.147785s
Success
epoll_edge_triggered.c
Success
None
0.206245s
0.481395s
Success
epollcreate1.c
Success
None
0.051048s
0.149359s
Success
error_handling_net.c
Success
None
0.056691s
0.253646s
Success
getaddrinfo_test.c
Success
None
0.052328s
0.182818s
Success
getaddrinfo_unspec.c
Success
None
0.048614s
0.186096s
Success
gethostname.c
Success
None
0.042688s
0.121845s
Success
getifaddrs.c
Success
None
0.050888s
0.143893s
Success
getsockname.c
Success
None
0.054195s
0.143692s
Success
getsockopt.c
Success
None
0.052781s
0.193063s
Success
ipv6_basic.c
Success
None
0.054515s
0.195022s
Success
makepipe.c
Success
None
0.042129s
0.120407s
Success
nonblocking_eagain.c
Success
None
0.054027s
0.204726s
Success
pipe.c
Success
None
0.051713s
0.152030s
Success
pipe2.c
Success
None
0.051048s
0.140417s
Success
pipeinput.c
Success
None
0.052070s
0.160894s
Success
pipeinput2.c
Success
None
0.052236s
0.161395s
Success
pipeonestring.c
Success
None
0.052156s
0.162986s
Success
pipepong.c
Success
None
0.050777s
0.164758s
Success
pipewrite.c
Success
None
0.045272s
0.141246s
Success
poll.c
Success
None
0.049368s
0.134298s
Success
recvfrom-sendto.c
Success
None
0.050703s
0.154444s
Success
sendmsg_recvmsg_test.c
Success
None
0.050347s
0.149421s
Success
serverclient.c
Success
None
0.049993s
0.143898s
Success
shutdown.c
Success
None
0.052992s
0.147497s
Success
shutdown_fork.c
Success
None
0.050533s
0.149541s
Success
simple-select.c
Success
None
0.051500s
0.163445s
Success
simple_epoll.c
Success
None
0.049664s
0.147610s
Success
socket.c
Success
None
0.047802s
0.133611s
Success
socket_cloexec.c
Success
None
0.048104s
0.134707s
Success
socket_options_advanced.c
Success
None
0.055064s
0.215524s
Success
socketepoll.c
Success
None
0.048358s
0.137616s
Success
socketpair.c
Success
None
0.048407s
0.145208s
Success
socketselect.c
Success
None
0.048465s
0.141769s
Success
udp_send_recv.c
Success
None
0.156578s
0.307725s
Success
uds-getsockname.c
Success
None
0.049506s
0.139723s
Success
uds-nb-select.c
Success
None
2.057715s
2.212918s
Success
uds-serverclient.c
Success
None
0.053732s
0.177253s
Success
uds-socketselect.c
Success
None
0.049948s
0.144391s
Success
writev_socket.c
Success
None
0.052517s
0.181998s
Success
Process Tests
barrier_test.c
Success
None
0.048051s
0.144119s
Success
chain_thread.c
Success
None
1.050595s
1.148581s
Success
ctor_syscall_test.c
Success
None
0.039927s
0.121816s
Success
cxa_atexit_test.c
Success
None
0.045669s
0.127539s
Success
execve_shebang.c
Success
None
0.049568s
0.139375s
Success
exit.c
Success
None
0.046734s
0.125229s
Success
exit_failure.c
Success
None
0.048364s
0.135398s
Success
exit_group_thread.c
Success
None
0.050684s
0.147250s
Success
flockfile_test.c
Success
None
0.049730s
0.159214s
Success
fork2malloc.c
Success
None
0.050537s
0.144122s
Success
fork_select.c
Success
None
0.048434s
0.149429s
Success
fork_simple.c
Success
None
0.046970s
0.135884s
Success
fork_syscall.c
Success
None
0.053167s
0.280817s
Success
fork_tls_ctype.c
Success
None
0.051745s
0.167043s
Success
forkandopen.c
Success
None
0.050793s
0.160065s
Success
forkdup.c
Success
None
0.052755s
0.152952s
Success
forkexecuid.c
Success
None
0.047593s
0.211282s
Success
forkexecv-arg.c
Success
None
0.048023s
0.195454s
Success
forkexecv.c
Success
None
0.046149s
0.187357s
Success
forkfiles.c
Success
None
0.050479s
0.154234s
Success
forkmalloc.c
Success
None
0.057165s
0.139587s
Success
forknodup.c
Success
None
0.050448s
0.155704s
Success
function-ptr.c
Success
None
0.044310s
0.128850s
Success
getegid_syscall.c
Success
None
0.049690s
0.246634s
Success
getgid_syscall.c
Success
None
0.050076s
0.252216s
Success
getpid.c
Success
None
0.042323s
0.123073s
Success
getpid_syscall.c
Success
None
0.051444s
0.263808s
Success
getppid.c
Success
None
0.050089s
0.144309s
Success
getppid_syscall.c
Success
None
0.052717s
0.228085s
Success
getuid.c
Success
None
0.050001s
0.134074s
Success
getuid_syscall.c
Success
None
0.049040s
0.178498s
Success
hello-arg.c
Success
None
0.041745s
0.124539s
Success
hello.c
Success
None
0.040173s
0.118210s
Success
longjmp.c
Success
None
0.041373s
0.125347s
Success
mutex.c
Success
None
2.051952s
2.153107s
Success
printf_deadlock_smoke.c
Success
None
0.058148s
0.183874s
Success
printf_thread_test.c
Success
None
0.051002s
0.154096s
Success
sem_forks.c
Success
None
0.051980s
0.157813s
Success
setsid.c
Success
None
0.042270s
0.123331s
Success
template.c
Success
None
0.049283s
0.155419s
Success
test_exec_nofork.c
Success
None
0.049136s
0.186485s
Success
test_unlink_open_file.c
Success
None
0.044467s
0.125556s
Success
thread-test.c
Success
None
0.044687s
0.132492s
Success
thread.c
Success
None
0.044550s
0.130841s
Success
thread_cageid_race.c
Success
None
0.044992s
0.164709s
Success
tls_test.c
Success
None
0.047432s
0.145215s
Success
uname.c
Success
None
0.042591s
0.124627s
Success
wait.c
Success
None
2.046227s
2.145179s
Success
waitpid_anychild.c
Success
None
0.049470s
0.141105s
Success
waitpid_syscall.c
Success
None
1.049201s
1.174327s
Success
waitpid_wnohang.c
Success
None
0.049625s
0.140975s
Success
Signal Tests
alarm.c
Success
None
7.048407s
7.160983s
Success
eintr_fork_signal.c
Success
None
1.051370s
1.159338s
Success
kill.c
Success
None
1.048674s
1.144869s
Success
setitimer.c
Success
None
7.049424s
7.166639s
Success
sigalrm.c
Success
None
2.049111s
2.152224s
Success
sigaltstack.c
Success
None
0.050873s
0.148415s
Success
sigchld.c
Success
None
1.050809s
1.144684s
Success
signal-fork.c
Success
None
4.050780s
4.150043s
Success
signal-simple.c
Success
None
0.049870s
0.140380s
Success
signal_SIGCHLD.c
Success
None
0.048121s
0.144957s
Success
signal_fork.c
Success
None
0.046571s
0.150601s
Success
signal_int_ignored.c
Success
None
2.049450s
2.148720s
Success
signal_kill_cleanup.c
Success
None
1.047108s
1.140506s
Success
signal_procmask.c
Success
None
0.044355s
0.139008s
Success
signal_recursive.c
Success
None
0.044357s
0.138889s
Success
signal_sa_mask.c
Success
None
0.043775s
0.131429s
Success
sigpipe.c
Success
None
1.051358s
1.163072s
Success
sigprocmask.c
Success
None
1.049284s
1.148119s
Success
Fail Tests
Summary
Metric
Count
Total Test Cases
4
Number of Successes
4
Number of Failures
0
Number of Compilation Failure Native
0
Number of Runtime Failure Native
0
Number of Segmentation Fault Native
0
Number of Timeout During Native
0
Number of Lind Wasm Compile Failure
0
Number of Lind Wasm Runtime Failure
0
Number of Lind Wasm Segmentation Failure
0
Number of Timeout During Lind Wasm run
0
Number of Unknown Failure
0
Number of C Compiler and Wasm Output mismatch
0
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)
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.
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.c
Success
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.c
Success
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.c
Success
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.c
Success
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.c
Success
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.c
Success
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.c
Success
STDOUT:
pass
STDERR:
simple-tests/cpdata_grate.c
Success
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.c
Success
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.c
Success
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
Metric
Count
Total Test Cases
200
Number of Successes
199
Number of Failures
1
Number of Compilation Failure Native
0
Number of Runtime Failure Native
1
Number of Segmentation Fault Native
0
Number of Timeout During Native
0
Number of Lind Wasm Compile Failure
0
Number of Lind Wasm Runtime Failure
0
Number of Lind Wasm Segmentation Failure
0
Number of Timeout During Lind Wasm run
0
Number of Unknown Failure
0
Number of C Compiler and Wasm Output mismatch
0
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 Case
Status
Error Type
Native Time
Wasm Time
Output
File Tests
chartests.c
Success
None
0.047762s
0.190149s
Success
chdir_getcwd.c
Success
None
0.047488s
0.146455s
Success
chmod.c
Success
None
0.053088s
0.155173s
Success
clock_gettime_highlevel.c
Success
None
0.118674s
0.326628s
Success
clock_gettime_simple.c
Success
None
0.042620s
0.135427s
Success
cloexec.c
Success
None
0.052283s
0.215974s
Success
close.c
Success
None
0.060182s
0.174144s
Success
creat_access.c
Success
None
0.050905s
0.147982s
Success
doubleclose.c
Success
None
0.042901s
0.128055s
Success
dup.c
Success
None
0.042516s
0.146683s
Success
dup2.c
Success
None
0.048213s
0.145550s
Success
dup3.c
Success
None
0.048056s
0.149815s
Success
dupwrite.c
Success
None
0.051033s
0.141964s
Success
etc_conf.c
Success
None
0.044849s
0.151165s
Success
fchdir.c
Success
None
0.052812s
0.157675s
Success
fchmod.c
Success
None
0.052177s
0.158754s
Success
fcntl.c
Success
None
0.049592s
0.153778s
Success
fdatasync.c
Success
None
0.050762s
0.143285s
Success
filetest.c
Success
None
0.049917s
0.142820s
Success
filetest1000.c
Success
None
0.057218s
0.153831s
Success
flock.c
Success
None
0.059865s
0.184965s
Success
fstat.c
Success
None
0.051318s
0.155169s
Success
fstatfs.c
Success
None
0.046652s
0.136546s
Success
fsync.c
Success
None
0.048246s
0.137238s
Success
ftruncate.c
Success
None
0.054103s
0.270707s
Success
getcwd.c
Success
None
0.046873s
0.139547s
Success
getrandom.c
Success
None
0.050916s
0.147798s
Success
ioctl.c
Success
None
0.052238s
0.147933s
Success
link.c
Success
None
0.053929s
0.205303s
Success
locale_test.c
Success
None
0.065240s
0.661489s
Success
lseek.c
Success
None
0.053929s
0.261901s
Success
mkdir_rmdir.c
Success
None
0.051129s
0.150090s
Success
mkfifo_test.c
Success
None
0.056302s
0.196517s
Success
mknod.c
Success
None
0.049550s
0.155440s
Success
nocancel_io.c
Success
None
0.052822s
0.177450s
Success
open.c
Success
None
0.045503s
0.131273s
Success
openat.c
Success
None
0.045601s
0.141948s
Success
path_conversion_safety.c
Success
None
0.054420s
0.176981s
Success
pread_pwrite.c
Success
None
0.047054s
0.153342s
Success
preadv_pwritev.c
Success
None
0.054289s
0.163298s
Success
printf.c
Success
None
0.041116s
0.126507s
Success
prlimit64.c
Success
None
0.044366s
0.133513s
Success
read.c
Success
None
0.050126s
0.147904s
Success
readbytes.c
Success
None
0.046590s
0.139184s
Success
readdir_basic.c
Success
None
0.053742s
0.173272s
Success
readlink.c
Success
None
0.050953s
0.151479s
Success
readlinkat.c
Success
None
0.052393s
0.157257s
Success
readv_writev_test.c
Success
None
0.053461s
0.158828s
Success
rename.c
Success
None
0.052440s
0.145316s
Success
sc-writev.c
Success
None
0.048700s
0.147423s
Success
stat.c
Success
None
0.053609s
0.153605s
Success
statfs.c
Success
None
0.047228s
0.141141s
Success
sync_file_range.c
Success
None
0.049244s
0.146733s
Success
timespec_time_t_compat.c
Success
None
0.047801s
0.134101s
Success
truncate.c
Success
None
0.051479s
0.162087s
Success
unlink.c
Success
None
0.053989s
0.201476s
Success
unlinkat.c
Success
None
0.052819s
0.166726s
Success
write.c
Success
None
0.043942s
0.129492s
Success
writeloop.c
Success
None
0.052669s
0.137525s
Success
writepartial.c
Success
None
0.053309s
0.139080s
Success
writev.c
Success
None
0.052343s
0.156008s
Success
Math Tests
math_link_smoke.c
Success
None
0.054581s
0.142955s
Success
math_tests.c
Success
None
0.061356s
0.170857s
Success
Memory Tests
brk.c
Success
None
0.047268s
0.136671s
Success
fork_large_memory.c
Success
None
0.078881s
0.387898s
Success
malloc.c
Success
None
0.045818s
0.126400s
Success
malloc_large.c
Success
None
0.047495s
0.132260s
Success
memcpy.c
Success
None
0.046686s
0.129507s
Success
memory_error_test.c
Success
None
0.051381s
0.169390s
Success
mmap.c
Success
None
0.041375s
0.133329s
Success
mmap_aligned.c
Success
None
0.043691s
0.146241s
Success
mmap_complicated.c
Success
None
0.051073s
0.153656s
Success
mmap_file.c
Success
None
0.049905s
0.144338s
Success
mmap_shared.c
Success
None
0.048748s
0.146598s
Success
mmaptest.c
Success
None
0.045418s
0.137904s
Success
mprotect.c
Success
None
0.043953s
0.132612s
Success
mprotect_boundary.c
Success
None
0.044047s
0.146593s
Success
mprotect_end_region.c
Success
None
0.042526s
0.142284s
Success
mprotect_middle_region.c
Success
None
0.043712s
0.141832s
Success
mprotect_multiple_times.c
Success
None
0.043153s
0.142297s
Success
mprotect_same_value.c
Success
None
0.043116s
0.138071s
Success
mprotect_spanning_regions.c
Success
None
0.044228s
0.158292s
Success
munmap_adjacent_shm.c
Failure
Failure_native_running
0.046669s
N/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.c
Success
None
0.046006s
0.130754s
Success
segfault.c
Success
None
0.051181s
0.163317s
Success
shm.c
Success
None
0.049273s
0.154659s
Success
shmtest.c
Success
None
0.044225s
0.136563s
Success
thread_malloc_sequential.c
Success
None
0.052403s
0.162022s
Success
vtable.c
Success
None
0.054721s
0.155323s
Success
Networking Tests
accept4.c
Success
None
0.057337s
0.169005s
Success
dns_resolve_test.c
Success
None
0.050361s
0.144404s
Success
dnstest.c
Success
None
0.052161s
0.157454s
Success
epoll_edge_triggered.c
Success
None
0.208134s
0.509564s
Success
epollcreate1.c
Success
None
0.051128s
0.153337s
Success
error_handling_net.c
Success
None
0.058404s
0.271840s
Success
getaddrinfo_test.c
Success
None
0.053990s
0.190424s
Success
getaddrinfo_unspec.c
Success
None
0.051496s
0.161808s
Success
gethostname.c
Success
None
0.043570s
0.129233s
Success
getifaddrs.c
Success
None
0.053206s
0.151011s
Success
getsockname.c
Success
None
0.057522s
0.148847s
Success
getsockopt.c
Success
None
0.053673s
0.201158s
Success
ipv6_basic.c
Success
None
0.056412s
0.205107s
Success
makepipe.c
Success
None
0.043086s
0.125413s
Success
nonblocking_eagain.c
Success
None
0.055283s
0.216910s
Success
pipe.c
Success
None
0.052700s
0.157355s
Success
pipe2.c
Success
None
0.052483s
0.148207s
Success
pipeinput.c
Success
None
0.053277s
0.166810s
Success
pipeinput2.c
Success
None
0.055081s
0.173291s
Success
pipeonestring.c
Success
None
0.053210s
0.169058s
Success
pipepong.c
Success
None
0.051735s
0.171795s
Success
pipewrite.c
Success
None
0.046883s
0.152704s
Success
poll.c
Success
None
0.051670s
0.141283s
Success
recvfrom-sendto.c
Success
None
0.052217s
0.158556s
Success
sendmsg_recvmsg_test.c
Success
None
0.054003s
0.184471s
Success
serverclient.c
Success
None
0.052355s
0.154961s
Success
shutdown.c
Success
None
0.053766s
0.152038s
Success
shutdown_fork.c
Success
None
0.051137s
0.156739s
Success
simple-select.c
Success
None
0.053689s
0.172760s
Success
simple_epoll.c
Success
None
0.051219s
0.152650s
Success
socket.c
Success
None
0.051946s
0.141842s
Success
socket_cloexec.c
Success
None
0.049189s
0.141368s
Success
socket_options_advanced.c
Success
None
0.056588s
0.222157s
Success
socketepoll.c
Success
None
0.050151s
0.145772s
Success
socketpair.c
Success
None
0.049271s
0.149900s
Success
socketselect.c
Success
None
0.049844s
0.148156s
Success
udp_send_recv.c
Success
None
0.157802s
0.315983s
Success
uds-getsockname.c
Success
None
0.054169s
0.149248s
Success
uds-nb-select.c
Success
None
2.062062s
2.219366s
Success
uds-serverclient.c
Success
None
0.055108s
0.218520s
Success
uds-socketselect.c
Success
None
0.051044s
0.149375s
Success
writev_socket.c
Success
None
0.054934s
0.189169s
Success
Process Tests
barrier_test.c
Success
None
0.050739s
0.159253s
Success
chain_thread.c
Success
None
1.052080s
1.159432s
Success
ctor_syscall_test.c
Success
None
0.042638s
0.131694s
Success
cxa_atexit_test.c
Success
None
0.048064s
0.134991s
Success
execve_shebang.c
Success
None
0.050700s
0.146275s
Success
exit.c
Success
None
0.049326s
0.130927s
Success
exit_failure.c
Success
None
0.051361s
0.144314s
Success
exit_group_thread.c
Success
None
0.052854s
0.157134s
Success
flockfile_test.c
Success
None
0.054158s
0.172553s
Success
fork2malloc.c
Success
None
0.053841s
0.150413s
Success
fork_select.c
Success
None
0.051116s
0.158027s
Success
fork_simple.c
Success
None
0.049826s
0.150313s
Success
fork_syscall.c
Success
None
0.055235s
0.304285s
Success
fork_tls_ctype.c
Success
None
0.054981s
0.177568s
Success
forkandopen.c
Success
None
0.053607s
0.171258s
Success
forkdup.c
Success
None
0.061036s
0.164196s
Success
forkexecuid.c
Success
None
0.049351s
0.219008s
Success
forkexecv-arg.c
Success
None
0.050022s
0.201644s
Success
forkexecv.c
Success
None
0.048714s
0.199289s
Success
forkfiles.c
Success
None
0.051122s
0.160206s
Success
forkmalloc.c
Success
None
0.065231s
0.146546s
Success
forknodup.c
Success
None
0.052591s
0.165658s
Success
function-ptr.c
Success
None
0.047698s
0.133589s
Success
getegid_syscall.c
Success
None
0.053515s
0.261314s
Success
getgid_syscall.c
Success
None
0.052406s
0.258756s
Success
getpid.c
Success
None
0.044051s
0.127104s
Success
getpid_syscall.c
Success
None
0.053472s
0.286546s
Success
getppid.c
Success
None
0.051873s
0.153940s
Success
getppid_syscall.c
Success
None
0.053772s
0.236824s
Success
getuid.c
Success
None
0.051126s
0.140083s
Success
getuid_syscall.c
Success
None
0.050258s
0.186250s
Success
hello-arg.c
Success
None
0.041342s
0.129122s
Success
hello.c
Success
None
0.041604s
0.130103s
Success
longjmp.c
Success
None
0.043102s
0.131385s
Success
mutex.c
Success
None
2.054502s
2.160126s
Success
printf_deadlock_smoke.c
Success
None
0.059608s
0.193391s
Success
printf_thread_test.c
Success
None
0.050509s
0.161751s
Success
sem_forks.c
Success
None
0.055306s
0.165864s
Success
setsid.c
Success
None
0.043809s
0.128317s
Success
template.c
Success
None
0.051660s
0.166416s
Success
test_exec_nofork.c
Success
None
0.048949s
0.202851s
Success
test_unlink_open_file.c
Success
None
0.047753s
0.135479s
Success
thread-test.c
Success
None
0.047398s
0.141082s
Success
thread.c
Success
None
0.045209s
0.137014s
Success
thread_cageid_race.c
Success
None
0.048772s
0.171078s
Success
tls_test.c
Success
None
0.048629s
0.151819s
Success
uname.c
Success
None
0.045207s
0.135627s
Success
wait.c
Success
None
2.049683s
2.147357s
Success
waitpid_anychild.c
Success
None
0.051941s
0.150120s
Success
waitpid_syscall.c
Success
None
1.050975s
1.193090s
Success
waitpid_wnohang.c
Success
None
0.051411s
0.152849s
Success
Signal Tests
alarm.c
Success
None
7.050261s
7.171628s
Success
eintr_fork_signal.c
Success
None
1.055376s
1.173880s
Success
kill.c
Success
None
1.050980s
1.150416s
Success
setitimer.c
Success
None
7.054273s
7.180253s
Success
sigalrm.c
Success
None
2.050756s
2.167937s
Success
sigaltstack.c
Success
None
0.053257s
0.158663s
Success
sigchld.c
Success
None
1.054318s
1.156477s
Success
signal-fork.c
Success
None
4.053396s
4.158329s
Success
signal-simple.c
Success
None
0.053187s
0.151588s
Success
signal_SIGCHLD.c
Success
None
0.050723s
0.153712s
Success
signal_fork.c
Success
None
0.048251s
0.160464s
Success
signal_int_ignored.c
Success
None
2.051741s
2.157131s
Success
signal_kill_cleanup.c
Success
None
1.049166s
1.148970s
Success
signal_procmask.c
Success
None
0.046360s
0.148122s
Success
signal_recursive.c
Success
None
0.045575s
0.145299s
Success
signal_sa_mask.c
Success
None
0.046026s
0.143225s
Success
sigpipe.c
Success
None
1.053916s
1.175650s
Success
sigprocmask.c
Success
None
1.053811s
1.159405s
Success
Fail Tests
Summary
Metric
Count
Total Test Cases
4
Number of Successes
4
Number of Failures
0
Number of Compilation Failure Native
0
Number of Runtime Failure Native
0
Number of Segmentation Fault Native
0
Number of Timeout During Native
0
Number of Lind Wasm Compile Failure
0
Number of Lind Wasm Runtime Failure
0
Number of Lind Wasm Segmentation Failure
0
Number of Timeout During Lind Wasm run
0
Number of Unknown Failure
0
Number of C Compiler and Wasm Output mismatch
0
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)
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.c
Success
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.c
Success
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.c
Success
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.c
Success
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.c
Success
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.c
Success
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.c
Success
STDOUT:
pass
STDERR:
simple-tests/cpdata_grate.c
Success
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.c
Success
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.c
Success
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
Metric
Count
Total Test Cases
200
Number of Successes
198
Number of Failures
2
Number of Compilation Failure Native
0
Number of Runtime Failure Native
1
Number of Segmentation Fault Native
0
Number of Timeout During Native
0
Number of Lind Wasm Compile Failure
0
Number of Lind Wasm Runtime Failure
0
Number of Lind Wasm Segmentation Failure
0
Number of Timeout During Lind Wasm run
0
Number of Unknown Failure
0
Number of C Compiler and Wasm Output mismatch
1
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 Case
Status
Error Type
Native Time
Wasm Time
Output
File Tests
chartests.c
Success
None
0.050105s
0.197128s
Success
chdir_getcwd.c
Success
None
0.050489s
0.153971s
Success
chmod.c
Success
None
0.054688s
0.164687s
Success
clock_gettime_highlevel.c
Success
None
0.121779s
0.356971s
Success
clock_gettime_simple.c
Success
None
0.045116s
0.139249s
Success
cloexec.c
Success
None
0.053445s
0.228145s
Success
close.c
Success
None
0.062619s
0.178244s
Success
creat_access.c
Success
None
0.053135s
0.153649s
Success
doubleclose.c
Success
None
0.045907s
0.136272s
Success
dup.c
Success
None
0.047185s
0.154175s
Success
dup2.c
Success
None
0.051987s
0.151292s
Success
dup3.c
Success
None
0.050057s
0.155984s
Success
dupwrite.c
Success
None
0.052859s
0.148749s
Success
etc_conf.c
Success
None
0.048385s
0.155699s
Success
fchdir.c
Success
None
0.054863s
0.166779s
Success
fchmod.c
Success
None
0.054608s
0.165856s
Success
fcntl.c
Success
None
0.052472s
0.159852s
Success
fdatasync.c
Success
None
0.052186s
0.145862s
Success
filetest.c
Success
None
0.052246s
0.148899s
Success
filetest1000.c
Success
None
0.063124s
0.163952s
Success
flock.c
Success
None
0.062954s
0.192596s
Success
fstat.c
Success
None
0.054548s
0.163394s
Success
fstatfs.c
Success
None
0.048554s
0.144563s
Success
fsync.c
Success
None
0.051880s
0.147130s
Success
ftruncate.c
Success
None
0.056091s
0.276436s
Success
getcwd.c
Success
None
0.049479s
0.142920s
Success
getrandom.c
Success
None
0.052568s
0.155272s
Success
ioctl.c
Success
None
0.054489s
0.154540s
Success
link.c
Success
None
0.056369s
0.211708s
Success
locale_test.c
Success
None
0.063415s
0.625310s
Success
lseek.c
Success
None
0.056349s
0.272100s
Success
mkdir_rmdir.c
Success
None
0.053369s
0.155578s
Success
mkfifo_test.c
Success
None
0.057729s
0.200929s
Success
mknod.c
Success
None
0.053704s
0.165060s
Success
nocancel_io.c
Success
None
0.056129s
0.185157s
Success
open.c
Success
None
0.047993s
0.138951s
Success
openat.c
Success
None
0.048631s
0.148338s
Success
path_conversion_safety.c
Success
None
0.056227s
0.183021s
Success
pread_pwrite.c
Success
None
0.050692s
0.162463s
Success
preadv_pwritev.c
Success
None
0.054974s
0.170123s
Success
printf.c
Success
None
0.045378s
0.132638s
Success
prlimit64.c
Success
None
0.047021s
0.140070s
Success
read.c
Success
None
0.053659s
0.158030s
Success
readbytes.c
Success
None
0.049824s
0.142115s
Success
readdir_basic.c
Success
None
0.056822s
0.180289s
Success
readlink.c
Success
None
0.053237s
0.155436s
Success
readlinkat.c
Success
None
0.054515s
0.162012s
Success
readv_writev_test.c
Success
None
0.054557s
0.168165s
Success
rename.c
Success
None
0.054403s
0.152465s
Success
sc-writev.c
Success
None
0.051468s
0.152347s
Success
stat.c
Success
None
0.054011s
0.158885s
Success
statfs.c
Success
None
0.047807s
0.145831s
Success
sync_file_range.c
Success
None
0.051342s
0.152899s
Success
timespec_time_t_compat.c
Success
None
0.050209s
0.142665s
Success
truncate.c
Success
None
0.055046s
0.173441s
Success
unlink.c
Success
None
0.054964s
0.203977s
Success
unlinkat.c
Success
None
0.054564s
0.172530s
Success
write.c
Success
None
0.047268s
0.135650s
Success
writeloop.c
Success
None
0.056180s
0.145007s
Success
writepartial.c
Success
None
0.053861s
0.143022s
Success
writev.c
Success
None
0.054517s
0.162872s
Success
Math Tests
math_link_smoke.c
Success
None
0.057259s
0.144259s
Success
math_tests.c
Success
None
0.060430s
0.175911s
Success
Memory Tests
brk.c
Success
None
0.050811s
0.146752s
Success
fork_large_memory.c
Success
None
0.082568s
0.402589s
Success
malloc.c
Success
None
0.049550s
0.135282s
Success
malloc_large.c
Success
None
0.051073s
0.146308s
Success
memcpy.c
Success
None
0.048876s
0.138166s
Success
memory_error_test.c
Success
None
0.054451s
0.181739s
Success
mmap.c
Success
None
0.044726s
0.141884s
Success
mmap_aligned.c
Success
None
0.047651s
0.155053s
Success
mmap_complicated.c
Success
None
0.053700s
0.162522s
Success
mmap_file.c
Success
None
0.053300s
0.154999s
Success
mmap_shared.c
Success
None
0.052013s
0.156187s
Success
mmaptest.c
Success
None
0.049036s
0.148198s
Success
mprotect.c
Success
None
0.047976s
0.140854s
Success
mprotect_boundary.c
Success
None
0.047604s
0.158387s
Success
mprotect_end_region.c
Success
None
0.046904s
0.148697s
Success
mprotect_middle_region.c
Success
None
0.047102s
0.152171s
Success
mprotect_multiple_times.c
Success
None
0.047230s
0.151508s
Success
mprotect_same_value.c
Success
None
0.047200s
0.147235s
Success
mprotect_spanning_regions.c
Success
None
0.048048s
0.164941s
Success
munmap_adjacent_shm.c
Failure
Failure_native_running
0.049779s
N/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.c
Success
None
0.048908s
0.139451s
Success
segfault.c
Success
None
0.054138s
0.173660s
Success
shm.c
Success
None
0.053071s
0.163979s
Success
shmtest.c
Success
None
0.047995s
0.145961s
Success
thread_malloc_sequential.c
Success
None
0.054038s
0.171885s
Success
vtable.c
Success
None
0.058238s
0.158493s
Success
Networking Tests
accept4.c
Success
None
0.058422s
0.175755s
Success
dns_resolve_test.c
Success
None
0.052497s
0.152313s
Success
dnstest.c
Success
None
0.053406s
0.162334s
Success
epoll_edge_triggered.c
Success
None
0.209546s
0.502623s
Success
epollcreate1.c
Success
None
0.054501s
0.162475s
Success
error_handling_net.c
Success
None
0.060202s
0.271486s
Success
getaddrinfo_test.c
Success
None
0.056545s
0.198386s
Success
getaddrinfo_unspec.c
Success
None
0.056023s
0.158738s
Success
gethostname.c
Success
None
0.047596s
0.137007s
Success
getifaddrs.c
Success
None
0.054964s
0.157670s
Success
getsockname.c
Success
None
0.057913s
0.157222s
Success
getsockopt.c
Success
None
0.056195s
0.207958s
Success
ipv6_basic.c
Success
None
0.058017s
0.208012s
Success
makepipe.c
Success
None
0.047244s
0.134319s
Success
nonblocking_eagain.c
Success
None
0.057797s
0.222018s
Success
pipe.c
Success
None
0.055671s
0.165733s
Success
pipe2.c
Success
None
0.055063s
0.154688s
Success
pipeinput.c
Success
None
0.056067s
0.179206s
Success
pipeinput2.c
Success
None
0.056743s
0.176610s
Success
pipeonestring.c
Success
None
0.055962s
0.175147s
Success
pipepong.c
Success
None
0.055349s
0.180352s
Success
pipewrite.c
Success
None
0.050245s
0.155985s
Success
poll.c
Success
None
0.054124s
0.146978s
Success
recvfrom-sendto.c
Success
None
0.055173s
0.169357s
Success
sendmsg_recvmsg_test.c
Success
None
0.054468s
0.163608s
Success
serverclient.c
Success
None
0.054119s
0.157512s
Success
shutdown.c
Success
None
0.056042s
0.159991s
Success
shutdown_fork.c
Success
None
0.054400s
0.165037s
Success
simple-select.c
Success
None
0.055591s
0.181065s
Success
simple_epoll.c
Success
None
0.054578s
0.160488s
Success
socket.c
Success
None
0.052751s
0.146751s
Success
socket_cloexec.c
Success
None
0.052859s
0.149341s
Success
socket_options_advanced.c
Success
None
0.058437s
0.230052s
Success
socketepoll.c
Success
None
0.052854s
0.155334s
Success
socketpair.c
Success
None
0.052909s
0.160478s
Success
socketselect.c
Success
None
0.053497s
0.156881s
Success
udp_send_recv.c
Success
None
0.160283s
0.325602s
Success
uds-getsockname.c
Success
None
0.053735s
0.154327s
Success
uds-nb-select.c
Success
None
2.061445s
2.226924s
Success
uds-serverclient.c
Success
None
0.057698s
0.191892s
Success
uds-socketselect.c
Success
None
0.054822s
0.157538s
Success
writev_socket.c
Success
None
0.056424s
0.195394s
Success
Process Tests
barrier_test.c
Success
None
0.053114s
0.158321s
Success
chain_thread.c
Success
None
1.054922s
1.163086s
Success
ctor_syscall_test.c
Success
None
0.044786s
0.137333s
Success
cxa_atexit_test.c
Success
None
0.050160s
0.141063s
Success
execve_shebang.c
Success
None
0.054037s
0.153652s
Success
exit.c
Success
None
0.051603s
0.138563s
Success
exit_failure.c
Success
None
0.052642s
0.151666s
Success
exit_group_thread.c
Success
None
0.054805s
0.162024s
Success
flockfile_test.c
Success
None
0.054026s
0.174548s
Success
fork2malloc.c
Success
None
0.054793s
0.158196s
Success
fork_select.c
Success
None
0.053722s
0.166464s
Success
fork_simple.c
Success
None
0.051786s
0.149918s
Success
fork_syscall.c
Success
None
0.057633s
0.303036s
Success
fork_tls_ctype.c
Success
None
0.055692s
0.180537s
Success
forkandopen.c
Success
None
0.054844s
0.174627s
Success
forkdup.c
Success
None
0.057146s
0.168486s
Success
forkexecuid.c
Success
None
0.051881s
0.232435s
Success
forkexecv-arg.c
Success
None
0.052251s
0.214437s
Success
forkexecv.c
Success
None
0.050378s
0.211979s
Success
forkfiles.c
Success
None
0.054853s
0.169668s
Success
forkmalloc.c
Success
None
0.060605s
0.155059s
Success
forknodup.c
Success
None
0.054644s
0.170070s
Success
function-ptr.c
Success
None
0.049167s
0.143000s
Success
getegid_syscall.c
Success
None
0.053939s
0.265295s
Success
getgid_syscall.c
Success
None
0.054862s
0.272108s
Success
getpid.c
Success
None
0.047558s
0.135062s
Success
getpid_syscall.c
Success
None
0.055463s
0.286539s
Success
getppid.c
Success
None
0.054052s
0.158042s
Success
getppid_syscall.c
Success
None
0.056894s
0.244177s
Success
getuid.c
Success
None
0.053804s
0.147997s
Success
getuid_syscall.c
Success
None
0.053113s
0.195969s
Success
hello-arg.c
Success
None
0.046316s
0.144790s
Success
hello.c
Success
None
0.045741s
0.132348s
Success
longjmp.c
Success
None
0.045953s
0.139780s
Success
mutex.c
Success
None
2.056346s
2.170520s
Success
printf_deadlock_smoke.c
Success
None
0.061324s
0.197569s
Success
printf_thread_test.c
Success
None
0.053179s
0.165921s
Success
sem_forks.c
Success
None
0.056095s
0.171356s
Success
setsid.c
Success
None
0.047595s
0.135813s
Success
template.c
Success
None
0.054096s
0.172071s
Success
test_exec_nofork.c
Success
None
0.052693s
0.210189s
Success
test_unlink_open_file.c
Success
None
0.049522s
0.140474s
Success
thread-test.c
Success
None
0.049274s
0.145156s
Success
thread.c
Success
None
0.049152s
0.146269s
Success
thread_cageid_race.c
Success
None
0.050630s
0.180360s
Success
tls_test.c
Success
None
0.052257s
0.157124s
Success
uname.c
Success
None
0.047817s
0.137642s
Success
wait.c
Success
None
2.051521s
2.157250s
Success
waitpid_anychild.c
Success
None
0.054305s
0.155525s
Success
waitpid_syscall.c
Success
None
1.054022s
1.192472s
Success
waitpid_wnohang.c
Success
None
0.054690s
0.155310s
Success
Signal Tests
alarm.c
Success
None
7.053450s
7.180570s
Success
eintr_fork_signal.c
Success
None
1.055828s
1.177295s
Success
kill.c
Success
None
1.053394s
1.160185s
Success
setitimer.c
Success
None
7.054699s
7.185741s
Success
sigalrm.c
Success
None
2.054612s
2.169713s
Success
sigaltstack.c
Success
None
0.055029s
0.163164s
Success
sigchld.c
Failure
Output_mismatch
1.055156s
1.160938s
=== Expected Output ===
Signal Child Test!
=== WASM Output ===
signal-fork.c
Success
None
4.055897s
4.166611s
Success
signal-simple.c
Success
None
0.055020s
0.152778s
Success
signal_SIGCHLD.c
Success
None
0.052427s
0.160289s
Success
signal_fork.c
Success
None
0.050488s
0.167404s
Success
signal_int_ignored.c
Success
None
2.054443s
2.163965s
Success
signal_kill_cleanup.c
Success
None
1.052509s
1.156755s
Success
signal_procmask.c
Success
None
0.049724s
0.153417s
Success
signal_recursive.c
Success
None
0.049007s
0.154902s
Success
signal_sa_mask.c
Success
None
0.049008s
0.143898s
Success
sigpipe.c
Success
None
1.056516s
1.179379s
Success
sigprocmask.c
Success
None
1.055160s
1.161529s
Success
Fail Tests
Summary
Metric
Count
Total Test Cases
4
Number of Successes
4
Number of Failures
0
Number of Compilation Failure Native
0
Number of Runtime Failure Native
0
Number of Segmentation Fault Native
0
Number of Timeout During Native
0
Number of Lind Wasm Compile Failure
0
Number of Lind Wasm Runtime Failure
0
Number of Lind Wasm Segmentation Failure
0
Number of Timeout During Lind Wasm run
0
Number of Unknown Failure
0
Number of C Compiler and Wasm Output mismatch
0
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)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Purpose
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.