Skip to content

Add support for setxattr and listxattr system calls#986

Open
celinehoang177 wants to merge 2 commits intomainfrom
setxattr-listxattr-system-calls
Open

Add support for setxattr and listxattr system calls#986
celinehoang177 wants to merge 2 commits intomainfrom
setxattr-listxattr-system-calls

Conversation

@celinehoang177
Copy link
Copy Markdown
Contributor

Implements support for setxattr() and listxattr() system calls in Lind-Wasm, enabling compatibility with Python 3.14.3 and other applications that use extended file attributes.

Changes:

Closes #889

@celinehoang177 celinehoang177 force-pushed the setxattr-listxattr-system-calls branch 2 times, most recently from ac6973f to 4f27bcf Compare March 27, 2026 01:42
@github-actions
Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

Unified Test Report

grate harness

MetricValue
Total10
Success10
Failures0
Compile Failures0
Runtime Failures0
Timeout Failures0
Missing Pair Failures0

Cases

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

STDERR:

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

STDERR:

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

[Grate|interpose-exit] PASS

STDERR:

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

STDERR:

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

STDERR:

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

STDERR:

multi-register_grate.cSuccess
STDOUT:
[Grate|multi-register_grate] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|multi-register_grate] Registering getuid handler for cage 2 in grate 1 with fn ptr addr: 4
[Grate|multi-register_grate] Handling function ptr: 3 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Grate|multi-register_grate] Handling function ptr: 4 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/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|geteuid] Handling function ptr: 3 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases197
Number of Successes193
Number of Failures4
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 Failure3
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.039432s4.171958s
Success
chdir_getcwd.cSuccessNone0.038883s4.159428s
Success
chmod.cSuccessNone0.043911s4.154013s
Success
clock_gettime_highlevel.cSuccessNone0.266974s4.343668s
Success
clock_gettime_simple.cSuccessNone0.035062s4.135113s
Success
cloexec.cSuccessNone0.042240s3.830891s
Success
close.cSuccessNone0.044996s4.165657s
Success
creat_access.cSuccessNone0.041419s4.158319s
Success
doubleclose.cSuccessNone0.036297s3.770604s
Success
dup.cSuccessNone0.036001s4.135360s
Success
dup2.cSuccessNone0.040996s3.782589s
Success
dup3.cSuccessNone0.039262s4.148827s
Success
dupwrite.cSuccessNone0.042424s3.763491s
Success
etc_conf.cSuccessNone0.038406s4.131597s
Success
fchdir.cSuccessNone0.044052s4.155220s
Success
fchmod.cSuccessNone0.045029s4.145328s
Success
fcntl.cSuccessNone0.042805s4.155371s
Success
fdatasync.cSuccessNone0.040765s4.121475s
Success
filetest.cSuccessNone0.041688s3.813887s
Success
filetest1000.cSuccessNone0.044142s3.776272s
Success
flock.cSuccessNone0.048012s4.228803s
Success
fstat.cSuccessNone0.042810s4.155019s
Success
fstatfs.cSuccessNone0.037770s4.129519s
Success
fsync.cSuccessNone0.041014s4.143568s
Success
ftruncate.cSuccessNone0.045187s4.198763s
Success
getcwd.cSuccessNone0.038636s4.158293s
Success
getrandom.cSuccessNone0.041502s4.169401s
Success
ioctl.cSuccessNone0.044658s4.153051s
Success
link.cSuccessNone0.044043s4.190396s
Success
locale_test.cSuccessNone0.052809s5.915971s
Success
lseek.cSuccessNone0.045438s4.206923s
Success
mkdir_rmdir.cSuccessNone0.042260s4.150989s
Success
mkfifo_test.cSuccessNone0.046391s4.228074s
Success
mknod.cSuccessNone0.041470s4.160690s
Success
nocancel_io.cSuccessNone0.044749s5.296861s
Success
open.cSuccessNone0.037255s4.135913s
Success
openat.cSuccessNone0.038487s4.139204s
Success
path_conversion_safety.cSuccessNone0.045186s4.155571s
Success
pread_pwrite.cSuccessNone0.042120s4.145851s
Success
printf.cSuccessNone0.035103s3.787129s
Success
prlimit64.cSuccessNone0.036720s3.769735s
Success
read.cSuccessNone0.042228s4.138751s
Success
readbytes.cSuccessNone0.038640s3.760422s
Success
readlink.cSuccessNone0.042754s4.161771s
Success
readlinkat.cSuccessNone0.043610s4.138500s
Success
readv_writev_test.cSuccessNone0.044721s4.163868s
Success
rename.cSuccessNone0.043548s4.159661s
Success
sc-writev.cSuccessNone0.039794s4.123820s
Success
stat.cSuccessNone0.043648s4.154299s
Success
statfs.cSuccessNone0.038088s4.156087s
Success
sync_file_range.cSuccessNone0.040601s4.141798s
Success
timespec_time_t_compat.cSuccessNone0.040023s5.358439s
Success
truncate.cSuccessNone0.043352s4.182504s
Success
unlink.cSuccessNone0.043936s4.182276s
Success
unlinkat.cSuccessNone0.043828s4.188917s
Success
write.cSuccessNone0.036964s3.745690s
Success
writeloop.cSuccessNone0.043908s3.750569s
Success
writepartial.cSuccessNone0.042516s3.762244s
Success
writev.cSuccessNone0.043451s4.161605s
Success
Math Tests
math_link_smoke.cSuccessNone0.045778s3.844954s
Success
math_tests.cSuccessNone0.049834s3.951486s
Success
Memory Tests
brk.cSuccessNone0.040381s4.144345s
Success
fork_large_memory.cSuccessNone0.069568s4.350692s
Success
malloc.cSuccessNone0.038236s3.761123s
Success
malloc_large.cSuccessNone0.039140s4.118814s
Success
memcpy.cSuccessNone0.037923s3.743794s
Success
memory_error_test.cSuccessNone0.043872s4.144401s
Success
mmap.cSuccessNone0.035603s4.141478s
Success
mmap_aligned.cSuccessNone0.039068s4.156473s
Success
mmap_complicated.cSuccessNone0.041314s4.189942s
Success
mmap_file.cSuccessNone0.042678s4.157950s
Success
mmap_shared.cSuccessNone0.041590s4.194375s
Success
mmaptest.cSuccessNone0.038606s4.158434s
Success
mprotect.cSuccessNone0.037383s4.143355s
Success
mprotect_boundary.cSuccessNone0.036667s4.135022s
Success
mprotect_end_region.cSuccessNone0.037308s4.129621s
Success
mprotect_middle_region.cSuccessNone0.037223s4.150804s
Success
mprotect_multiple_times.cSuccessNone0.036718s4.123955s
Success
mprotect_same_value.cSuccessNone0.036692s4.130135s
Success
mprotect_spanning_regions.cSuccessNone0.037263s4.136154s
Success
sbrk.cSuccessNone0.038114s4.149710s
Success
segfault.cSuccessNone0.043468s4.209247s
Success
shm.cSuccessNone0.041306s4.194444s
Success
shmtest.cSuccessNone0.037216s4.134580s
Success
tcache_test.cSuccessNone0.044753s4.312418s
Success
thread_malloc_sequential.cSuccessNone0.043303s4.300399s
Success
vtable.cSuccessNone0.049168s3.807846s
Success
Networking Tests
accept4.cSuccessNone0.047199s4.178316s
Success
dns_resolve_test.cSuccessNone0.042395s5.778088s
Success
dnstest.cSuccessNone0.042605s4.159583s
Success
epoll_edge_triggered.cSuccessNone0.199483s4.373427s
Success
epollcreate1.cSuccessNone0.043739s4.168016s
Success
error_handling_net.cSuccessNone0.049226s4.202067s
Success
getaddrinfo_test.cSuccessNone0.045889s5.823581s
Success
getaddrinfo_unspec.cSuccessNone0.046403s5.891143s
Success
gethostname.cSuccessNone0.037273s3.763886s
Success
getifaddrs.cSuccessNone0.044155s4.236003s
Success
getsockname.cSuccessNone0.043699s4.170954s
Success
getsockopt.cSuccessNone0.045391s4.164980s
Success
ipv6_basic.cSuccessNone0.046095s4.197922s
Success
makepipe.cSuccessNone0.036811s3.754784s
Success
nonblocking_eagain.cSuccessNone0.046495s4.185866s
Success
pipe.cSuccessNone0.043654s4.175917s
Success
pipe2.cSuccessNone0.044311s4.139133s
Success
pipeinput.cSuccessNone0.045766s4.198445s
Success
pipeinput2.cSuccessNone0.044482s4.194162s
Success
pipeonestring.cSuccessNone0.046258s4.198199s
Success
pipepong.cSuccessNone0.044807s4.219527s
Success
pipewrite.cSuccessNone0.039611s4.137673s
Success
poll.cSuccessNone0.043353s4.142542s
Success
recvfrom-sendto.cSuccessNone0.044733s4.161826s
Success
sendmsg_recvmsg_test.cSuccessNone0.043344s4.157732s
Success
serverclient.cSuccessNone0.042964s3.784891s
Success
shutdown.cSuccessNone0.044278s3.797836s
Success
shutdown_fork.cSuccessNone0.043072s4.190129s
Success
simple-select.cSuccessNone0.044895s4.205939s
Success
simple_epoll.cSuccessNone0.043297s4.149473s
Success
socket.cSuccessNone0.041920s3.773000s
Success
socket_cloexec.cSuccessNone0.041529s4.140353s
Success
socket_options_advanced.cSuccessNone0.046663s4.269487s
Success
socketepoll.cSuccessNone0.043469s3.777917s
Success
socketpair.cSuccessNone0.041660s4.203767s
Success
socketselect.cSuccessNone0.042300s4.159471s
Success
udp_send_recv.cSuccessNone0.148354s4.337162s
Success
uds-getsockname.cSuccessNone0.043046s4.163996s
Success
uds-nb-select.cSuccessNone2.049465s6.366197s
Success
uds-serverclient.cSuccessNone0.045514s4.229380s
Success
uds-socketselect.cSuccessNone0.043484s3.793194s
Success
writev_socket.cSuccessNone0.045892s4.144326s
Success
Process Tests
barrier_test.cSuccessNone0.043021s4.306608s
Success
chain_thread.cSuccessNone1.043764s5.294502s
Success
ctor_syscall_test.cSuccessNone0.034855s4.143440s
Success
cxa_atexit_test.cSuccessNone0.038892s3.770488s
Success
execve_shebang.cSuccessNone0.042819s4.183283s
Success
exit.cSuccessNone0.040144s3.754786s
Success
exit_failure.cSuccessNone0.042026s3.821108s
Success
exit_group_thread.cSuccessNone0.044013s4.353945s
Success
flockfile_test.cSuccessNone0.042638s4.342644s
Success
fork2malloc.cSuccessNone0.043653s4.212586s
Success
fork_select.cSuccessNone0.041691s4.221295s
Success
fork_simple.cSuccessNone0.041711s4.178777s
Success
fork_syscall.cFailureUnknown_Failure0.046087s4.246795s
thread 'main' (1019) panicked at /src/wasmtime/crates/fdtables/src/dashmaparrayglobal.rs:449:46:
called `Option::unwrap()` on a `None` value
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
fork_tls_ctype.cSuccessNone0.045036s4.221024s
Success
forkandopen.cSuccessNone0.043090s4.195635s
Success
forkdup.cFailureOutput_mismatch0.047261s3.836642s
=== Expected Output ===
I'm the parent
back to stdout
all done

=== WASM Output ===
back to stdout
I'm the parent
all done

forkexecuid.cSuccessNone0.040409s4.242622s
Success
forkexecv-arg.cSuccessNone0.041225s4.236995s
Success
forkexecv.cSuccessNone0.040024s4.242265s
Success
forkfiles.cSuccessNone0.043183s4.187246s
Success
forkmalloc.cSuccessNone0.053909s4.206265s
Success
forknodup.cSuccessNone0.045250s4.186479s
Success
function-ptr.cSuccessNone0.040363s4.148708s
Success
getegid_syscall.cSuccessNone0.042989s4.207725s
Success
getgid_syscall.cSuccessNone0.042828s4.221935s
Success
getpid.cSuccessNone0.036864s4.124080s
Success
getpid_syscall.cFailureUnknown_Failure0.044452s4.227996s
thread 'main' (1246) panicked at /src/wasmtime/crates/fdtables/src/dashmaparrayglobal.rs:449:46:
called `Option::unwrap()` on a `None` value
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
getppid.cSuccessNone0.043229s4.210017s
Success
getppid_syscall.cSuccessNone0.044929s4.212964s
Success
getuid.cSuccessNone0.043614s4.157131s
Success
getuid_syscall.cSuccessNone0.042002s4.218735s
Success
hello-arg.cSuccessNone0.035410s3.770319s
Success
hello.cSuccessNone0.035017s3.750380s
Success
longjmp.cSuccessNone0.036005s3.773647s
Success
mutex.cSuccessNone2.047510s6.404215s
Success
printf_deadlock_smoke.cSuccessNone0.050464s4.461580s
Success
printf_thread_test.cSuccessNone0.041280s4.328185s
Success
sem_forks.cSuccessNone0.044625s4.208319s
Success
setsid.cSuccessNone0.036537s3.757401s
Success
template.cFailureUnknown_Failure0.042755s4.193241s
thread 'main' (1911) panicked at /src/wasmtime/crates/fdtables/src/dashmaparrayglobal.rs:449:46:
called `Option::unwrap()` on a `None` value
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
test_exec_nofork.cSuccessNone0.041198s4.201122s
Success
test_unlink_open_file.cSuccessNone0.042258s3.769445s
Success
thread-test.cSuccessNone0.039659s4.300812s
Success
thread.cSuccessNone0.038348s4.274225s
Success
thread_cageid_race.cSuccessNone0.039805s4.290421s
Success
tls_test.cSuccessNone0.041139s4.303180s
Success
uname.cSuccessNone0.037531s4.140096s
Success
wait.cSuccessNone2.040739s5.827815s
Success
waitpid_anychild.cSuccessNone0.042427s4.182458s
Success
waitpid_syscall.cSuccessNone1.043821s5.226137s
Success
waitpid_wnohang.cSuccessNone0.043663s3.808951s
Success
Signal Tests
alarm.cSuccessNone7.042348s10.829456s
Success
eintr_fork_signal.cSuccessNone1.044116s5.212389s
Success
kill.cSuccessNone1.042196s5.206904s
Success
setitimer.cSuccessNone7.042549s10.802413s
Success
sigalrm.cSuccessNone2.042690s5.803772s
Success
sigchld.cSuccessNone1.044267s4.851810s
Success
signal-fork.cSuccessNone4.044311s7.848313s
Success
signal-simple.cSuccessNone0.043544s3.795596s
Success
signal_SIGCHLD.cSuccessNone0.041092s4.193453s
Success
signal_fork.cSuccessNone0.040025s4.214957s
Success
signal_int_ignored.cSuccessNone2.043449s6.251942s
Success
signal_kill_cleanup.cSuccessNone1.040879s5.202932s
Success
signal_procmask.cSuccessNone0.038485s4.151227s
Success
signal_recursive.cSuccessNone0.038544s3.807141s
Success
signal_sa_mask.cSuccessNone0.038038s3.778153s
Success
sigpipe.cSuccessNone1.044554s5.220960s
Success
sigprocmask.cSuccessNone1.041983s4.803084s
Success
Fail Tests

Summary

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

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Memory Tests
mmap-negative1.cSuccessNone0.081848s4.595723s
Success
mmap-negative2.cSuccessNone0.128116s4.313834s
Success
Signal Tests
signal_resethand.cSuccessNone1.043107s4.834196s
Success

Copy link
Copy Markdown
Contributor

@vidyalakshmir vidyalakshmir left a comment

Choose a reason for hiding this comment

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

@celinehoang177 What about the changes to glibc?

@celinehoang177 celinehoang177 force-pushed the setxattr-listxattr-system-calls branch from 4f27bcf to 8e360b2 Compare April 5, 2026 22:25
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 5, 2026

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: 3
[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: 3
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
Exec successful, argv[1]: --execd
[Grate|interpose-exec] PASS

STDERR:

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

[Grate|interpose-exit] PASS

STDERR:

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

STDERR:

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

STDERR:

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

STDERR:

multi-register_grate.cSuccess
STDOUT:
[Grate|multi-register_grate] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|multi-register_grate] Registering getuid handler for cage 2 in grate 1 with fn ptr addr: 4
[Grate|multi-register_grate] Handling function ptr: 3 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Grate|multi-register_grate] Handling function ptr: 4 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: 3 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 4 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:

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

STDERR:

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases197
Number of Successes197
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.046258s4.353226s
Success
chdir_getcwd.cSuccessNone0.047558s4.377802s
Success
chmod.cSuccessNone0.055985s4.338070s
Success
clock_gettime_highlevel.cSuccessNone0.118015s4.601281s
Success
clock_gettime_simple.cSuccessNone0.042105s4.303756s
Success
cloexec.cSuccessNone0.050815s4.061265s
Success
close.cSuccessNone0.058004s4.346849s
Success
creat_access.cSuccessNone0.050213s4.317677s
Success
doubleclose.cSuccessNone0.043277s3.941753s
Success
dup.cSuccessNone0.043183s4.341743s
Success
dup2.cSuccessNone0.048456s3.953711s
Success
dup3.cSuccessNone0.046581s4.322440s
Success
dupwrite.cSuccessNone0.051073s3.959556s
Success
etc_conf.cSuccessNone0.046060s4.361137s
Success
fchdir.cSuccessNone0.051904s4.342385s
Success
fchmod.cSuccessNone0.051154s4.396223s
Success
fcntl.cSuccessNone0.049357s4.333643s
Success
fdatasync.cSuccessNone0.048862s4.328470s
Success
filetest.cSuccessNone0.051293s3.999772s
Success
filetest1000.cSuccessNone0.057181s3.932871s
Success
flock.cSuccessNone0.056301s4.377236s
Success
fstat.cSuccessNone0.052168s4.308676s
Success
fstatfs.cSuccessNone0.044353s4.316596s
Success
fsync.cSuccessNone0.047474s4.338733s
Success
ftruncate.cSuccessNone0.055263s4.400225s
Success
getcwd.cSuccessNone0.046371s4.390754s
Success
getrandom.cSuccessNone0.051755s4.384778s
Success
ioctl.cSuccessNone0.052351s4.327626s
Success
link.cSuccessNone0.052116s4.373120s
Success
locale_test.cSuccessNone0.064212s6.181773s
Success
lseek.cSuccessNone0.054104s4.477794s
Success
mkdir_rmdir.cSuccessNone0.049761s4.339328s
Success
mkfifo_test.cSuccessNone0.059306s4.514825s
Success
mknod.cSuccessNone0.049518s4.376768s
Success
nocancel_io.cSuccessNone0.053636s5.561516s
Success
open.cSuccessNone0.044400s4.332486s
Success
openat.cSuccessNone0.043922s4.326668s
Success
path_conversion_safety.cSuccessNone0.054959s4.382418s
Success
pread_pwrite.cSuccessNone0.049410s4.352994s
Success
printf.cSuccessNone0.040742s3.904592s
Success
prlimit64.cSuccessNone0.043463s3.926338s
Success
read.cSuccessNone0.050156s4.307288s
Success
readbytes.cSuccessNone0.046206s3.916375s
Success
readlink.cSuccessNone0.050094s4.421222s
Success
readlinkat.cSuccessNone0.052684s4.356756s
Success
readv_writev_test.cSuccessNone0.052697s4.335503s
Success
rename.cSuccessNone0.052683s4.347902s
Success
sc-writev.cSuccessNone0.050380s4.367080s
Success
stat.cSuccessNone0.050921s4.320287s
Success
statfs.cSuccessNone0.045318s4.355633s
Success
sync_file_range.cSuccessNone0.050494s4.396295s
Success
timespec_time_t_compat.cSuccessNone0.046671s5.611356s
Success
truncate.cSuccessNone0.051348s4.384039s
Success
unlink.cSuccessNone0.053039s4.365941s
Success
unlinkat.cSuccessNone0.053796s4.364081s
Success
write.cSuccessNone0.043044s3.925069s
Success
writeloop.cSuccessNone0.052671s3.941015s
Success
writepartial.cSuccessNone0.050097s3.894578s
Success
writev.cSuccessNone0.050603s4.318962s
Success
Math Tests
math_link_smoke.cSuccessNone0.054511s3.980029s
Success
math_tests.cSuccessNone0.058643s4.160734s
Success
Memory Tests
brk.cSuccessNone0.048418s4.376413s
Success
fork_large_memory.cSuccessNone0.081316s4.570112s
Success
malloc.cSuccessNone0.045955s3.928702s
Success
malloc_large.cSuccessNone0.045366s4.306607s
Success
memcpy.cSuccessNone0.044719s3.897916s
Success
memory_error_test.cSuccessNone0.053194s4.327887s
Success
mmap.cSuccessNone0.041667s4.304494s
Success
mmap_aligned.cSuccessNone0.045077s4.319291s
Success
mmap_complicated.cSuccessNone0.048486s4.432855s
Success
mmap_file.cSuccessNone0.049877s4.339791s
Success
mmap_shared.cSuccessNone0.049320s4.375872s
Success
mmaptest.cSuccessNone0.044628s4.295498s
Success
mprotect.cSuccessNone0.045113s4.386783s
Success
mprotect_boundary.cSuccessNone0.044189s4.307289s
Success
mprotect_end_region.cSuccessNone0.043788s4.369687s
Success
mprotect_middle_region.cSuccessNone0.044038s4.335088s
Success
mprotect_multiple_times.cSuccessNone0.044571s4.349812s
Success
mprotect_same_value.cSuccessNone0.043444s4.348316s
Success
mprotect_spanning_regions.cSuccessNone0.045001s4.343596s
Success
sbrk.cSuccessNone0.045868s4.339798s
Success
segfault.cSuccessNone0.051824s4.427407s
Success
shm.cSuccessNone0.051478s4.475674s
Success
shmtest.cSuccessNone0.045239s4.350757s
Success
tcache_test.cSuccessNone0.052891s4.496363s
Success
thread_malloc_sequential.cSuccessNone0.053497s4.536522s
Success
vtable.cSuccessNone0.056545s3.925959s
Success
Networking Tests
accept4.cSuccessNone0.055496s4.392499s
Success
dns_resolve_test.cSuccessNone0.048923s6.089632s
Success
dnstest.cSuccessNone0.048983s4.307444s
Success
epoll_edge_triggered.cSuccessNone0.208509s4.563627s
Success
epollcreate1.cSuccessNone0.051244s4.393741s
Success
error_handling_net.cSuccessNone0.060948s4.420581s
Success
getaddrinfo_test.cSuccessNone0.055705s6.128527s
Success
getaddrinfo_unspec.cSuccessNone0.056213s6.112633s
Success
gethostname.cSuccessNone0.045481s4.020486s
Success
getifaddrs.cSuccessNone0.052672s4.444169s
Success
getsockname.cSuccessNone0.053794s4.377106s
Success
getsockopt.cSuccessNone0.056635s4.380364s
Success
ipv6_basic.cSuccessNone0.056830s4.429816s
Success
makepipe.cSuccessNone0.042845s3.921311s
Success
nonblocking_eagain.cSuccessNone0.056577s4.433410s
Success
pipe.cSuccessNone0.053979s4.367575s
Success
pipe2.cSuccessNone0.054105s4.301592s
Success
pipeinput.cSuccessNone0.054416s4.437842s
Success
pipeinput2.cSuccessNone0.054534s4.437838s
Success
pipeonestring.cSuccessNone0.055279s4.422299s
Success
pipepong.cSuccessNone0.052073s4.385840s
Success
pipewrite.cSuccessNone0.048468s4.347804s
Success
poll.cSuccessNone0.050725s4.353538s
Success
recvfrom-sendto.cSuccessNone0.054910s4.395827s
Success
sendmsg_recvmsg_test.cSuccessNone0.053001s4.405102s
Success
serverclient.cSuccessNone0.051871s3.976104s
Success
shutdown.cSuccessNone0.053782s3.992084s
Success
shutdown_fork.cSuccessNone0.053429s4.420527s
Success
simple-select.cSuccessNone0.054643s4.409651s
Success
simple_epoll.cSuccessNone0.051972s4.406221s
Success
socket.cSuccessNone0.049201s3.989633s
Success
socket_cloexec.cSuccessNone0.049724s4.360092s
Success
socket_options_advanced.cSuccessNone0.056996s4.366625s
Success
socketepoll.cSuccessNone0.049977s3.937396s
Success
socketpair.cSuccessNone0.050894s4.370293s
Success
socketselect.cSuccessNone0.050075s4.319388s
Success
udp_send_recv.cSuccessNone0.161578s4.560996s
Success
uds-getsockname.cSuccessNone0.052797s4.373447s
Success
uds-nb-select.cSuccessNone2.059661s6.584597s
Success
uds-serverclient.cSuccessNone0.056146s4.484965s
Success
uds-socketselect.cSuccessNone0.054346s4.014425s
Success
writev_socket.cSuccessNone0.053812s4.352727s
Success
Process Tests
barrier_test.cSuccessNone0.049027s4.488391s
Success
chain_thread.cSuccessNone1.052534s5.554923s
Success
ctor_syscall_test.cSuccessNone0.040864s4.282380s
Success
cxa_atexit_test.cSuccessNone0.046994s3.943159s
Success
execve_shebang.cSuccessNone0.051042s4.359875s
Success
exit.cSuccessNone0.052066s4.018806s
Success
exit_failure.cSuccessNone0.051410s4.057491s
Success
exit_group_thread.cSuccessNone0.057794s4.742050s
Success
flockfile_test.cSuccessNone0.050757s4.582137s
Success
fork2malloc.cSuccessNone0.053996s4.395424s
Success
fork_select.cSuccessNone0.051012s4.411171s
Success
fork_simple.cSuccessNone0.052749s4.512964s
Success
fork_syscall.cSuccessNone0.056124s4.448344s
Success
fork_tls_ctype.cSuccessNone0.053525s4.434078s
Success
forkandopen.cSuccessNone0.054111s4.541823s
Success
forkdup.cSuccessNone0.054440s3.995393s
Success
forkexecuid.cSuccessNone0.050314s4.462324s
Success
forkexecv-arg.cSuccessNone0.051887s4.545676s
Success
forkexecv.cSuccessNone0.047064s4.430431s
Success
forkfiles.cSuccessNone0.053159s4.512321s
Success
forkmalloc.cSuccessNone0.052352s4.372426s
Success
forknodup.cSuccessNone0.056485s4.556130s
Success
function-ptr.cSuccessNone0.045403s4.343848s
Success
getegid_syscall.cSuccessNone0.051464s4.426546s
Success
getgid_syscall.cSuccessNone0.056269s4.515312s
Success
getpid.cSuccessNone0.045136s4.285675s
Success
getpid_syscall.cSuccessNone0.052033s4.468070s
Success
getppid.cSuccessNone0.052423s4.406669s
Success
getppid_syscall.cSuccessNone0.055224s4.495648s
Success
getuid.cSuccessNone0.050280s4.299595s
Success
getuid_syscall.cSuccessNone0.050230s4.497134s
Success
hello-arg.cSuccessNone0.040903s3.939125s
Success
hello.cSuccessNone0.041926s4.013985s
Success
longjmp.cSuccessNone0.045383s4.036527s
Success
mutex.cSuccessNone2.059872s6.675801s
Success
printf_deadlock_smoke.cSuccessNone0.060018s4.685449s
Success
printf_thread_test.cSuccessNone0.050246s4.572094s
Success
sem_forks.cSuccessNone0.055744s4.448199s
Success
setsid.cSuccessNone0.046137s4.022311s
Success
template.cSuccessNone0.052209s4.409413s
Success
test_exec_nofork.cSuccessNone0.052608s4.559897s
Success
test_unlink_open_file.cSuccessNone0.049096s4.069130s
Success
thread-test.cSuccessNone0.045864s4.522346s
Success
thread.cSuccessNone0.046207s4.549875s
Success
thread_cageid_race.cSuccessNone0.047022s4.470824s
Success
tls_test.cSuccessNone0.049550s4.629619s
Success
uname.cSuccessNone0.045413s4.326164s
Success
wait.cSuccessNone2.051428s6.073349s
Success
waitpid_anychild.cSuccessNone0.051967s4.448055s
Success
waitpid_syscall.cSuccessNone1.051461s5.387470s
Success
waitpid_wnohang.cSuccessNone0.051445s4.061432s
Success
Signal Tests
alarm.cSuccessNone7.054709s11.204388s
Success
eintr_fork_signal.cSuccessNone1.054679s5.460697s
Success
kill.cSuccessNone1.063488s5.433445s
Success
setitimer.cSuccessNone7.055332s11.155556s
Success
sigalrm.cSuccessNone2.056181s6.026080s
Success
sigchld.cSuccessNone1.054237s5.114578s
Success
signal-fork.cSuccessNone4.054958s8.107960s
Success
signal-simple.cSuccessNone0.052554s4.072855s
Success
signal_SIGCHLD.cSuccessNone0.050030s4.505061s
Success
signal_fork.cSuccessNone0.051233s4.482356s
Success
signal_int_ignored.cSuccessNone2.053217s6.553834s
Success
signal_kill_cleanup.cSuccessNone1.050968s5.444817s
Success
signal_procmask.cSuccessNone0.049960s4.474733s
Success
signal_recursive.cSuccessNone0.048680s4.132098s
Success
signal_sa_mask.cSuccessNone0.047213s4.110627s
Success
sigpipe.cSuccessNone1.057680s5.536395s
Success
sigprocmask.cSuccessNone1.052797s5.108958s
Success
Fail Tests

Summary

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

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Memory Tests
mmap-negative1.cSuccessNone0.109660s4.795027s
Success
mmap-negative2.cSuccessNone0.120057s4.492190s
Success
Signal Tests
signal_resethand.cSuccessNone1.053557s5.161803s
Success

Copy link
Copy Markdown
Member

@Yaxuan-w Yaxuan-w left a comment

Choose a reason for hiding this comment

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

LGTM. Is there any reason that we add new files for those two syscalls instead of just changing the source in glibc?

Comment thread src/rawposix/src/fs_calls.rs Outdated
Comment thread src/rawposix/src/fs_calls.rs
Comment thread src/rawposix/src/fs_calls.rs Outdated
Copy link
Copy Markdown
Contributor

@rennergade rennergade left a comment

Choose a reason for hiding this comment

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

Pointed out a few issues, also need to add a test.

@vidyalakshmir
Copy link
Copy Markdown
Contributor

@celinehoang177 Please address the comments above.

@celinehoang177 celinehoang177 force-pushed the setxattr-listxattr-system-calls branch from 8e360b2 to 6f1286a Compare April 15, 2026 03:15
@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.049760s0.205670s
Success
chdir_getcwd.cSuccessNone0.051567s0.163315s
Success
chmod.cSuccessNone0.055744s0.168427s
Success
clock_gettime_highlevel.cSuccessNone0.122592s0.359218s
Success
clock_gettime_simple.cSuccessNone0.046653s0.143174s
Success
cloexec.cSuccessNone0.056894s0.246956s
Success
close.cSuccessNone0.063501s0.184908s
Success
creat_access.cSuccessNone0.052830s0.156724s
Success
doubleclose.cSuccessNone0.046262s0.135934s
Success
dup.cSuccessNone0.046919s0.159314s
Success
dup2.cSuccessNone0.051822s0.156127s
Success
dup3.cSuccessNone0.052343s0.161876s
Success
dupwrite.cSuccessNone0.053108s0.150830s
Success
etc_conf.cSuccessNone0.049459s0.159846s
Success
fchdir.cSuccessNone0.056527s0.172173s
Success
fchmod.cSuccessNone0.055673s0.167833s
Success
fcntl.cSuccessNone0.052756s0.165520s
Success
fdatasync.cSuccessNone0.053639s0.158001s
Success
filetest.cSuccessNone0.052913s0.151999s
Success
filetest1000.cSuccessNone0.061712s0.165526s
Success
flock.cSuccessNone0.061174s0.196635s
Success
fstat.cSuccessNone0.056353s0.168029s
Success
fstatfs.cSuccessNone0.051399s0.146414s
Success
fsync.cSuccessNone0.052914s0.151798s
Success
ftruncate.cSuccessNone0.056230s0.276647s
Success
getcwd.cSuccessNone0.050043s0.147716s
Success
getrandom.cSuccessNone0.052331s0.156789s
Success
ioctl.cSuccessNone0.054868s0.156149s
Success
link.cSuccessNone0.056461s0.219173s
Success
locale_test.cSuccessNone0.065628s0.630144s
Success
lseek.cSuccessNone0.056943s0.276389s
Success
mkdir_rmdir.cSuccessNone0.054498s0.163790s
Success
mkfifo_test.cSuccessNone0.058483s0.207882s
Success
mknod.cSuccessNone0.052119s0.163630s
Success
nocancel_io.cSuccessNone0.055618s0.188296s
Success
open.cSuccessNone0.048648s0.141078s
Success
openat.cSuccessNone0.049187s0.159943s
Success
path_conversion_safety.cSuccessNone0.056508s0.189884s
Success
pread_pwrite.cSuccessNone0.050669s0.165167s
Success
preadv_pwritev.cSuccessNone0.055294s0.178334s
Success
printf.cSuccessNone0.046167s0.137793s
Success
prlimit64.cSuccessNone0.046716s0.143087s
Success
read.cSuccessNone0.053884s0.160834s
Success
readbytes.cSuccessNone0.050281s0.147640s
Success
readdir_basic.cSuccessNone0.056948s0.181722s
Success
readlink.cSuccessNone0.053188s0.162612s
Success
readlinkat.cSuccessNone0.055131s0.165935s
Success
readv_writev_test.cSuccessNone0.054897s0.170780s
Success
rename.cSuccessNone0.055108s0.158405s
Success
sc-writev.cSuccessNone0.051886s0.154516s
Success
stat.cSuccessNone0.054340s0.164329s
Success
statfs.cSuccessNone0.047828s0.146918s
Success
sync_file_range.cSuccessNone0.051423s0.155043s
Success
timespec_time_t_compat.cSuccessNone0.051377s0.144420s
Success
truncate.cSuccessNone0.067371s0.187357s
Success
unlink.cSuccessNone0.056455s0.214467s
Success
unlinkat.cSuccessNone0.055559s0.179165s
Success
write.cSuccessNone0.048669s0.138880s
Success
writeloop.cSuccessNone0.056613s0.150667s
Success
writepartial.cSuccessNone0.054420s0.147286s
Success
writev.cSuccessNone0.054707s0.166844s
Success
Math Tests
math_link_smoke.cSuccessNone0.058556s0.144434s
Success
math_tests.cSuccessNone0.061432s0.181788s
Success
Memory Tests
brk.cSuccessNone0.053173s0.158436s
Success
fork_large_memory.cSuccessNone0.085964s0.434483s
Success
malloc.cSuccessNone0.051463s0.147796s
Success
malloc_large.cSuccessNone0.050949s0.153620s
Success
memcpy.cSuccessNone0.049751s0.144344s
Success
memory_error_test.cSuccessNone0.056220s0.189971s
Success
mmap.cSuccessNone0.048219s0.149076s
Success
mmap_aligned.cSuccessNone0.051159s0.168156s
Success
mmap_complicated.cSuccessNone0.054675s0.169912s
Success
mmap_file.cSuccessNone0.055316s0.166121s
Success
mmap_shared.cSuccessNone0.054792s0.167410s
Success
mmaptest.cSuccessNone0.049739s0.153060s
Success
mprotect.cSuccessNone0.049312s0.146217s
Success
mprotect_boundary.cSuccessNone0.049411s0.166825s
Success
mprotect_end_region.cSuccessNone0.048808s0.154582s
Success
mprotect_middle_region.cSuccessNone0.048897s0.158049s
Success
mprotect_multiple_times.cSuccessNone0.049688s0.165723s
Success
mprotect_same_value.cSuccessNone0.049219s0.158255s
Success
mprotect_spanning_regions.cSuccessNone0.049389s0.174021s
Success
sbrk.cSuccessNone0.050509s0.145217s
Success
segfault.cSuccessNone0.055121s0.179887s
Success
shm.cSuccessNone0.053203s0.171671s
Success
shmtest.cSuccessNone0.049451s0.157929s
Success
thread_malloc_sequential.cSuccessNone0.054999s0.181894s
Success
vtable.cSuccessNone0.059727s0.161619s
Success
Networking Tests
accept4.cSuccessNone0.058820s0.181024s
Success
dns_resolve_test.cSuccessNone0.054476s0.159229s
Success
dnstest.cSuccessNone0.053440s0.160974s
Success
epoll_edge_triggered.cSuccessNone0.210747s0.510863s
Success
epollcreate1.cSuccessNone0.056868s0.168047s
Success
error_handling_net.cSuccessNone0.061146s0.278134s
Success
getaddrinfo_test.cSuccessNone0.058180s0.206331s
Success
getaddrinfo_unspec.cSuccessNone0.065483s0.165001s
Success
gethostname.cSuccessNone0.051787s0.145511s
Success
getifaddrs.cSuccessNone0.055620s0.163554s
Success
getsockname.cSuccessNone0.059704s0.165499s
Success
getsockopt.cSuccessNone0.057792s0.216504s
Success
ipv6_basic.cSuccessNone0.058228s0.215089s
Success
makepipe.cSuccessNone0.051502s0.139055s
Success
nonblocking_eagain.cSuccessNone0.058316s0.227468s
Success
pipe.cSuccessNone0.056910s0.173582s
Success
pipe2.cSuccessNone0.056968s0.158440s
Success
pipeinput.cSuccessNone0.057189s0.185645s
Success
pipeinput2.cSuccessNone0.057551s0.181341s
Success
pipeonestring.cSuccessNone0.056744s0.182519s
Success
pipepong.cSuccessNone0.056422s0.186112s
Success
pipewrite.cSuccessNone0.051181s0.160191s
Success
poll.cSuccessNone0.055272s0.152139s
Success
recvfrom-sendto.cSuccessNone0.056471s0.175320s
Success
sendmsg_recvmsg_test.cSuccessNone0.055544s0.168290s
Success
serverclient.cSuccessNone0.055197s0.160798s
Success
shutdown.cSuccessNone0.056494s0.167222s
Success
shutdown_fork.cSuccessNone0.055809s0.171289s
Success
simple-select.cSuccessNone0.057679s0.184421s
Success
simple_epoll.cSuccessNone0.056103s0.168141s
Success
socket.cSuccessNone0.052960s0.151626s
Success
socket_cloexec.cSuccessNone0.053699s0.153667s
Success
socket_options_advanced.cSuccessNone0.059818s0.240396s
Success
socketepoll.cSuccessNone0.053421s0.159314s
Success
socketpair.cSuccessNone0.053840s0.162715s
Success
socketselect.cSuccessNone0.054301s0.165515s
Success
udp_send_recv.cSuccessNone0.166120s0.338581s
Success
uds-getsockname.cSuccessNone0.054921s0.158464s
Success
uds-nb-select.cSuccessNone2.061484s2.233557s
Success
uds-serverclient.cSuccessNone0.058113s0.197620s
Success
uds-socketselect.cSuccessNone0.055350s0.165469s
Success
writev_socket.cSuccessNone0.057261s0.204062s
Success
Process Tests
barrier_test.cSuccessNone0.054393s0.164757s
Success
chain_thread.cSuccessNone1.055624s1.173796s
Success
ctor_syscall_test.cSuccessNone0.045475s0.142513s
Success
cxa_atexit_test.cSuccessNone0.051404s0.145638s
Success
execve_shebang.cSuccessNone0.056263s0.167439s
Success
exit.cSuccessNone0.051887s0.146341s
Success
exit_failure.cSuccessNone0.053550s0.156630s
Success
exit_group_thread.cSuccessNone0.056137s0.170123s
Success
flockfile_test.cSuccessNone0.056749s0.189427s
Success
fork2malloc.cSuccessNone0.055491s0.166783s
Success
fork_select.cSuccessNone0.054092s0.174758s
Success
fork_simple.cSuccessNone0.054093s0.190195s
Success
fork_syscall.cSuccessNone0.063299s0.382870s
Success
fork_tls_ctype.cSuccessNone0.057305s0.198513s
Success
forkandopen.cSuccessNone0.056644s0.184315s
Success
forkdup.cSuccessNone0.058834s0.176006s
Success
forkexecuid.cSuccessNone0.055297s0.250887s
Success
forkexecv-arg.cSuccessNone0.056447s0.236309s
Success
forkexecv.cSuccessNone0.053481s0.221464s
Success
forkfiles.cSuccessNone0.055627s0.178525s
Success
forkmalloc.cSuccessNone0.064599s0.163630s
Success
forknodup.cSuccessNone0.055149s0.176484s
Success
function-ptr.cSuccessNone0.051110s0.149464s
Success
getegid_syscall.cSuccessNone0.054873s0.290307s
Success
getgid_syscall.cSuccessNone0.055958s0.310773s
Success
getpid.cSuccessNone0.051414s0.148216s
Success
getpid_syscall.cSuccessNone0.055717s0.310787s
Success
getppid.cSuccessNone0.056335s0.168915s
Success
getppid_syscall.cSuccessNone0.061480s0.272137s
Success
getuid.cSuccessNone0.056321s0.157350s
Success
getuid_syscall.cSuccessNone0.055024s0.206061s
Success
hello-arg.cSuccessNone0.050836s0.171333s
Success
hello.cSuccessNone0.047689s0.144828s
Success
longjmp.cSuccessNone0.048631s0.147464s
Success
mutex.cSuccessNone2.057521s2.178080s
Success
printf_deadlock_smoke.cSuccessNone0.064341s0.213242s
Success
printf_thread_test.cSuccessNone0.055064s0.184186s
Success
sem_forks.cSuccessNone0.058252s0.187571s
Success
setsid.cSuccessNone0.048807s0.146459s
Success
template.cSuccessNone0.055530s0.185408s
Success
test_exec_nofork.cSuccessNone0.053687s0.221595s
Success
test_unlink_open_file.cSuccessNone0.050085s0.146077s
Success
thread-test.cSuccessNone0.050273s0.153657s
Success
thread.cSuccessNone0.050082s0.150798s
Success
thread_cageid_race.cSuccessNone0.052472s0.219285s
Success
tls_test.cSuccessNone0.053077s0.168795s
Success
uname.cSuccessNone0.048833s0.139538s
Success
wait.cSuccessNone2.052956s2.168862s
Success
waitpid_anychild.cSuccessNone0.054138s0.163287s
Success
waitpid_syscall.cSuccessNone1.056416s1.202669s
Success
waitpid_wnohang.cSuccessNone0.055063s0.162314s
Success
Signal Tests
alarm.cSuccessNone7.054318s7.185573s
Success
eintr_fork_signal.cSuccessNone1.056207s1.184580s
Success
kill.cSuccessNone1.055233s1.164847s
Success
setitimer.cSuccessNone7.055463s7.189364s
Success
sigalrm.cSuccessNone2.054685s2.171712s
Success
sigaltstack.cSuccessNone0.056527s0.167211s
Success
sigchld.cSuccessNone1.055927s1.167308s
Success
signal-fork.cSuccessNone4.056997s4.169576s
Success
signal-simple.cSuccessNone0.054706s0.154682s
Success
signal_SIGCHLD.cSuccessNone0.053925s0.165399s
Success
signal_fork.cSuccessNone0.051504s0.174502s
Success
signal_int_ignored.cSuccessNone2.054871s2.173204s
Success
signal_kill_cleanup.cSuccessNone1.052467s1.161144s
Success
signal_procmask.cSuccessNone0.050368s0.158668s
Success
signal_recursive.cSuccessNone0.049567s0.157866s
Success
signal_sa_mask.cSuccessNone0.048850s0.149295s
Success
sigpipe.cSuccessNone1.056528s1.183841s
Success
sigprocmask.cSuccessNone1.054384s1.167078s
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.048485s0.147447s
Success
Memory Tests
mmap-negative1.cSuccessNone0.122729s0.161612s
Success
mmap-negative2.cSuccessNone0.117259s0.203219s
Success
Signal Tests
signal_resethand.cSuccessNone1.054043s1.172661s
Success

@celinehoang177 celinehoang177 force-pushed the setxattr-listxattr-system-calls branch 2 times, most recently from ee2c8ec to b74524d Compare April 15, 2026 03:50
@celinehoang177
Copy link
Copy Markdown
Contributor Author

LGTM. Is there any reason that we add new files for those two syscalls instead of just changing the source in glibc?

I fixed it. It's now just changing the source in glibc.

@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 Cases200
Number of Successes200
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.046008s0.186974s
Success
chdir_getcwd.cSuccessNone0.046343s0.148226s
Success
chmod.cSuccessNone0.051649s0.154329s
Success
clock_gettime_highlevel.cSuccessNone0.117558s0.321202s
Success
clock_gettime_simple.cSuccessNone0.041412s0.131042s
Success
cloexec.cSuccessNone0.050974s0.220520s
Success
close.cSuccessNone0.057116s0.169414s
Success
creat_access.cSuccessNone0.049298s0.146275s
Success
doubleclose.cSuccessNone0.041595s0.125695s
Success
dup.cSuccessNone0.042577s0.142904s
Success
dup2.cSuccessNone0.048014s0.142755s
Success
dup3.cSuccessNone0.045592s0.147019s
Success
dupwrite.cSuccessNone0.049147s0.141126s
Success
etc_conf.cSuccessNone0.044111s0.148259s
Success
fchdir.cSuccessNone0.051986s0.157750s
Success
fchmod.cSuccessNone0.051530s0.155062s
Success
fcntl.cSuccessNone0.048931s0.150455s
Success
fdatasync.cSuccessNone0.048595s0.137868s
Success
filetest.cSuccessNone0.048693s0.139713s
Success
filetest1000.cSuccessNone0.056483s0.153565s
Success
flock.cSuccessNone0.059848s0.187021s
Success
fstat.cSuccessNone0.050980s0.158452s
Success
fstatfs.cSuccessNone0.046777s0.135338s
Success
fsync.cSuccessNone0.048174s0.138245s
Success
ftruncate.cSuccessNone0.053704s0.271626s
Success
getcwd.cSuccessNone0.046117s0.135889s
Success
getrandom.cSuccessNone0.048780s0.144629s
Success
ioctl.cSuccessNone0.053052s0.145475s
Success
link.cSuccessNone0.052823s0.210144s
Success
locale_test.cSuccessNone0.062919s0.641651s
Success
lseek.cSuccessNone0.053829s0.267521s
Success
mkdir_rmdir.cSuccessNone0.049774s0.146667s
Success
mkfifo_test.cSuccessNone0.055941s0.197362s
Success
mknod.cSuccessNone0.048317s0.154127s
Success
nocancel_io.cSuccessNone0.052459s0.176178s
Success
open.cSuccessNone0.043869s0.131306s
Success
openat.cSuccessNone0.044660s0.138854s
Success
path_conversion_safety.cSuccessNone0.053893s0.177218s
Success
pread_pwrite.cSuccessNone0.046888s0.152079s
Success
preadv_pwritev.cSuccessNone0.051363s0.164614s
Success
printf.cSuccessNone0.040428s0.123240s
Success
prlimit64.cSuccessNone0.043399s0.132172s
Success
read.cSuccessNone0.049828s0.150232s
Success
readbytes.cSuccessNone0.045792s0.133041s
Success
readdir_basic.cSuccessNone0.053226s0.174460s
Success
readlink.cSuccessNone0.049512s0.148670s
Success
readlinkat.cSuccessNone0.051222s0.155382s
Success
readv_writev_test.cSuccessNone0.051079s0.158678s
Success
rename.cSuccessNone0.051612s0.146946s
Success
sc-writev.cSuccessNone0.047328s0.143218s
Success
stat.cSuccessNone0.050701s0.151862s
Success
statfs.cSuccessNone0.043812s0.134821s
Success
sync_file_range.cSuccessNone0.047456s0.141047s
Success
timespec_time_t_compat.cSuccessNone0.047061s0.135512s
Success
truncate.cSuccessNone0.050225s0.161556s
Success
unlink.cSuccessNone0.052174s0.196987s
Success
unlinkat.cSuccessNone0.051385s0.164493s
Success
write.cSuccessNone0.042782s0.124868s
Success
writeloop.cSuccessNone0.052534s0.138721s
Success
writepartial.cSuccessNone0.050117s0.133532s
Success
writev.cSuccessNone0.050967s0.154488s
Success
xattr.cSuccessNone0.051951s0.167440s
Success
Math Tests
math_link_smoke.cSuccessNone0.053248s0.136402s
Success
math_tests.cSuccessNone0.056808s0.168792s
Success
Memory Tests
brk.cSuccessNone0.047224s0.138900s
Success
fork_large_memory.cSuccessNone0.078674s0.398822s
Success
malloc.cSuccessNone0.045564s0.125417s
Success
malloc_large.cSuccessNone0.046021s0.132214s
Success
memcpy.cSuccessNone0.044790s0.132854s
Success
memory_error_test.cSuccessNone0.051313s0.170847s
Success
mmap.cSuccessNone0.042238s0.131803s
Success
mmap_aligned.cSuccessNone0.043806s0.145465s
Success
mmap_complicated.cSuccessNone0.050403s0.151743s
Success
mmap_file.cSuccessNone0.051900s0.145016s
Success
mmap_shared.cSuccessNone0.048496s0.150311s
Success
mmaptest.cSuccessNone0.045072s0.141349s
Success
mprotect.cSuccessNone0.043255s0.131895s
Success
mprotect_boundary.cSuccessNone0.043512s0.145717s
Success
mprotect_end_region.cSuccessNone0.042687s0.137645s
Success
mprotect_middle_region.cSuccessNone0.042733s0.141082s
Success
mprotect_multiple_times.cSuccessNone0.043085s0.143075s
Success
mprotect_same_value.cSuccessNone0.042561s0.138073s
Success
mprotect_spanning_regions.cSuccessNone0.043930s0.154087s
Success
sbrk.cSuccessNone0.045119s0.130892s
Success
segfault.cSuccessNone0.051103s0.164142s
Success
shm.cSuccessNone0.051632s0.157943s
Success
shmtest.cSuccessNone0.043901s0.136459s
Success
thread_malloc_sequential.cSuccessNone0.051289s0.165016s
Success
vtable.cSuccessNone0.055324s0.151640s
Success
Networking Tests
accept4.cSuccessNone0.054657s0.168726s
Success
dns_resolve_test.cSuccessNone0.049099s0.142819s
Success
dnstest.cSuccessNone0.049666s0.151260s
Success
epoll_edge_triggered.cSuccessNone0.207219s0.495072s
Success
epollcreate1.cSuccessNone0.051221s0.153269s
Success
error_handling_net.cSuccessNone0.059177s0.268898s
Success
getaddrinfo_test.cSuccessNone0.054164s0.188667s
Success
getaddrinfo_unspec.cSuccessNone0.056658s0.195192s
Success
gethostname.cSuccessNone0.043662s0.126617s
Success
getifaddrs.cSuccessNone0.051263s0.149961s
Success
getsockname.cSuccessNone0.056102s0.146990s
Success
getsockopt.cSuccessNone0.053420s0.199985s
Success
ipv6_basic.cSuccessNone0.055588s0.202862s
Success
makepipe.cSuccessNone0.043186s0.124440s
Success
nonblocking_eagain.cSuccessNone0.055631s0.213134s
Success
pipe.cSuccessNone0.051846s0.154787s
Success
pipe2.cSuccessNone0.052924s0.149070s
Success
pipeinput.cSuccessNone0.053427s0.167665s
Success
pipeinput2.cSuccessNone0.054291s0.173050s
Success
pipeonestring.cSuccessNone0.052874s0.167466s
Success
pipepong.cSuccessNone0.051948s0.173360s
Success
pipewrite.cSuccessNone0.046288s0.144526s
Success
poll.cSuccessNone0.050235s0.139080s
Success
recvfrom-sendto.cSuccessNone0.051870s0.158376s
Success
sendmsg_recvmsg_test.cSuccessNone0.051289s0.155219s
Success
serverclient.cSuccessNone0.051208s0.147673s
Success
shutdown.cSuccessNone0.052474s0.151658s
Success
shutdown_fork.cSuccessNone0.051222s0.155744s
Success
simple-select.cSuccessNone0.053654s0.170502s
Success
simple_epoll.cSuccessNone0.051031s0.153388s
Success
socket.cSuccessNone0.049119s0.138518s
Success
socket_cloexec.cSuccessNone0.050270s0.140655s
Success
socket_options_advanced.cSuccessNone0.056217s0.219523s
Success
socketepoll.cSuccessNone0.049384s0.144641s
Success
socketpair.cSuccessNone0.048788s0.151459s
Success
socketselect.cSuccessNone0.049635s0.145992s
Success
udp_send_recv.cSuccessNone0.158334s0.317035s
Success
uds-getsockname.cSuccessNone0.050491s0.147213s
Success
uds-nb-select.cSuccessNone2.058774s2.219935s
Success
uds-serverclient.cSuccessNone0.055008s0.185152s
Success
uds-socketselect.cSuccessNone0.050694s0.148541s
Success
writev_socket.cSuccessNone0.053999s0.185864s
Success
Process Tests
barrier_test.cSuccessNone0.049021s0.148292s
Success
chain_thread.cSuccessNone1.051088s1.153265s
Success
ctor_syscall_test.cSuccessNone0.040723s0.125279s
Success
cxa_atexit_test.cSuccessNone0.046282s0.132287s
Success
execve_shebang.cSuccessNone0.050069s0.142354s
Success
exit.cSuccessNone0.048481s0.128544s
Success
exit_failure.cSuccessNone0.049221s0.142218s
Success
exit_group_thread.cSuccessNone0.051078s0.153394s
Success
flockfile_test.cSuccessNone0.050356s0.168429s
Success
fork2malloc.cSuccessNone0.051239s0.150715s
Success
fork_select.cSuccessNone0.049338s0.155030s
Success
fork_simple.cSuccessNone0.048075s0.140487s
Success
fork_syscall.cSuccessNone0.057142s0.298424s
Success
fork_tls_ctype.cSuccessNone0.052484s0.172038s
Success
forkandopen.cSuccessNone0.052363s0.166738s
Success
forkdup.cSuccessNone0.053269s0.159708s
Success
forkexecuid.cSuccessNone0.049527s0.223451s
Success
forkexecv-arg.cSuccessNone0.049454s0.201797s
Success
forkexecv.cSuccessNone0.047643s0.195755s
Success
forkfiles.cSuccessNone0.050891s0.158195s
Success
forkmalloc.cSuccessNone0.058342s0.145568s
Success
forknodup.cSuccessNone0.051697s0.161486s
Success
function-ptr.cSuccessNone0.046630s0.132717s
Success
getegid_syscall.cSuccessNone0.051551s0.275436s
Success
getgid_syscall.cSuccessNone0.051431s0.280148s
Success
getpid.cSuccessNone0.043722s0.126986s
Success
getpid_syscall.cSuccessNone0.052526s0.291838s
Success
getppid.cSuccessNone0.050805s0.149761s
Success
getppid_syscall.cSuccessNone0.053652s0.242433s
Success
getuid.cSuccessNone0.051094s0.138467s
Success
getuid_syscall.cSuccessNone0.049224s0.190666s
Success
hello-arg.cSuccessNone0.040780s0.130328s
Success
hello.cSuccessNone0.041108s0.121506s
Success
longjmp.cSuccessNone0.042031s0.129500s
Success
mutex.cSuccessNone2.053468s2.159695s
Success
printf_deadlock_smoke.cSuccessNone0.059240s0.194240s
Success
printf_thread_test.cSuccessNone0.048685s0.157233s
Success
sem_forks.cSuccessNone0.053136s0.164083s
Success
setsid.cSuccessNone0.042763s0.126315s
Success
template.cSuccessNone0.050342s0.162533s
Success
test_exec_nofork.cSuccessNone0.048698s0.194005s
Success
test_unlink_open_file.cSuccessNone0.045430s0.129057s
Success
thread-test.cSuccessNone0.045146s0.136032s
Success
thread.cSuccessNone0.045046s0.135447s
Success
thread_cageid_race.cSuccessNone0.046510s0.191304s
Success
tls_test.cSuccessNone0.048219s0.154268s
Success
uname.cSuccessNone0.043460s0.128678s
Success
wait.cSuccessNone2.050788s2.147730s
Success
waitpid_anychild.cSuccessNone0.050296s0.147322s
Success
waitpid_syscall.cSuccessNone1.050890s1.185264s
Success
waitpid_wnohang.cSuccessNone0.050772s0.150105s
Success
Signal Tests
alarm.cSuccessNone7.049631s7.168092s
Success
eintr_fork_signal.cSuccessNone1.052131s1.169161s
Success
kill.cSuccessNone1.050083s1.152028s
Success
setitimer.cSuccessNone7.050221s7.181956s
Success
sigalrm.cSuccessNone2.049991s2.158889s
Success
sigaltstack.cSuccessNone0.054150s0.153521s
Success
sigchld.cSuccessNone1.052255s1.152537s
Success
signal-fork.cSuccessNone4.051536s4.157180s
Success
signal-simple.cSuccessNone0.051231s0.146666s
Success
signal_SIGCHLD.cSuccessNone0.049022s0.152517s
Success
signal_fork.cSuccessNone0.046872s0.158223s
Success
signal_int_ignored.cSuccessNone2.051097s2.154685s
Success
signal_kill_cleanup.cSuccessNone1.048546s1.149006s
Success
signal_procmask.cSuccessNone0.044899s0.146691s
Success
signal_recursive.cSuccessNone0.044710s0.143727s
Success
signal_sa_mask.cSuccessNone0.044957s0.136377s
Success
sigpipe.cSuccessNone1.052496s1.169201s
Success
sigprocmask.cSuccessNone1.050560s1.152504s
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.041957s0.126782s
Success
Memory Tests
mmap-negative1.cSuccessNone0.138316s0.139208s
Success
mmap-negative2.cSuccessNone0.106229s0.147888s
Success
Signal Tests
signal_resethand.cSuccessNone1.049795s1.151937s
Success

} else {
sc_convert_buf(list_arg, list_cageid, cageid) as *mut libc::c_char
};
let size = sc_convert_sysarg_to_usize(size_arg, size_cageid, cageid);
Copy link
Copy Markdown
Contributor

@vidyalakshmir vidyalakshmir Apr 16, 2026

Choose a reason for hiding this comment

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

In the earlier line, guest memory pointers are translated using sc_convert_buf without validating the guest's provided size argument. This allows a malicious guest to allocate a tiny buffer but pass a massive size, tricking the host kernel into writing outside the guest's memory boundaries (a buffer overflow).

Proposed Fix: We need to add a bounds check to validate that the entire contiguous memory region from pointer to pointer + size resides completely within the allowed cage memory. (pointer is list_arg).
@Yaxuan-w @rennergade @qianxichen233

} else {
sc_convert_buf(value_arg, value_cageid, cageid) as *const libc::c_void
};
let size = sc_convert_sysarg_to_usize(size_arg, size_cageid, cageid);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Similar to the comment for listxattr, there can be an out-of-bounds read here. We need to check if pointer + size is within the allowed cage memory.

If the guest allocates a 5-byte buffer containing "hello", but calls setxattr with a size of 1000, the host kernel will read 1000 bytes starting from that pointer and save it to the file's extended attributes. The guest just forced the host kernel to read 995 bytes of adjacent memory and save it to the disk. The guest can then read that file's extended attributes to steal the host's memory.

@Yaxuan-w @rennergade @qianxichen233

if ret < 0 {
let errno = get_errno();
return handle_errno(errno, "listxattr");
}
Copy link
Copy Markdown
Contributor

@vidyalakshmir vidyalakshmir Apr 16, 2026

Choose a reason for hiding this comment

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

The setxattr and listxattr implementations allow the guest to operate on arbitrary xattr namespaces. Since the host kernel evaluates these calls using the sandbox runtime's privileges, a malicious guest can write to security.* attributes (e.g. security.capability to grant root capabilities) or modify ACLs via system.* — fully bypassing host access controls. All xattr operations must be restricted to the user.* namespace, with anything else rejected at the shim layer.
@Yaxuan-w @rennergade @qianxichen233

vidyalakshmir
vidyalakshmir previously approved these changes Apr 17, 2026
Copy link
Copy Markdown
Contributor

@vidyalakshmir vidyalakshmir left a comment

Choose a reason for hiding this comment

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

Approving this. The changes requested would be tackled in a different issue and this issue. Please fix the merged conflicts.

@Yaxuan-w
Copy link
Copy Markdown
Member

Needs to resolve merge conflicts before merging

@celinehoang177 celinehoang177 force-pushed the setxattr-listxattr-system-calls branch 2 times, most recently from 83e55e2 to af8d239 Compare April 27, 2026 02:44
@celinehoang177 celinehoang177 force-pushed the setxattr-listxattr-system-calls branch from af8d239 to 105ca48 Compare April 27, 2026 02:50
@github-actions
Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

Unified Test Report

grate harness

MetricValue
Total12
Success12
Failures0
Compile Failures0
Runtime Failures0
Timeout Failures0
Missing Pair Failures0

Cases

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

STDERR:

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

STDERR:

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

STDERR:

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

STDERR:

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

[Grate|interpose-exit] PASS

STDERR:

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

STDERR:

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

STDERR:

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

STDERR:

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

STDERR:

simple-tests/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: 3 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 4 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:

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

STDERR:

static harness

Test Report

Deterministic Tests

Summary

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

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Static Tests
fork_simple.cSuccessNone0.058143s4.400590s
Success
thread.cSuccessNone0.052387s4.483354s
Success
tls_test.cSuccessNone0.058417s4.484198s
Success
Fail Tests

Summary

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

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases208
Number of Successes208
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.050817s0.148631s
Success
chdir_getcwd.cSuccessNone0.053219s0.104251s
Success
chmod.cSuccessNone0.057357s0.108122s
Success
clock_gettime_highlevel.cSuccessNone0.127031s0.304490s
Success
clock_gettime_simple.cSuccessNone0.047054s0.093516s
Success
cloexec.cSuccessNone0.056658s0.112548s
Success
close.cSuccessNone0.064407s0.127053s
Success
creat_access.cSuccessNone0.054257s0.100457s
Success
doubleclose.cSuccessNone0.048647s0.090741s
Success
dup.cSuccessNone0.047718s0.102544s
Success
dup2.cSuccessNone0.052761s0.099194s
Success
dup3.cSuccessNone0.052262s0.103029s
Success
dupwrite.cSuccessNone0.055699s0.099882s
Success
etc_conf.cSuccessNone0.051601s0.109621s
Success
fchdir.cSuccessNone0.057329s0.112946s
Success
fchmod.cSuccessNone0.056587s0.109647s
Success
fcntl.cSuccessNone0.054925s0.111124s
Success
fdatasync.cSuccessNone0.054654s0.097374s
Success
filetest.cSuccessNone0.053985s0.099144s
Success
filetest1000.cSuccessNone0.063451s0.114830s
Success
flock.cSuccessNone0.063573s0.133503s
Success
fstat.cSuccessNone0.057539s0.111213s
Success
fstatfs.cSuccessNone0.049250s0.095095s
Success
fsync.cSuccessNone0.054183s0.098373s
Success
ftruncate.cSuccessNone0.058373s0.230736s
Success
getcwd.cSuccessNone0.051992s0.096627s
Success
getpgid.cSuccessNone0.049194s0.092335s
Success
getrandom.cSuccessNone0.054280s0.104667s
Success
ioctl.cSuccessNone0.057173s0.105579s
Success
link.cSuccessNone0.059216s0.158186s
Success
locale_test.cSuccessNone0.066002s0.584467s
Success
lseek.cSuccessNone0.059516s0.220173s
Success
lstat.cSuccessNone0.057919s0.118672s
Success
mkdir_rmdir.cSuccessNone0.055742s0.101908s
Success
mkfifo_test.cSuccessNone0.060379s0.140936s
Success
mknod.cSuccessNone0.053273s0.109599s
Success
nocancel_io.cSuccessNone0.057712s0.129018s
Success
open.cSuccessNone0.050067s0.093267s
Success
openat.cSuccessNone0.050823s0.100056s
Success
path_conversion_safety.cSuccessNone0.060586s0.127267s
Success
ppoll.cSuccessNone0.058944s0.113329s
Success
pread_pwrite.cSuccessNone0.052987s0.111317s
Success
preadv_pwritev.cSuccessNone0.057088s0.117190s
Success
printf.cSuccessNone0.047333s0.087285s
Success
prlimit64.cSuccessNone0.049623s0.097089s
Success
read.cSuccessNone0.054249s0.109961s
Success
readbytes.cSuccessNone0.052308s0.097458s
Success
readdir_basic.cSuccessNone0.059839s0.120291s
Success
readlink.cSuccessNone0.055379s0.107524s
Success
readlinkat.cSuccessNone0.056563s0.113992s
Success
readv_writev_test.cSuccessNone0.056852s0.114243s
Success
rename.cSuccessNone0.057705s0.105089s
Success
sc-writev.cSuccessNone0.053148s0.102950s
Success
stat.cSuccessNone0.057395s0.106351s
Success
statfs.cSuccessNone0.051473s0.098631s
Success
symlink.cSuccessNone0.058376s0.134802s
Success
sync_file_range.cSuccessNone0.053571s0.101049s
Success
timespec_time_t_compat.cSuccessNone0.052685s0.096141s
Success
truncate.cSuccessNone0.055487s0.112481s
Success
unlink.cSuccessNone0.058326s0.148933s
Success
unlinkat.cSuccessNone0.057318s0.120820s
Success
write.cSuccessNone0.049704s0.089463s
Success
writeloop.cSuccessNone0.056542s0.098160s
Success
writepartial.cSuccessNone0.055712s0.096814s
Success
writev.cSuccessNone0.056498s0.109222s
Success
Math Tests
math_link_smoke.cSuccessNone0.058483s0.096210s
Success
math_tests.cSuccessNone0.061981s0.114635s
Success
Memory Tests
brk.cSuccessNone0.054755s0.100766s
Success
fork_large_memory.cSuccessNone0.085853s0.347754s
Success
malloc.cSuccessNone0.051882s0.092551s
Success
malloc_large.cSuccessNone0.052289s0.097321s
Success
memcpy.cSuccessNone0.050972s0.091929s
Success
memory_error_test.cSuccessNone0.056733s0.133418s
Success
mmap.cSuccessNone0.049039s0.095299s
Success
mmap_aligned.cSuccessNone0.052563s0.136223s
Success
mmap_complicated.cSuccessNone0.055488s0.113766s
Success
mmap_file.cSuccessNone0.056164s0.104801s
Success
mmap_shared.cSuccessNone0.055343s0.107879s
Success
mmaptest.cSuccessNone0.051380s0.098448s
Success
mprotect.cSuccessNone0.049682s0.093954s
Success
mprotect_boundary.cSuccessNone0.049867s0.110872s
Success
mprotect_end_region.cSuccessNone0.049505s0.100911s
Success
mprotect_middle_region.cSuccessNone0.049286s0.104974s
Success
mprotect_multiple_times.cSuccessNone0.049720s0.103283s
Success
mprotect_same_value.cSuccessNone0.049108s0.099278s
Success
mprotect_spanning_regions.cSuccessNone0.050256s0.119570s
Success
munmap_adjacent_shm.cSuccessNone0.051362s0.113983s
Success
sbrk.cSuccessNone0.051650s0.094721s
Success
segfault.cSuccessNone0.056604s0.119109s
Success
shm.cSuccessNone0.055125s0.112723s
Success
shmtest.cSuccessNone0.050618s0.099964s
Success
thread_malloc_sequential.cSuccessNone0.056318s0.123304s
Success
vtable.cSuccessNone0.060030s0.114037s
Success
Networking Tests
accept4.cSuccessNone0.059053s0.115331s
Success
dns_resolve_test.cSuccessNone0.053988s0.101668s
Success
dnstest.cSuccessNone0.055281s0.113165s
Success
epoll_edge_triggered.cSuccessNone0.211644s0.450624s
Success
epollcreate1.cSuccessNone0.056342s0.112461s
Success
error_handling_net.cSuccessNone0.062666s0.215057s
Success
getaddrinfo_test.cSuccessNone0.058384s0.145228s
Success
getaddrinfo_unspec.cSuccessNone0.057296s0.151977s
Success
gethostname.cSuccessNone0.050599s0.091313s
Success
getifaddrs.cSuccessNone0.056446s0.103104s
Success
getsockname.cSuccessNone0.060688s0.106851s
Success
getsockopt.cSuccessNone0.059472s0.159396s
Success
ipv6_basic.cSuccessNone0.059283s0.146545s
Success
makepipe.cSuccessNone0.050107s0.091497s
Success
nonblocking_eagain.cSuccessNone0.060683s0.164276s
Success
pipe.cSuccessNone0.059433s0.112261s
Success
pipe2.cSuccessNone0.056932s0.104353s
Success
pipeinput.cSuccessNone0.058297s0.121704s
Success
pipeinput2.cSuccessNone0.058870s0.122632s
Success
pipeonestring.cSuccessNone0.058024s0.123015s
Success
pipepong.cSuccessNone0.056098s0.122423s
Success
pipewrite.cSuccessNone0.051827s0.103969s
Success
poll.cSuccessNone0.055011s0.097805s
Success
recvfrom-sendto.cSuccessNone0.059179s0.113462s
Success
sendmsg_recvmsg_test.cSuccessNone0.056613s0.111128s
Success
serverclient.cSuccessNone0.055934s0.107519s
Success
shutdown.cSuccessNone0.058994s0.109010s
Success
shutdown_fork.cSuccessNone0.058470s0.112115s
Success
simple-select.cSuccessNone0.057382s0.123515s
Success
simple_epoll.cSuccessNone0.056077s0.107449s
Success
socket.cSuccessNone0.054391s0.099588s
Success
socket_cloexec.cSuccessNone0.054615s0.098369s
Success
socket_options_advanced.cSuccessNone0.061313s0.177011s
Success
socketepoll.cSuccessNone0.055151s0.101253s
Success
socketpair.cSuccessNone0.055203s0.108229s
Success
socketselect.cSuccessNone0.056407s0.107307s
Success
udp_send_recv.cSuccessNone0.162704s0.263487s
Success
uds-getsockname.cSuccessNone0.055809s0.099537s
Success
uds-nb-select.cSuccessNone2.066260s2.154907s
Success
uds-serverclient.cSuccessNone0.059390s0.129447s
Success
uds-socketselect.cSuccessNone0.057204s0.107641s
Success
writev_socket.cSuccessNone0.060730s0.145801s
Success
Process Tests
barrier_test.cSuccessNone0.055618s0.105159s
Success
chain_thread.cSuccessNone1.057570s1.112052s
Success
ctor_syscall_test.cSuccessNone0.046930s0.089193s
Success
cxa_atexit_test.cSuccessNone0.052345s0.095273s
Success
execve_shebang.cSuccessNone0.055953s0.100883s
Success
exit.cSuccessNone0.052972s0.095991s
Success
exit_failure.cSuccessNone0.056007s0.102246s
Success
exit_group_thread.cSuccessNone0.056062s0.110447s
Success
flockfile_test.cSuccessNone0.056540s0.114698s
Success
fork2malloc.cSuccessNone0.057235s0.111357s
Success
fork_select.cSuccessNone0.057942s0.116816s
Success
fork_simple.cSuccessNone0.053617s0.103571s
Success
fork_syscall.cSuccessNone0.060847s0.231393s
Success
fork_tls_ctype.cSuccessNone0.058235s0.131332s
Success
forkandopen.cSuccessNone0.057302s0.120559s
Success
forkdup.cSuccessNone0.060511s0.109962s
Success
forkexecuid.cSuccessNone0.055085s0.117053s
Success
forkexecv-arg.cSuccessNone0.055669s0.108357s
Success
forkexecv.cSuccessNone0.054406s0.105420s
Success
forkfiles.cSuccessNone0.057521s0.115875s
Success
forkmalloc.cSuccessNone0.057570s0.107318s
Success
forknodup.cSuccessNone0.058450s0.118426s
Success
function-ptr.cSuccessNone0.052139s0.097578s
Success
getegid_syscall.cSuccessNone0.055357s0.188848s
Success
getgid_syscall.cSuccessNone0.057532s0.203786s
Success
getpid.cSuccessNone0.049755s0.092301s
Success
getpid_syscall.cSuccessNone0.056510s0.209828s
Success
getppid.cSuccessNone0.056094s0.105370s
Success
getppid_syscall.cSuccessNone0.059338s0.176019s
Success
getuid.cSuccessNone0.056852s0.101693s
Success
getuid_syscall.cSuccessNone0.056705s0.140419s
Success
hello-arg.cSuccessNone0.048240s0.091910s
Success
hello.cSuccessNone0.047589s0.088744s
Success
longjmp.cSuccessNone0.049129s0.094835s
Success
mutex.cSuccessNone2.058171s2.109147s
Success
printf_deadlock_smoke.cSuccessNone0.064992s0.134688s
Success
printf_thread_test.cSuccessNone0.055187s0.111516s
Success
sem_forks.cSuccessNone0.059097s0.118422s
Success
setsid.cSuccessNone0.050441s0.091362s
Success
template.cSuccessNone0.056977s0.124706s
Success
test_exec_nofork.cSuccessNone0.055090s0.104462s
Success
test_unlink_open_file.cSuccessNone0.050329s0.091272s
Success
thread-guard.cSuccessNone0.054079s0.106151s
Success
thread-test.cSuccessNone0.051417s0.096996s
Success
thread.cSuccessNone0.051701s0.097579s
Success
thread_cageid_race.cSuccessNone0.052535s0.120936s
Success
tls_test.cSuccessNone0.056235s0.111819s
Success
uname.cSuccessNone0.049698s0.091974s
Success
wait.cSuccessNone2.055407s2.105797s
Success
waitpid_anychild.cSuccessNone0.057787s0.109603s
Success
waitpid_syscall.cSuccessNone1.056412s1.136622s
Success
waitpid_wnohang.cSuccessNone0.058191s0.109932s
Success
Signal Tests
alarm.cSuccessNone7.055861s7.128280s
Success
eintr_fork_signal.cSuccessNone1.057074s1.116761s
Success
kill.cSuccessNone1.055688s1.107950s
Success
setitimer.cSuccessNone7.055769s7.135727s
Success
sigalrm.cSuccessNone2.055355s2.111951s
Success
sigaltstack.cSuccessNone0.056544s0.110069s
Success
sigchld.cSuccessNone1.057098s1.105799s
Success
signal-fork.cSuccessNone4.055990s4.108447s
Success
signal-simple.cSuccessNone0.056573s0.101735s
Success
signal_SIGCHLD.cSuccessNone0.054555s0.109360s
Success
signal_fork.cSuccessNone0.052236s0.107344s
Success
signal_int_ignored.cSuccessNone2.054607s2.104342s
Success
signal_kill_cleanup.cSuccessNone1.053629s1.104107s
Success
signal_procmask.cSuccessNone0.050867s0.100094s
Success
signal_read_interrupt.cSuccessNone0.559447s0.614826s
Success
signal_recursive.cSuccessNone0.050918s0.104561s
Success
signal_sa_mask.cSuccessNone0.051009s0.098165s
Success
signal_select_interrupt.cSuccessNone0.559809s0.616686s
Success
signal_write_interrupt.cSuccessNone1.058456s1.115876s
Success
sigpipe.cSuccessNone1.057557s1.114223s
Success
sigprocmask.cSuccessNone1.054488s1.105327s
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.048832s0.091916s
Success
Memory Tests
mmap-negative1.cSuccessNone0.134592s0.096379s
Success
mmap-negative2.cSuccessNone0.116500s0.104121s
Success
Signal Tests
signal_resethand.cSuccessNone1.056592s1.105869s
Success

@Yaxuan-w Yaxuan-w requested a review from rennergade April 27, 2026 14:43
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.

Add support for setxattr and listxattr system calls

4 participants