Skip to content

fix dynamically built grate#1242

Open
qianxichen233 wants to merge 4 commits into
mainfrom
fix-grate-dylink
Open

fix dynamically built grate#1242
qianxichen233 wants to merge 4 commits into
mainfrom
fix-grate-dylink

Conversation

@qianxichen233

Copy link
Copy Markdown
Contributor

fix dynamically built grate so that grate can be dynamically built and run

also adjust the default stack space for grate worker to be 1MB rather than 8MB

Grates previously had to be compiled statically (-s): the runtime gated
grate-worker registration to non-dylink modules. This lets grates run as
shared/dynamic builds while keeping static working.

- instance.rs: reserve the grate stack arena in the dynamic InstantiateFirst
  branch and always inherit it to the fork child; execve now unsets the arena
  base for all builds (fixes fork+exec 'already initialized' panic).
- linker.rs: add build_dylink_child_store + LindDylinkChildStore, the per-store
  dynamic-linking replay used to construct grate workers (separate Store sharing
  the cage memory; fresh per-store linker/table/GOT; global-snapshot + GOT
  reloc + TLS replay). Mirrors the pthread thread-creation path.
- lind-3i: GrateTemplate gains an optional worker_builder; create_worker uses it
  for dynamic grates and keeps the clone-linker path for static.
- lind-multi-process / lind-boot: build the worker_builder at the initial-cage
  and fork registration sites; drop the static-only gate.
- gratetestreport.py: add --grate-build {static,shared,both} (default shared).

In-repo tests/grate-tests pass in both static and shared modes.
Each grate worker reserves a stack slot in a per-cage arena sized
MAX_GRATE_WORKERS * (guard + slot). At the previous 8 MiB slot that arena was
~256 MiB per cage, which is far more than grate handler code (shallow syscall
interposition) needs.

Replace the GRATE_STACK_SLOT_SIZE constant with DEFAULT_GRATE_STACK_SLOT_SIZE
(1 MiB) plus grate_stack_slot_size(), which reads LIND_GRATE_STACK_SIZE (bytes,
page-rounded) once and caches it. The arena reservation (instance.rs, both the
static and dynamic branches) and the per-worker slot addressing (lind-3i) both
call it, so they always agree on the layout. Default arena drops to ~32 MiB.
…k arena

The grate worker stack arena is mapped accessible at the low end of linear
memory (after the stack/data region), so 0x1234567 (~18 MiB) now falls inside
it and reads as valid instead of faulting. Move the probe to 0x40000000 (1 GiB):
above the stack, data region, grate stack arena, and the tiny heap, yet within
the 4 GiB linear memory, so it reliably hits a reserved PROT_NONE page and
traps. Verified both tests fault under default settings.
…ctor

The grate test harness should exercise dynamically-linked grates only and
expose no public switch to change that. Remove the --grate-build
{static,shared,both} option (and GRATE_BUILD env), and always compile the
grate without -s (dynamic). Cages are unchanged (lind-clang dynamic default).
@github-actions

github-actions Bot commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

grate harness

Grate Test Report

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

Cases

TestStatusError TypeOutput
concurrent-request/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 2
[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: 2
[thread_race] PASS: 20 threads x 100000 calls returned 10
[thread_race] PASS

STDERR:

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

STDERR:

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

STDERR:

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

STDERR:

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

STDERR:

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

[Grate|interpose-exit] PASS

STDERR:

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

STDERR:

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

STDERR:

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

STDERR:

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

STDERR:

simple-tests/copy-handler-table_grate.cSuccess
STDOUT:
[Grate|copy-handler-table] Registering geteuid handler for cage 2 in grate 1
[Grate|copy-handler-table] geteuid handler invoked for cage 1
[Grate|copy-handler-table] geteuid handler invoked for cage 1
[Cage|copy-handler-table] PASS: child inherited handler, then overwrite changed geteuid to 0
[Cage|copy-handler-table] PASS: parent=123 child_exit=0
[Grate|copy-handler-table] PASS

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 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:

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.061253s4.022582s
Success
thread.cSuccessNone0.055489s4.073806s
Success
tls_test.cSuccessNone0.058326s4.186410s
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 Cases233
Number of Successes233
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Dylink Tests
basic.cSuccessNone0.054713s0.133415s
Success
dlopen_fork.cSuccessNone0.057208s0.169128s
Success
dlopen_thread.cSuccessNone0.058769s0.161333s
Success
double_fork_dlopen.cSuccessNone0.060139s0.222726s
Success
fork_dlopen.cSuccessNone0.058709s0.166195s
Success
longjmp_dlopen.cSuccessNone0.055566s0.152198s
Success
rdynamic_main.cSuccessNone0.057156s0.163350s
Success
File Tests
chartests.cSuccessNone0.053915s0.161772s
Success
chdir_getcwd.cSuccessNone0.053842s0.131094s
Success
chmod.cSuccessNone0.062188s0.146241s
Success
clock_gettime_highlevel.cSuccessNone0.127319s0.190314s
Success
clock_gettime_simple.cSuccessNone0.047912s0.118535s
Success
cloexec.cSuccessNone0.062890s0.166474s
Success
close.cSuccessNone0.069406s0.159234s
Success
creat_access.cSuccessNone0.059810s0.135011s
Success
doubleclose.cSuccessNone0.050418s0.116953s
Success
dup.cSuccessNone0.051897s0.135678s
Success
dup2.cSuccessNone0.057302s0.131145s
Success
dup3.cSuccessNone0.055559s0.133694s
Success
dupwrite.cSuccessNone0.057354s0.130026s
Success
etc_conf.cSuccessNone0.052280s0.136396s
Success
faccessat.cSuccessNone0.052515s0.134976s
Success
fchdir.cSuccessNone0.062652s0.149164s
Success
fchmod.cSuccessNone0.060243s0.144616s
Success
fchmodat.cSuccessNone0.053687s0.134451s
Success
fcntl.cSuccessNone0.056929s0.146485s
Success
fcntl_dupfd.cSuccessNone0.050040s0.125255s
Success
fdatasync.cSuccessNone0.056859s0.131692s
Success
filetest.cSuccessNone0.056102s0.126560s
Success
filetest1000.cSuccessNone0.066966s0.146184s
Success
flock.cSuccessNone0.063445s0.185142s
Success
fstat.cSuccessNone0.062329s0.147600s
Success
fstatfs.cSuccessNone0.054247s0.130742s
Success
fsync.cSuccessNone0.057192s0.130975s
Success
ftruncate.cSuccessNone0.060608s0.224172s
Success
getcwd.cSuccessNone0.054668s0.124419s
Success
getcwd_null.cSuccessNone0.057891s0.137053s
Success
getpgid.cSuccessNone0.052838s0.124356s
Success
getrandom.cSuccessNone0.057450s0.143810s
Success
ioctl.cSuccessNone0.060244s0.137647s
Success
link.cSuccessNone0.062648s0.176639s
Success
locale_test.cSuccessNone0.069639s0.329050s
Success
lseek.cSuccessNone0.061436s0.207251s
Success
lstat.cSuccessNone0.062032s0.153344s
Success
mkdir_rmdir.cSuccessNone0.057640s0.136533s
Success
mkfifo_test.cSuccessNone0.061415s0.195557s
Success
mknod.cSuccessNone0.055861s0.143661s
Success
nocancel_io.cSuccessNone0.061382s0.159806s
Success
open.cSuccessNone0.051833s0.119691s
Success
openat.cSuccessNone0.055175s0.131775s
Success
path_conversion_safety.cSuccessNone0.063440s0.154275s
Success
ppoll.cSuccessNone0.060418s0.144165s
Success
pread_pwrite.cSuccessNone0.055970s0.133450s
Success
preadv_pwritev.cSuccessNone0.058551s0.151018s
Success
printf.cSuccessNone0.051060s0.119838s
Success
prlimit64.cSuccessNone0.050536s0.121117s
Success
read.cSuccessNone0.057347s0.142440s
Success
readbytes.cSuccessNone0.054950s0.125799s
Success
readdir_basic.cSuccessNone0.059468s0.167659s
Success
readlink.cSuccessNone0.057043s0.137742s
Success
readlinkat.cSuccessNone0.058071s0.145715s
Success
readv_writev_test.cSuccessNone0.061806s0.149608s
Success
rename.cSuccessNone0.063269s0.135794s
Success
renameat.cSuccessNone0.062811s0.150756s
Success
sc-writev.cSuccessNone0.057427s0.135998s
Success
stat.cSuccessNone0.058714s0.144149s
Success
statfs.cSuccessNone0.053296s0.124787s
Success
symlink.cSuccessNone0.061705s0.170207s
Success
sync_file_range.cSuccessNone0.055486s0.127895s
Success
timespec_time_t_compat.cSuccessNone0.055354s0.127882s
Success
trailing_slash.cSuccessNone0.057903s0.137922s
Success
truncate.cSuccessNone0.062246s0.156525s
Success
unlink.cSuccessNone0.059082s0.167637s
Success
unlinkat.cSuccessNone0.059901s0.152554s
Success
utimensat.cSuccessNone0.055072s0.151097s
Success
write.cSuccessNone0.053815s0.119484s
Success
writeloop.cSuccessNone0.059626s0.133350s
Success
writepartial.cSuccessNone0.060562s0.128231s
Success
writev.cSuccessNone0.057831s0.138889s
Success
Math Tests
math_link_smoke.cSuccessNone0.063491s0.126043s
Success
math_tests.cSuccessNone0.067358s0.156325s
Success
printf_float.cSuccessNone0.063979s0.151931s
Success
Memory Tests
brk.cSuccessNone0.073367s0.181319s
Success
fork_large_memory.cSuccessNone0.094143s0.555857s
Success
malloc.cSuccessNone0.063699s0.134251s
Success
malloc_large.cSuccessNone0.074157s0.232033s
Success
memcpy.cSuccessNone0.123341s0.169217s
Success
memory_error_test.cSuccessNone0.064680s0.152713s
Success
mmap.cSuccessNone0.075631s0.263980s
Success
mmap_address_truncation.cSuccessNone0.053863s0.147732s
Success
mmap_aligned.cSuccessNone0.055295s0.143782s
Success
mmap_complicated.cSuccessNone0.077173s0.198153s
Success
mmap_file.cSuccessNone0.070364s0.172713s
Success
mmap_shared.cSuccessNone0.059988s0.163841s
Success
mmaptest.cSuccessNone0.064967s0.135982s
Success
mprotect.cSuccessNone0.051991s0.135052s
Success
mprotect_boundary.cSuccessNone0.055277s0.138502s
Success
mprotect_end_region.cSuccessNone0.055808s0.134762s
Success
mprotect_middle_region.cSuccessNone0.065845s0.170447s
Success
mprotect_multiple_times.cSuccessNone0.051898s0.130729s
Success
mprotect_same_value.cSuccessNone0.056654s0.129339s
Success
mprotect_spanning_regions.cSuccessNone0.059770s0.162972s
Success
munmap_adjacent_shm.cSuccessNone0.054139s0.152929s
Success
sbrk.cSuccessNone0.055884s0.128888s
Success
segfault.cSuccessNone0.062351s0.176005s
Success
shm.cSuccessNone0.079347s0.290485s
Success
shmtest.cSuccessNone0.053174s0.129946s
Success
thread_malloc_sequential.cSuccessNone0.074065s0.318668s
Success
vtable.cSuccessNone0.093016s0.216572s
Success
Networking Tests
accept4.cSuccessNone0.064133s0.155819s
Success
dns_resolve_test.cSuccessNone0.057747s0.137000s
Success
dnstest.cSuccessNone0.058535s0.137677s
Success
epoll_badfd.cSuccessNone0.054479s0.124154s
Success
epoll_edge_triggered.cSuccessNone0.216080s0.396683s
Success
epollcreate1.cSuccessNone0.060040s0.148416s
Success
error_handling_net.cSuccessNone0.066953s0.209272s
Success
getaddrinfo_test.cSuccessNone0.063582s0.173558s
Success
getaddrinfo_unspec.cSuccessNone0.068084s0.144707s
Success
gethostname.cSuccessNone0.053360s0.123614s
Success
getifaddrs.cSuccessNone0.059653s0.141246s
Success
getsockname.cSuccessNone0.061319s0.140814s
Success
getsockopt.cSuccessNone0.062956s0.173987s
Success
ipv6_basic.cSuccessNone0.064225s0.175462s
Success
makepipe.cSuccessNone0.052193s0.119381s
Success
nonblocking_eagain.cSuccessNone0.064378s0.181245s
Success
pipe.cSuccessNone0.061747s0.145444s
Success
pipe2.cSuccessNone0.060333s0.139465s
Success
pipeinput.cSuccessNone0.064641s0.179953s
Success
pipeinput2.cSuccessNone0.061468s0.183636s
Success
pipeonestring.cSuccessNone0.062469s0.180020s
Success
pipepong.cSuccessNone0.059962s0.186484s
Success
pipewrite.cSuccessNone0.057320s0.134309s
Success
poll.cSuccessNone0.060187s0.132092s
Success
recvfrom-sendto.cSuccessNone0.062117s0.148448s
Success
sendmsg_recvmsg_test.cSuccessNone0.060612s0.150894s
Success
serverclient.cSuccessNone0.060095s0.151131s
Success
shutdown.cSuccessNone0.063060s0.148488s
Success
shutdown_fork.cSuccessNone0.060993s0.170727s
Success
simple-select.cSuccessNone0.062361s0.181408s
Success
simple_epoll.cSuccessNone0.061097s0.144362s
Success
socket.cSuccessNone0.057369s0.135293s
Success
socket_cloexec.cSuccessNone0.057768s0.135581s
Success
socket_options_advanced.cSuccessNone0.064225s0.194330s
Success
socketepoll.cSuccessNone0.062693s0.136339s
Success
socketpair.cSuccessNone0.058355s0.163382s
Success
socketselect.cSuccessNone0.059489s0.142548s
Success
udp_send_recv.cSuccessNone0.165614s0.296242s
Success
uds-getsockname.cSuccessNone0.059915s0.134471s
Success
uds-nb-select.cSuccessNone2.069361s2.206849s
Success
uds-serverclient.cSuccessNone0.064067s0.190884s
Success
uds-socketselect.cSuccessNone0.060443s0.146837s
Success
uds_listen_poll.cSuccessNone1.067615s1.198459s
Success
writev_socket.cSuccessNone0.063850s0.174622s
Success
Process Tests
barrier_test.cSuccessNone0.058410s0.151932s
Success
chain_thread.cSuccessNone1.062441s1.163167s
Success
ctor_syscall_test.cSuccessNone0.050139s0.122912s
Success
cxa_atexit_test.cSuccessNone0.057144s0.129671s
Success
exec_non_utf8.cSuccessNone0.060172s0.132920s
Success
execve_shebang.cSuccessNone0.059384s0.137989s
Success
exit.cSuccessNone0.059724s0.132110s
Success
exit_failure.cSuccessNone0.072984s0.190664s
Success
exit_group_thread.cSuccessNone0.061592s0.178859s
Success
exit_status_first_wins.cSuccessNone0.066973s0.182614s
Success
flockfile_test.cSuccessNone0.060018s0.159907s
Success
fork2malloc.cSuccessNone0.064018s0.168421s
Success
fork_select.cSuccessNone0.059397s0.172596s
Success
fork_simple.cSuccessNone0.058324s0.160330s
Success
fork_syscall.cSuccessNone0.064933s0.901491s
Success
fork_tls_ctype.cSuccessNone0.063622s0.185295s
Success
forkandopen.cSuccessNone0.062541s0.173472s
Success
forkdup.cSuccessNone0.062241s0.170224s
Success
forkexecuid.cSuccessNone0.057780s0.186250s
Success
forkexecv-arg.cSuccessNone0.058752s0.179232s
Success
forkexecv.cSuccessNone0.071513s0.199421s
Success
forkfiles.cSuccessNone0.060477s0.171387s
Success
forkmalloc.cSuccessNone0.059326s0.160910s
Success
forknodup.cSuccessNone0.061560s0.172417s
Success
function-ptr.cSuccessNone0.062590s0.156840s
Success
getegid_syscall.cSuccessNone0.059805s0.635782s
Success
getgid_syscall.cSuccessNone0.062014s0.653732s
Success
getpid.cSuccessNone0.053014s0.122008s
Success
getpid_syscall.cSuccessNone0.062630s0.680295s
Success
getppid.cSuccessNone0.064729s0.229521s
Success
getppid_syscall.cSuccessNone0.067987s0.577600s
Success
getuid.cSuccessNone0.059950s0.132420s
Success
getuid_syscall.cSuccessNone0.060289s0.318166s
Success
hello-arg.cSuccessNone0.049822s0.124634s
Success
hello.cSuccessNone0.050528s0.118204s
Success
longjmp.cSuccessNone0.050704s0.128937s
Success
mutex.cSuccessNone2.062465s2.151557s
Success
printf_deadlock_smoke.cSuccessNone0.065817s0.185731s
Success
printf_thread_test.cSuccessNone0.058810s0.159944s
Success
sem_forks.cSuccessNone0.062762s0.222506s
Success
setjmp_edge.cSuccessNone0.068476s0.285805s
Success
setsid.cSuccessNone0.051699s0.120848s
Success
template.cSuccessNone0.059170s0.226607s
Success
test_crossmodule_longjmp.cSuccessNone0.060322s0.166031s
Success
test_exec_nofork.cSuccessNone0.059848s0.155782s
Success
test_unlink_open_file.cSuccessNone0.065038s0.171635s
Success
thread-guard.cSuccessNone0.059131s0.153980s
Success
thread-test.cSuccessNone0.055061s0.138819s
Success
thread.cSuccessNone0.055433s0.139885s
Success
thread_cageid_race.cSuccessNone0.054956s0.309808s
Success
tls_test.cSuccessNone0.056931s0.180277s
Success
uname.cSuccessNone0.054663s0.125016s
Success
wait.cSuccessNone0.057554s0.187523s
Success
waitpid_anychild.cSuccessNone0.058978s0.161755s
Success
waitpid_syscall.cSuccessNone1.059561s1.304058s
Success
waitpid_wnohang.cSuccessNone0.062337s0.168357s
Success
Signal Tests
alarm.cSuccessNone7.059207s7.164108s
Success
eintr_fork_signal.cSuccessNone1.061283s1.179461s
Success
kill.cSuccessNone1.059456s1.159882s
Success
pause_test.cSuccessNone1.061431s1.174571s
Success
setitimer.cSuccessNone7.061721s7.170321s
Success
sigalrm.cSuccessNone2.061053s2.152061s
Success
sigaltstack.cSuccessNone0.063156s0.148003s
Success
sigchld.cSuccessNone1.059416s1.162283s
Success
signal-fork.cSuccessNone4.061732s4.155511s
Success
signal-simple.cSuccessNone0.060050s0.136474s
Success
signal_SIGCHLD.cSuccessNone0.058688s0.167892s
Success
signal_fork.cSuccessNone0.057613s0.169917s
Success
signal_int_ignored.cSuccessNone2.058357s2.168558s
Success
signal_kill_cleanup.cSuccessNone1.058232s1.153871s
Success
signal_procmask.cSuccessNone0.053614s0.137649s
Success
signal_read_interrupt.cSuccessNone0.565311s0.659191s
Success
signal_recursive.cSuccessNone0.055598s0.146757s
Success
signal_sa_mask.cSuccessNone0.053838s0.133754s
Success
signal_select_interrupt.cSuccessNone0.561661s0.666136s
Success
signal_write_interrupt.cSuccessNone1.061660s1.154797s
Success
sigpipe.cSuccessNone1.062989s1.176957s
Success
sigprocmask.cSuccessNone1.058494s1.143286s
Success
sigsuspend_test.cSuccessNone1.061013s1.163895s
Success
test_sigsetjmp.cSuccessNone0.060756s0.167051s
Success
Fail Tests

Summary

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

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Dylink Tests
dlerror.cSuccessNone0.052387s0.124042s
Success
Memory Tests
invalid_access_direct.cSuccessNone0.120886s0.128059s
Success
invalid_access_fork.cSuccessNone0.174909s0.322647s
Success
mmap-negative1.cSuccessNone0.138009s0.127303s
Success
mmap-negative2.cSuccessNone0.148675s0.187475s
Success
Signal Tests
signal_resethand.cSuccessNone1.059005s1.164136s
Success

C++ harness

Summary

MetricValue
Total1
Success1
Failures0
Compile failures0
Runtime failures0
Output mismatch0
Timeouts0

Cases

TestStatusError typeNative timeWasm timeOutput
tests/unit-tests/cpp/sort.cppSuccess0.390542s8.519481s
LIBCPP_SORT_OK 1 2 3

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant