Skip to content

Libcpp compilation integration#976

Open
123R3N321 wants to merge 51 commits intomainfrom
libcpp-ren
Open

Libcpp compilation integration#976
123R3N321 wants to merge 51 commits intomainfrom
libcpp-ren

Conversation

@123R3N321
Copy link
Copy Markdown

Integrate libcpp compilation into main codebase

  1. libcpp compilation toolchain cmake file and compile .sh script

2.documentation in .md

  1. TODO: CI integration

Document changes made by Alice and Ren in an attempt to compile .wasm
from cpp source file
Create simple cpp program using <algorithms> header to test libcpp
headers
Change compilation command from clang to clang++, now the compile script
compiles cpp instead of c. Future changes needed to accomodate both

Also note due to mysterious reasons absolute path is needed when
callling this compile script: scripts/lind_compile <other args>
Add error msg of cpp compilation attempt, which is being fixed right now
Add ignore for llvm external dependencies
Add .cmake to be used for build script to build llvm for .wasm bin
result
Add build script for llvm for .wasm compilation result. Note the
compiled wasm32 .a archive file must be manually migrated to the sysroot
under /build
Modify llvm-project source code needed for compilation. Not tracked in
git but documented and Ren will submit another PR for the documentation
Add cosmetic for .md rendering
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.

We need to discuss how we want to standardize cpp testing.

  • I'm thinking to have a separate folder under tests/ called tests/cpp/ for all cpp unit test
  • cpp compilation scripts can be put under scripts/cpp and put lind_compile into scripts/c, rust version into scripts/rust (or sth similar)

Comment thread scripts/lind_compile
Comment thread scripts/lind_compile Outdated
Comment thread scripts/lind_compile Outdated
@rennergade
Copy link
Copy Markdown
Contributor

I think we need to move most of this to the lind-wasm-apps repo.

We should add the integrations to compile cpp into the lind_compile script however. It should just check that libcpp is properly installed and fail gracefully with "libcpp not installed" error if not.

@123R3N321
Copy link
Copy Markdown
Author

@m-hemmings regarding the CI problem:

Nick has brought to my attention that the current workaround for libcpp header involves this workflow: git clone llvm-18 ->modification of llvm source code -> compile archive files -> copy over to /build/sysroot -> sysroot provides dependency for clang++ to compile cpp source code.

This is problematic. On the one hand, llvm is big and preserving their source code in our repo is confusing; on the other hand, as Alice points out:

Source code and scripts in separate repos will make things hard to understand. We can use prebuilt libcpp.a for ci

However, this implies that, should there be any upgrade of llvm to version beyond 18, we will need to re-create this entire workflow to compile an updated version of the .a archive(s) needed for libcpp header support. I will do my best to document this workflow and, for future improvements, automate the process as far as I can

Nick also points out that we are using llvm-16 in lind-wasm-apps repo, see commit 0e78686; while my PR for lind-wasm repo is now using llvm-18, this is consistent with the docker config in this repo.

@tashabits
Copy link
Copy Markdown
Member

@m-hemmings regarding the CI problem:

Nick has brought to my attention that the current workaround for libcpp header involves this workflow: git clone llvm-18 ->modification of llvm source code -> compile archive files -> copy over to /build/sysroot -> sysroot provides dependency for clang++ to compile cpp source code.

This is problematic. On the one hand, llvm is big and preserving their source code in our repo is confusing; on the other hand, as Alice points out:

Source code and scripts in separate repos will make things hard to understand. We can use prebuilt libcpp.a for ci

However, this implies that, should there be any upgrade of llvm to version beyond 18, we will need to re-create this entire workflow to compile an updated version of the .a archive(s) needed for libcpp header support. I will do my best to document this workflow and, for future improvements, automate the process as far as I can

Nick also points out that we are using llvm-16 in lind-wasm-apps repo, see commit 0e78686; while my PR for lind-wasm repo is now using llvm-18, this is consistent with the docker config in this repo.

Thanks for writing this up. I agree that the current approach puts us in an awkward spot: keeping LLVM source in the repo is heavy and confusing, but moving all of the logic somewhere else also makes the workflow harder to understand and maintain.

I think there is a cleaner middle ground. Instead of treating libc++ support as something we rebuild from LLVM source during normal CI, we could treat it as a versioned toolchain artifact.

Concretely, I would suggest:

  • Keep one documented build script in this repo that knows how to produce the exact libc++ headers and archive files we need for a given LLVM version.
  • Run that script only when we intentionally upgrade LLVM or change the libc++ workflow.
  • Publish the result as a named artifact, for example an LLVM-versioned sysroot overlay or tarball.
  • Have CI download and unpack that artifact instead of cloning and rebuilding LLVM as part of ordinary PR validation.
  • Add one small smoke test in CI that compiles a trivial .cc file with clang++ so we catch regressions immediately.

That gives us a few benefits:

  • The normal CI path stays much smaller and easier to reason about.
  • We keep the process reproducible because the generation script still lives here.
  • We avoid preserving a large LLVM source tree in the repo.
  • Future LLVM upgrades become an intentional refresh of a pinned artifact.

On the versioning point, I do think it would help to align on a single LLVM major version across repos if we can. This repo is already pinned to LLVM 18 in Docker, so moving lind-wasm-apps to the same version would make the overall story much easier to follow.

So in short, my suggestion would be:

  1. Keep the build recipe in-repo.
  2. Stop keeping LLVM source in-repo for day to day CI.
  3. Publish a prebuilt, versioned libc++ support artifact for CI consumption.
  4. Add a simple C++ compile smoke test so the setup stays honest.

What does everyone think about that?

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 1, 2026

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 Successes196
Number of Failures1
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 Failure1
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.046448s4.309161s
Success
chdir_getcwd.cSuccessNone0.046239s4.283616s
Success
chmod.cSuccessNone0.054089s4.276556s
Success
clock_gettime_highlevel.cSuccessNone0.117408s4.491615s
Success
clock_gettime_simple.cSuccessNone0.041095s4.281810s
Success
cloexec.cSuccessNone0.050209s3.973808s
Success
close.cSuccessNone0.056561s4.319087s
Success
creat_access.cSuccessNone0.050077s4.333374s
Success
doubleclose.cSuccessNone0.042375s3.859863s
Success
dup.cSuccessNone0.043365s4.256929s
Success
dup2.cSuccessNone0.047569s3.927522s
Success
dup3.cSuccessNone0.045562s4.315696s
Success
dupwrite.cSuccessNone0.049809s3.902471s
Success
etc_conf.cSuccessNone0.044033s4.261110s
Success
fchdir.cSuccessNone0.053133s4.332830s
Success
fchmod.cSuccessNone0.051173s4.306699s
Success
fcntl.cSuccessNone0.049868s4.326998s
Success
fdatasync.cSuccessNone0.049217s4.281636s
Success
filetest.cSuccessNone0.049560s3.936932s
Success
filetest1000.cSuccessNone0.056437s3.922592s
Success
flock.cSuccessNone0.057453s4.414321s
Success
fstat.cSuccessNone0.051614s4.304155s
Success
fstatfs.cSuccessNone0.043487s4.270895s
Success
fsync.cSuccessNone0.048594s4.317850s
Success
ftruncate.cSuccessNone0.052904s4.349100s
Success
getcwd.cSuccessNone0.045861s4.351219s
Success
getrandom.cSuccessNone0.049560s4.331193s
Success
ioctl.cSuccessNone0.052800s4.261081s
Success
link.cSuccessNone0.052987s4.305552s
Success
locale_test.cSuccessNone0.062765s6.112623s
Success
lseek.cSuccessNone0.054933s4.373457s
Success
mkdir_rmdir.cSuccessNone0.049661s4.308963s
Success
mkfifo_test.cSuccessNone0.055724s4.416766s
Success
mknod.cSuccessNone0.047699s4.296652s
Success
nocancel_io.cSuccessNone0.052029s5.443273s
Success
open.cSuccessNone0.043857s4.275103s
Success
openat.cSuccessNone0.044697s4.282567s
Success
path_conversion_safety.cSuccessNone0.052757s4.306743s
Success
pread_pwrite.cSuccessNone0.046227s4.283899s
Success
printf.cSuccessNone0.040458s3.894875s
Success
prlimit64.cSuccessNone0.043470s3.891523s
Success
read.cSuccessNone0.050852s4.302704s
Success
readbytes.cSuccessNone0.046197s3.910806s
Success
readlink.cSuccessNone0.049308s4.283324s
Success
readlinkat.cSuccessNone0.050782s4.346479s
Success
readv_writev_test.cSuccessNone0.050999s4.290193s
Success
rename.cSuccessNone0.051756s4.316608s
Success
sc-writev.cSuccessNone0.050147s4.326982s
Success
stat.cSuccessNone0.049762s4.283237s
Success
statfs.cSuccessNone0.044610s4.306482s
Success
sync_file_range.cSuccessNone0.047826s4.322837s
Success
timespec_time_t_compat.cSuccessNone0.045913s5.525005s
Success
truncate.cSuccessNone0.050694s4.340341s
Success
unlink.cSuccessNone0.052751s4.340594s
Success
unlinkat.cSuccessNone0.052714s4.337253s
Success
write.cSuccessNone0.043076s3.883805s
Success
writeloop.cSuccessNone0.051702s3.873747s
Success
writepartial.cSuccessNone0.050236s3.883551s
Success
writev.cSuccessNone0.050713s4.301664s
Success
Math Tests
math_link_smoke.cSuccessNone0.053328s3.928093s
Success
math_tests.cSuccessNone0.056032s4.071071s
Success
Memory Tests
brk.cSuccessNone0.046830s4.282116s
Success
fork_large_memory.cSuccessNone0.078545s4.484730s
Success
malloc.cSuccessNone0.045014s3.884265s
Success
malloc_large.cSuccessNone0.045677s4.278723s
Success
memcpy.cSuccessNone0.044585s3.864130s
Success
memory_error_test.cSuccessNone0.050988s4.309940s
Success
mmap.cSuccessNone0.041490s4.300743s
Success
mmap_aligned.cSuccessNone0.043430s4.274253s
Success
mmap_complicated.cSuccessNone0.048519s4.323577s
Success
mmap_file.cSuccessNone0.050873s4.308581s
Success
mmap_shared.cSuccessNone0.048760s4.308491s
Success
mmaptest.cSuccessNone0.044317s4.269434s
Success
mprotect.cSuccessNone0.043590s4.287085s
Success
mprotect_boundary.cSuccessNone0.043319s4.292127s
Success
mprotect_end_region.cSuccessNone0.042145s4.278203s
Success
mprotect_middle_region.cSuccessNone0.042728s4.309800s
Success
mprotect_multiple_times.cSuccessNone0.043772s4.268611s
Success
mprotect_same_value.cSuccessNone0.043990s4.240596s
Success
mprotect_spanning_regions.cSuccessNone0.044491s4.260593s
Success
sbrk.cSuccessNone0.044447s4.256638s
Success
segfault.cSuccessNone0.050546s4.319283s
Success
shm.cSuccessNone0.049476s4.347083s
Success
shmtest.cSuccessNone0.044001s4.332246s
Success
tcache_test.cFailureUnknown_Failure0.052725s4.466430s
tcache reuse: yes
failed to run main module

Caused by:
0: failed to invoke command default
1: memory fault at wasm address 0xfff9bda8 in linear memory of size 0x100000000
2: wasm trap: out of bounds memory access

thread_malloc_sequential.cSuccessNone0.052861s4.457878s
Success
vtable.cSuccessNone0.055313s3.935089s
Success
Networking Tests
accept4.cSuccessNone0.053935s4.359320s
Success
dns_resolve_test.cSuccessNone0.049742s5.964857s
Success
dnstest.cSuccessNone0.049992s4.312908s
Success
epoll_edge_triggered.cSuccessNone0.209274s4.577059s
Success
epollcreate1.cSuccessNone0.055592s4.326784s
Success
error_handling_net.cSuccessNone0.058653s4.380693s
Success
getaddrinfo_test.cSuccessNone0.054394s6.060535s
Success
getaddrinfo_unspec.cSuccessNone0.049977s6.040521s
Success
gethostname.cSuccessNone0.043097s3.891416s
Success
getifaddrs.cSuccessNone0.051177s4.400824s
Success
getsockname.cSuccessNone0.052946s4.351305s
Success
getsockopt.cSuccessNone0.054791s4.357736s
Success
ipv6_basic.cSuccessNone0.055105s4.356140s
Success
makepipe.cSuccessNone0.043931s3.946674s
Success
nonblocking_eagain.cSuccessNone0.054559s4.352020s
Success
pipe.cSuccessNone0.052111s4.336312s
Success
pipe2.cSuccessNone0.051949s4.312668s
Success
pipeinput.cSuccessNone0.055441s4.439960s
Success
pipeinput2.cSuccessNone0.053475s4.319274s
Success
pipeonestring.cSuccessNone0.052937s4.338745s
Success
pipepong.cSuccessNone0.051742s4.381992s
Success
pipewrite.cSuccessNone0.046120s4.271380s
Success
poll.cSuccessNone0.051110s4.325688s
Success
recvfrom-sendto.cSuccessNone0.052680s4.304122s
Success
sendmsg_recvmsg_test.cSuccessNone0.050984s4.344132s
Success
serverclient.cSuccessNone0.054315s4.005061s
Success
shutdown.cSuccessNone0.053005s3.913264s
Success
shutdown_fork.cSuccessNone0.051060s4.338871s
Success
simple-select.cSuccessNone0.052036s4.328909s
Success
simple_epoll.cSuccessNone0.049966s4.296202s
Success
socket.cSuccessNone0.049723s3.917513s
Success
socket_cloexec.cSuccessNone0.050177s4.297037s
Success
socket_options_advanced.cSuccessNone0.057591s4.388560s
Success
socketepoll.cSuccessNone0.049695s3.928880s
Success
socketpair.cSuccessNone0.050991s4.361787s
Success
socketselect.cSuccessNone0.051024s4.357766s
Success
udp_send_recv.cSuccessNone0.160131s4.471403s
Success
uds-getsockname.cSuccessNone0.050511s4.288205s
Success
uds-nb-select.cSuccessNone2.060796s6.524850s
Success
uds-serverclient.cSuccessNone0.054270s4.371897s
Success
uds-socketselect.cSuccessNone0.051103s3.944687s
Success
writev_socket.cSuccessNone0.057820s4.438432s
Success
Process Tests
barrier_test.cSuccessNone0.049210s4.470897s
Success
chain_thread.cSuccessNone1.050583s5.472855s
Success
ctor_syscall_test.cSuccessNone0.041186s4.327230s
Success
cxa_atexit_test.cSuccessNone0.046725s3.914612s
Success
execve_shebang.cSuccessNone0.049956s4.312926s
Success
exit.cSuccessNone0.047367s3.896327s
Success
exit_failure.cSuccessNone0.049519s3.953208s
Success
exit_group_thread.cSuccessNone0.052246s4.495117s
Success
flockfile_test.cSuccessNone0.049948s4.473778s
Success
fork2malloc.cSuccessNone0.052462s4.331865s
Success
fork_select.cSuccessNone0.049244s4.355163s
Success
fork_simple.cSuccessNone0.047961s4.322145s
Success
fork_syscall.cSuccessNone0.054101s4.405815s
Success
fork_tls_ctype.cSuccessNone0.054529s4.402528s
Success
forkandopen.cSuccessNone0.052115s4.352971s
Success
forkdup.cSuccessNone0.052192s3.965308s
Success
forkexecuid.cSuccessNone0.048065s4.428195s
Success
forkexecv-arg.cSuccessNone0.048243s4.419416s
Success
forkexecv.cSuccessNone0.046991s4.415398s
Success
forkfiles.cSuccessNone0.050543s4.381810s
Success
forkmalloc.cSuccessNone0.051042s4.327020s
Success
forknodup.cSuccessNone0.052471s4.328478s
Success
function-ptr.cSuccessNone0.044566s4.256821s
Success
getegid_syscall.cSuccessNone0.050079s4.365122s
Success
getgid_syscall.cSuccessNone0.052028s4.402643s
Success
getpid.cSuccessNone0.044133s4.284045s
Success
getpid_syscall.cSuccessNone0.052513s4.388864s
Success
getppid.cSuccessNone0.051535s4.358463s
Success
getppid_syscall.cSuccessNone0.054100s4.390808s
Success
getuid.cSuccessNone0.050576s4.294851s
Success
getuid_syscall.cSuccessNone0.049752s4.323311s
Success
hello-arg.cSuccessNone0.042527s3.894170s
Success
hello.cSuccessNone0.042087s3.894619s
Success
longjmp.cSuccessNone0.041979s3.932125s
Success
mutex.cSuccessNone2.053795s6.582238s
Success
printf_deadlock_smoke.cSuccessNone0.059789s4.644165s
Success
printf_thread_test.cSuccessNone0.048633s4.486114s
Success
sem_forks.cSuccessNone0.054148s4.385376s
Success
setsid.cSuccessNone0.044647s3.953425s
Success
template.cSuccessNone0.050706s4.371821s
Success
test_exec_nofork.cSuccessNone0.049205s4.363007s
Success
test_unlink_open_file.cSuccessNone0.045268s3.894472s
Success
thread-test.cSuccessNone0.044493s4.430691s
Success
thread.cSuccessNone0.045167s4.418401s
Success
thread_cageid_race.cSuccessNone0.045720s4.414930s
Success
tls_test.cSuccessNone0.047693s4.458853s
Success
uname.cSuccessNone0.043887s4.308328s
Success
wait.cSuccessNone2.047653s5.969147s
Success
waitpid_anychild.cSuccessNone0.050325s4.350737s
Success
waitpid_syscall.cSuccessNone1.049917s5.378961s
Success
waitpid_wnohang.cSuccessNone0.051360s3.973659s
Success
Signal Tests
alarm.cSuccessNone7.048920s10.958216s
Success
eintr_fork_signal.cSuccessNone1.052124s5.327883s
Success
kill.cSuccessNone1.061291s5.366428s
Success
setitimer.cSuccessNone7.049217s10.963683s
Success
sigalrm.cSuccessNone2.052481s5.960112s
Success
sigchld.cSuccessNone1.052167s4.978745s
Success
signal-fork.cSuccessNone4.053632s7.977422s
Success
signal-simple.cSuccessNone0.054332s3.950884s
Success
signal_SIGCHLD.cSuccessNone0.049154s4.322231s
Success
signal_fork.cSuccessNone0.046199s4.351418s
Success
signal_int_ignored.cSuccessNone2.050213s6.368581s
Success
signal_kill_cleanup.cSuccessNone1.047599s5.331682s
Success
signal_procmask.cSuccessNone0.046081s4.314881s
Success
signal_recursive.cSuccessNone0.044433s3.881102s
Success
signal_sa_mask.cSuccessNone0.054040s3.949470s
Success
sigpipe.cSuccessNone1.051398s5.408193s
Success
sigprocmask.cSuccessNone1.049283s4.913198s
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.107810s4.646358s
Success
mmap-negative2.cSuccessNone0.134803s4.487298s
Success
Signal Tests
signal_resethand.cSuccessNone1.049238s4.994428s
Success

Add libcpp-test and libcpp-out stages.
Increase verbose printf for debugging.
Add /artifact directory verification.
Adjust script calling relative path.
Add tools to dependency path.
Add verbosity in compile step.
Adjust read-only mount to writable.
@github-actions
Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

Unified Test Report

grate harness

MetricValue
Total11
Success11
Failures0
Compile Failures0
Runtime Failures0
Timeout Failures0
Missing Pair Failures0

Cases

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

STDERR:

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

STDERR:

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

[Grate|interpose-exit] PASS

STDERR:

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

STDERR:

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

STDERR:

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

STDERR:

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

STDERR:

race-test_grate.cSuccess
STDOUT:
pass

STDERR:

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

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 2 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 3 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:

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

STDERR:

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.059251s4.399267s
Success
thread.cSuccessNone0.051208s4.458910s
Success
tls_test.cSuccessNone0.070197s4.513528s
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.052080s0.202816s
Success
chdir_getcwd.cSuccessNone0.051794s0.158517s
Success
chmod.cSuccessNone0.057249s0.175932s
Success
clock_gettime_highlevel.cSuccessNone0.122715s0.356564s
Success
clock_gettime_simple.cSuccessNone0.046544s0.143969s
Success
cloexec.cSuccessNone0.055487s0.237805s
Success
close.cSuccessNone0.062941s0.185738s
Success
creat_access.cSuccessNone0.055965s0.160822s
Success
doubleclose.cSuccessNone0.049556s0.147389s
Success
dup.cSuccessNone0.048018s0.157134s
Success
dup2.cSuccessNone0.057041s0.165666s
Success
dup3.cSuccessNone0.050874s0.156881s
Success
dupwrite.cSuccessNone0.054062s0.154312s
Success
etc_conf.cSuccessNone0.048895s0.157950s
Success
fchdir.cSuccessNone0.058664s0.179380s
Success
fchmod.cSuccessNone0.055602s0.167702s
Success
fcntl.cSuccessNone0.055164s0.164375s
Success
fdatasync.cSuccessNone0.055438s0.161448s
Success
filetest.cSuccessNone0.055197s0.164563s
Success
filetest1000.cSuccessNone0.063318s0.166792s
Success
flock.cSuccessNone0.062015s0.200542s
Success
fstat.cSuccessNone0.055122s0.165326s
Success
fstatfs.cSuccessNone0.051611s0.155722s
Success
fsync.cSuccessNone0.054118s0.151028s
Success
ftruncate.cSuccessNone0.056937s0.281110s
Success
getcwd.cSuccessNone0.054317s0.156500s
Success
getpgid.cSuccessNone0.050646s0.150303s
Success
getrandom.cSuccessNone0.053566s0.156081s
Success
ioctl.cSuccessNone0.055643s0.157728s
Success
link.cSuccessNone0.059675s0.230977s
Success
locale_test.cSuccessNone0.069405s0.716932s
Success
lseek.cSuccessNone0.057426s0.285340s
Success
lstat.cSuccessNone0.058191s0.183529s
Success
mkdir_rmdir.cSuccessNone0.057386s0.169483s
Success
mkfifo_test.cSuccessNone0.061693s0.216182s
Success
mknod.cSuccessNone0.056310s0.177551s
Success
nocancel_io.cSuccessNone0.056539s0.191456s
Success
open.cSuccessNone0.049483s0.143271s
Success
openat.cSuccessNone0.049265s0.147649s
Success
path_conversion_safety.cSuccessNone0.057967s0.190997s
Success
ppoll.cSuccessNone0.060957s0.181616s
Success
pread_pwrite.cSuccessNone0.053737s0.167950s
Success
preadv_pwritev.cSuccessNone0.059056s0.183722s
Success
printf.cSuccessNone0.050159s0.152777s
Success
prlimit64.cSuccessNone0.048070s0.144452s
Success
read.cSuccessNone0.055794s0.164068s
Success
readbytes.cSuccessNone0.053632s0.152592s
Success
readdir_basic.cSuccessNone0.060044s0.193429s
Success
readlink.cSuccessNone0.056451s0.168536s
Success
readlinkat.cSuccessNone0.057205s0.163498s
Success
readv_writev_test.cSuccessNone0.057802s0.182112s
Success
rename.cSuccessNone0.056190s0.154616s
Success
sc-writev.cSuccessNone0.052488s0.156053s
Success
stat.cSuccessNone0.054902s0.160722s
Success
statfs.cSuccessNone0.050273s0.148979s
Success
symlink.cSuccessNone0.058587s0.207393s
Success
sync_file_range.cSuccessNone0.051978s0.153998s
Success
timespec_time_t_compat.cSuccessNone0.053833s0.154328s
Success
truncate.cSuccessNone0.057211s0.182641s
Success
unlink.cSuccessNone0.056642s0.205500s
Success
unlinkat.cSuccessNone0.055039s0.175459s
Success
write.cSuccessNone0.047689s0.137513s
Success
writeloop.cSuccessNone0.058609s0.155387s
Success
writepartial.cSuccessNone0.054823s0.148141s
Success
writev.cSuccessNone0.054845s0.165623s
Success
Math Tests
math_link_smoke.cSuccessNone0.059172s0.149617s
Success
math_tests.cSuccessNone0.063706s0.182006s
Success
Memory Tests
brk.cSuccessNone0.052139s0.147703s
Success
fork_large_memory.cSuccessNone0.089683s0.435607s
Success
malloc.cSuccessNone0.049785s0.138200s
Success
malloc_large.cSuccessNone0.050861s0.145976s
Success
memcpy.cSuccessNone0.049941s0.141889s
Success
memory_error_test.cSuccessNone0.056741s0.187048s
Success
mmap.cSuccessNone0.047260s0.149319s
Success
mmap_aligned.cSuccessNone0.048995s0.158733s
Success
mmap_complicated.cSuccessNone0.054180s0.165038s
Success
mmap_file.cSuccessNone0.054023s0.156584s
Success
mmap_shared.cSuccessNone0.054588s0.166083s
Success
mmaptest.cSuccessNone0.052686s0.159546s
Success
mprotect.cSuccessNone0.048412s0.147505s
Success
mprotect_boundary.cSuccessNone0.051159s0.172363s
Success
mprotect_end_region.cSuccessNone0.049456s0.161666s
Success
mprotect_middle_region.cSuccessNone0.051023s0.165694s
Success
mprotect_multiple_times.cSuccessNone0.048428s0.154377s
Success
mprotect_same_value.cSuccessNone0.047952s0.149412s
Success
mprotect_spanning_regions.cSuccessNone0.049262s0.168981s
Success
munmap_adjacent_shm.cSuccessNone0.050581s0.162228s
Success
sbrk.cSuccessNone0.052746s0.152620s
Success
segfault.cSuccessNone0.055806s0.182142s
Success
shm.cSuccessNone0.054971s0.170116s
Success
shmtest.cSuccessNone0.049316s0.150404s
Success
thread_malloc_sequential.cSuccessNone0.057798s0.187767s
Success
vtable.cSuccessNone0.061806s0.174216s
Success
Networking Tests
accept4.cSuccessNone0.060013s0.179613s
Success
dns_resolve_test.cSuccessNone0.054675s0.157903s
Success
dnstest.cSuccessNone0.055824s0.170831s
Success
epoll_edge_triggered.cSuccessNone0.212002s0.513279s
Success
epollcreate1.cSuccessNone0.057314s0.169352s
Success
error_handling_net.cSuccessNone0.062264s0.286552s
Success
getaddrinfo_test.cSuccessNone0.058766s0.208576s
Success
getaddrinfo_unspec.cSuccessNone0.067443s0.213402s
Success
gethostname.cSuccessNone0.050257s0.141791s
Success
getifaddrs.cSuccessNone0.056358s0.161353s
Success
getsockname.cSuccessNone0.059448s0.161291s
Success
getsockopt.cSuccessNone0.060210s0.217491s
Success
ipv6_basic.cSuccessNone0.058705s0.214661s
Success
makepipe.cSuccessNone0.050109s0.142084s
Success
nonblocking_eagain.cSuccessNone0.060101s0.229546s
Success
pipe.cSuccessNone0.056983s0.169773s
Success
pipe2.cSuccessNone0.056280s0.161111s
Success
pipeinput.cSuccessNone0.058578s0.186445s
Success
pipeinput2.cSuccessNone0.058945s0.187509s
Success
pipeonestring.cSuccessNone0.059425s0.187018s
Success
pipepong.cSuccessNone0.059051s0.191050s
Success
pipewrite.cSuccessNone0.051778s0.157981s
Success
poll.cSuccessNone0.055435s0.154065s
Success
recvfrom-sendto.cSuccessNone0.056522s0.173567s
Success
sendmsg_recvmsg_test.cSuccessNone0.056046s0.171801s
Success
serverclient.cSuccessNone0.056176s0.163271s
Success
shutdown.cSuccessNone0.057797s0.166529s
Success
shutdown_fork.cSuccessNone0.056176s0.174243s
Success
simple-select.cSuccessNone0.056830s0.184747s
Success
simple_epoll.cSuccessNone0.058840s0.179423s
Success
socket.cSuccessNone0.054910s0.155676s
Success
socket_cloexec.cSuccessNone0.055119s0.154258s
Success
socket_options_advanced.cSuccessNone0.069436s0.243316s
Success
socketepoll.cSuccessNone0.054497s0.157980s
Success
socketpair.cSuccessNone0.054702s0.165440s
Success
socketselect.cSuccessNone0.054134s0.185564s
Success
udp_send_recv.cSuccessNone0.163544s0.342102s
Success
uds-getsockname.cSuccessNone0.055334s0.158736s
Success
uds-nb-select.cSuccessNone2.063892s2.243358s
Success
uds-serverclient.cSuccessNone0.059521s0.201444s
Success
uds-socketselect.cSuccessNone0.056269s0.162536s
Success
writev_socket.cSuccessNone0.059032s0.204654s
Success
Process Tests
barrier_test.cSuccessNone0.053515s0.163303s
Success
chain_thread.cSuccessNone1.057721s1.168109s
Success
ctor_syscall_test.cSuccessNone0.049101s0.149895s
Success
cxa_atexit_test.cSuccessNone0.050743s0.141759s
Success
execve_shebang.cSuccessNone0.057484s0.164889s
Success
exit.cSuccessNone0.051536s0.139485s
Success
exit_failure.cSuccessNone0.055960s0.160993s
Success
exit_group_thread.cSuccessNone0.058600s0.177158s
Success
flockfile_test.cSuccessNone0.054273s0.176961s
Success
fork2malloc.cSuccessNone0.055599s0.158480s
Success
fork_select.cSuccessNone0.056915s0.179985s
Success
fork_simple.cSuccessNone0.052883s0.152165s
Success
fork_syscall.cSuccessNone0.058568s0.315257s
Success
fork_tls_ctype.cSuccessNone0.056566s0.182992s
Success
forkandopen.cSuccessNone0.056821s0.191083s
Success
forkdup.cSuccessNone0.058535s0.168687s
Success
forkexecuid.cSuccessNone0.056772s0.239975s
Success
forkexecv-arg.cSuccessNone0.052930s0.218559s
Success
forkexecv.cSuccessNone0.055037s0.222989s
Success
forkfiles.cSuccessNone0.057284s0.181424s
Success
forkmalloc.cSuccessNone0.059245s0.157266s
Success
forknodup.cSuccessNone0.058039s0.185758s
Success
function-ptr.cSuccessNone0.050448s0.143115s
Success
getegid_syscall.cSuccessNone0.054502s0.272148s
Success
getgid_syscall.cSuccessNone0.055573s0.272955s
Success
getpid.cSuccessNone0.048773s0.138739s
Success
getpid_syscall.cSuccessNone0.057975s0.290152s
Success
getppid.cSuccessNone0.057438s0.173538s
Success
getppid_syscall.cSuccessNone0.057662s0.246598s
Success
getuid.cSuccessNone0.056941s0.152497s
Success
getuid_syscall.cSuccessNone0.054961s0.207803s
Success
hello-arg.cSuccessNone0.046004s0.139467s
Success
hello.cSuccessNone0.046455s0.134233s
Success
longjmp.cSuccessNone0.050423s0.151539s
Success
mutex.cSuccessNone2.059817s2.174467s
Success
printf_deadlock_smoke.cSuccessNone0.062318s0.204811s
Success
printf_thread_test.cSuccessNone0.052735s0.170010s
Success
sem_forks.cSuccessNone0.057056s0.172849s
Success
setsid.cSuccessNone0.050049s0.150567s
Success
template.cSuccessNone0.056975s0.184018s
Success
test_exec_nofork.cSuccessNone0.055795s0.219201s
Success
test_unlink_open_file.cSuccessNone0.052539s0.151743s
Success
thread-guard.cSuccessNone0.052490s0.161024s
Success
thread-test.cSuccessNone0.052271s0.158009s
Success
thread.cSuccessNone0.051862s0.157943s
Success
thread_cageid_race.cSuccessNone0.050680s0.181862s
Success
tls_test.cSuccessNone0.054916s0.160743s
Success
uname.cSuccessNone0.048320s0.139567s
Success
wait.cSuccessNone2.052973s2.165146s
Success
waitpid_anychild.cSuccessNone0.053791s0.156380s
Success
waitpid_syscall.cSuccessNone1.055406s1.203947s
Success
waitpid_wnohang.cSuccessNone0.055572s0.156300s
Success
Signal Tests
alarm.cSuccessNone7.055100s7.184848s
Success
eintr_fork_signal.cSuccessNone1.056900s1.183033s
Success
kill.cSuccessNone1.056163s1.166225s
Success
setitimer.cSuccessNone7.054426s7.192412s
Success
sigalrm.cSuccessNone2.055301s2.173792s
Success
sigaltstack.cSuccessNone0.058963s0.176473s
Success
sigchld.cSuccessNone1.057356s1.167120s
Success
signal-fork.cSuccessNone4.057867s4.170389s
Success
signal-simple.cSuccessNone0.055803s0.156357s
Success
signal_SIGCHLD.cSuccessNone0.054133s0.168394s
Success
signal_fork.cSuccessNone0.052881s0.178359s
Success
signal_int_ignored.cSuccessNone2.057012s2.173993s
Success
signal_kill_cleanup.cSuccessNone1.054399s1.172779s
Success
signal_procmask.cSuccessNone0.053716s0.167691s
Success
signal_read_interrupt.cSuccessNone0.558479s0.687149s
Success
signal_recursive.cSuccessNone0.052598s0.168740s
Success
signal_sa_mask.cSuccessNone0.050810s0.153379s
Success
signal_select_interrupt.cSuccessNone0.559677s0.682923s
Success
signal_write_interrupt.cSuccessNone1.057444s1.180496s
Success
sigpipe.cSuccessNone1.057550s1.186091s
Success
sigprocmask.cSuccessNone1.055691s1.172327s
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.047194s0.138721s
Success
Memory Tests
mmap-negative1.cSuccessNone0.117913s0.143686s
Success
mmap-negative2.cSuccessNone0.121029s0.195937s
Success
Signal Tests
signal_resethand.cSuccessNone1.057141s1.168191s
Success

Adjust to "read except specified" from "write except specified".
@github-actions
Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

Unified Test Report

grate harness

MetricValue
Total11
Success11
Failures0
Compile Failures0
Runtime Failures0
Timeout Failures0
Missing Pair Failures0

Cases

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

STDERR:

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

STDERR:

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

[Grate|interpose-exit] PASS

STDERR:

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

STDERR:

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

STDERR:

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

STDERR:

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

STDERR:

race-test_grate.cSuccess
STDOUT:
pass

STDERR:

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

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 2 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 3 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:

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

STDERR:

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.054163s4.343458s
Success
thread.cSuccessNone0.045451s4.419126s
Success
tls_test.cSuccessNone0.181094s4.521213s
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.046134s0.185267s
Success
chdir_getcwd.cSuccessNone0.046171s0.141489s
Success
chmod.cSuccessNone0.051780s0.153346s
Success
clock_gettime_highlevel.cSuccessNone0.116554s0.319308s
Success
clock_gettime_simple.cSuccessNone0.040580s0.127379s
Success
cloexec.cSuccessNone0.051126s0.213068s
Success
close.cSuccessNone0.057720s0.172679s
Success
creat_access.cSuccessNone0.049682s0.143314s
Success
doubleclose.cSuccessNone0.042240s0.122990s
Success
dup.cSuccessNone0.043507s0.145222s
Success
dup2.cSuccessNone0.047640s0.142070s
Success
dup3.cSuccessNone0.046164s0.146359s
Success
dupwrite.cSuccessNone0.048921s0.137466s
Success
etc_conf.cSuccessNone0.044205s0.146026s
Success
fchdir.cSuccessNone0.052405s0.155434s
Success
fchmod.cSuccessNone0.050484s0.151594s
Success
fcntl.cSuccessNone0.048831s0.147758s
Success
fdatasync.cSuccessNone0.049939s0.136167s
Success
filetest.cSuccessNone0.049237s0.136906s
Success
filetest1000.cSuccessNone0.056425s0.152100s
Success
flock.cSuccessNone0.058001s0.179737s
Success
fstat.cSuccessNone0.050692s0.152462s
Success
fstatfs.cSuccessNone0.043758s0.135016s
Success
fsync.cSuccessNone0.048333s0.134691s
Success
ftruncate.cSuccessNone0.053741s0.269074s
Success
getcwd.cSuccessNone0.045444s0.134871s
Success
getpgid.cSuccessNone0.043589s0.128140s
Success
getrandom.cSuccessNone0.048522s0.142417s
Success
ioctl.cSuccessNone0.051830s0.144470s
Success
link.cSuccessNone0.052570s0.202005s
Success
locale_test.cSuccessNone0.062985s0.636040s
Success
lseek.cSuccessNone0.053214s0.259130s
Success
lstat.cSuccessNone0.053555s0.167279s
Success
mkdir_rmdir.cSuccessNone0.050248s0.149472s
Success
mkfifo_test.cSuccessNone0.054890s0.191027s
Success
mknod.cSuccessNone0.047861s0.151293s
Success
nocancel_io.cSuccessNone0.052610s0.172996s
Success
open.cSuccessNone0.043737s0.128727s
Success
openat.cSuccessNone0.044489s0.137947s
Success
path_conversion_safety.cSuccessNone0.055737s0.180100s
Success
ppoll.cSuccessNone0.053629s0.157332s
Success
pread_pwrite.cSuccessNone0.047873s0.154198s
Success
preadv_pwritev.cSuccessNone0.052155s0.161234s
Success
printf.cSuccessNone0.042345s0.132636s
Success
prlimit64.cSuccessNone0.042548s0.129598s
Success
read.cSuccessNone0.050298s0.150263s
Success
readbytes.cSuccessNone0.045342s0.132630s
Success
readdir_basic.cSuccessNone0.053815s0.170546s
Success
readlink.cSuccessNone0.048856s0.144402s
Success
readlinkat.cSuccessNone0.051271s0.152014s
Success
readv_writev_test.cSuccessNone0.051141s0.155531s
Success
rename.cSuccessNone0.051523s0.142467s
Success
sc-writev.cSuccessNone0.047741s0.141473s
Success
stat.cSuccessNone0.050211s0.148913s
Success
statfs.cSuccessNone0.043331s0.134470s
Success
symlink.cSuccessNone0.052193s0.184066s
Success
sync_file_range.cSuccessNone0.048635s0.141086s
Success
timespec_time_t_compat.cSuccessNone0.046718s0.132687s
Success
truncate.cSuccessNone0.051010s0.160815s
Success
unlink.cSuccessNone0.052145s0.196814s
Success
unlinkat.cSuccessNone0.051795s0.164590s
Success
write.cSuccessNone0.042824s0.123528s
Success
writeloop.cSuccessNone0.052181s0.136409s
Success
writepartial.cSuccessNone0.049961s0.131985s
Success
writev.cSuccessNone0.050575s0.152832s
Success
Math Tests
math_link_smoke.cSuccessNone0.051866s0.132504s
Success
math_tests.cSuccessNone0.058461s0.167434s
Success
Memory Tests
brk.cSuccessNone0.047348s0.137062s
Success
fork_large_memory.cSuccessNone0.080434s0.385877s
Success
malloc.cSuccessNone0.045060s0.128852s
Success
malloc_large.cSuccessNone0.046620s0.138520s
Success
memcpy.cSuccessNone0.045941s0.130527s
Success
memory_error_test.cSuccessNone0.052039s0.172417s
Success
mmap.cSuccessNone0.041703s0.131122s
Success
mmap_aligned.cSuccessNone0.043820s0.149855s
Success
mmap_complicated.cSuccessNone0.049690s0.154252s
Success
mmap_file.cSuccessNone0.049225s0.145826s
Success
mmap_shared.cSuccessNone0.048738s0.146742s
Success
mmaptest.cSuccessNone0.044716s0.139044s
Success
mprotect.cSuccessNone0.043281s0.132221s
Success
mprotect_boundary.cSuccessNone0.043466s0.145010s
Success
mprotect_end_region.cSuccessNone0.043031s0.139254s
Success
mprotect_middle_region.cSuccessNone0.043398s0.143648s
Success
mprotect_multiple_times.cSuccessNone0.043048s0.142252s
Success
mprotect_same_value.cSuccessNone0.043142s0.139530s
Success
mprotect_spanning_regions.cSuccessNone0.046029s0.155726s
Success
munmap_adjacent_shm.cSuccessNone0.045477s0.152852s
Success
sbrk.cSuccessNone0.044829s0.130971s
Success
segfault.cSuccessNone0.053431s0.165120s
Success
shm.cSuccessNone0.049478s0.154400s
Success
shmtest.cSuccessNone0.044899s0.138390s
Success
thread_malloc_sequential.cSuccessNone0.051199s0.165763s
Success
vtable.cSuccessNone0.054825s0.151895s
Success
Networking Tests
accept4.cSuccessNone0.054787s0.163415s
Success
dns_resolve_test.cSuccessNone0.049087s0.140866s
Success
dnstest.cSuccessNone0.049332s0.149299s
Success
epoll_edge_triggered.cSuccessNone0.206811s0.493074s
Success
epollcreate1.cSuccessNone0.051153s0.151396s
Success
error_handling_net.cSuccessNone0.058176s0.267185s
Success
getaddrinfo_test.cSuccessNone0.053168s0.189088s
Success
getaddrinfo_unspec.cSuccessNone0.074378s0.181034s
Success
gethostname.cSuccessNone0.043903s0.125568s
Success
getifaddrs.cSuccessNone0.051913s0.147668s
Success
getsockname.cSuccessNone0.060257s0.151039s
Success
getsockopt.cSuccessNone0.053343s0.196937s
Success
ipv6_basic.cSuccessNone0.055287s0.197024s
Success
makepipe.cSuccessNone0.042548s0.123673s
Success
nonblocking_eagain.cSuccessNone0.054693s0.211218s
Success
pipe.cSuccessNone0.052701s0.156933s
Success
pipe2.cSuccessNone0.052129s0.144242s
Success
pipeinput.cSuccessNone0.052952s0.167914s
Success
pipeinput2.cSuccessNone0.053252s0.165524s
Success
pipeonestring.cSuccessNone0.053532s0.167735s
Success
pipepong.cSuccessNone0.055002s0.169894s
Success
pipewrite.cSuccessNone0.045865s0.143789s
Success
poll.cSuccessNone0.050374s0.137597s
Success
recvfrom-sendto.cSuccessNone0.051499s0.156507s
Success
sendmsg_recvmsg_test.cSuccessNone0.051312s0.153970s
Success
serverclient.cSuccessNone0.051444s0.147725s
Success
shutdown.cSuccessNone0.052989s0.148682s
Success
shutdown_fork.cSuccessNone0.052716s0.154612s
Success
simple-select.cSuccessNone0.052478s0.170072s
Success
simple_epoll.cSuccessNone0.050516s0.147456s
Success
socket.cSuccessNone0.048762s0.138378s
Success
socket_cloexec.cSuccessNone0.048811s0.137956s
Success
socket_options_advanced.cSuccessNone0.056798s0.218098s
Success
socketepoll.cSuccessNone0.049649s0.144251s
Success
socketpair.cSuccessNone0.049146s0.150779s
Success
socketselect.cSuccessNone0.049390s0.150348s
Success
udp_send_recv.cSuccessNone0.157557s0.312080s
Success
uds-getsockname.cSuccessNone0.050856s0.142621s
Success
uds-nb-select.cSuccessNone2.058344s2.215871s
Success
uds-serverclient.cSuccessNone0.055667s0.184500s
Success
uds-socketselect.cSuccessNone0.050869s0.145892s
Success
writev_socket.cSuccessNone0.053719s0.185428s
Success
Process Tests
barrier_test.cSuccessNone0.048765s0.147254s
Success
chain_thread.cSuccessNone1.051063s1.652656s
Success
ctor_syscall_test.cSuccessNone0.040401s0.126167s
Success
cxa_atexit_test.cSuccessNone0.045915s0.129749s
Success
execve_shebang.cSuccessNone0.050113s0.143427s
Success
exit.cSuccessNone0.047629s0.126942s
Success
exit_failure.cSuccessNone0.049211s0.138881s
Success
exit_group_thread.cSuccessNone0.051819s0.151382s
Success
flockfile_test.cSuccessNone0.049947s0.163648s
Success
fork2malloc.cSuccessNone0.051191s0.146025s
Success
fork_select.cSuccessNone0.049311s0.156905s
Success
fork_simple.cSuccessNone0.047778s0.138736s
Success
fork_syscall.cSuccessNone0.054850s0.293048s
Success
fork_tls_ctype.cSuccessNone0.052203s0.171725s
Success
forkandopen.cSuccessNone0.051194s0.166007s
Success
forkdup.cSuccessNone0.053911s0.157499s
Success
forkexecuid.cSuccessNone0.049125s0.213678s
Success
forkexecv-arg.cSuccessNone0.049422s0.197291s
Success
forkexecv.cSuccessNone0.046885s0.191663s
Success
forkfiles.cSuccessNone0.051391s0.160088s
Success
forkmalloc.cSuccessNone0.051146s0.143789s
Success
forknodup.cSuccessNone0.050800s0.157230s
Success
function-ptr.cSuccessNone0.045282s0.132358s
Success
getegid_syscall.cSuccessNone0.050781s0.254557s
Success
getgid_syscall.cSuccessNone0.051004s0.259091s
Success
getpid.cSuccessNone0.043344s0.125455s
Success
getpid_syscall.cSuccessNone0.052154s0.271923s
Success
getppid.cSuccessNone0.050475s0.146958s
Success
getppid_syscall.cSuccessNone0.053620s0.230370s
Success
getuid.cSuccessNone0.050091s0.138793s
Success
getuid_syscall.cSuccessNone0.049285s0.182938s
Success
hello-arg.cSuccessNone0.040654s0.127601s
Success
hello.cSuccessNone0.040890s0.121632s
Success
longjmp.cSuccessNone0.042321s0.129780s
Success
mutex.cSuccessNone2.053275s2.158304s
Success
printf_deadlock_smoke.cSuccessNone0.058437s0.190446s
Success
printf_thread_test.cSuccessNone0.048300s0.154650s
Success
sem_forks.cSuccessNone0.053491s0.158829s
Success
setsid.cSuccessNone0.042935s0.126042s
Success
template.cSuccessNone0.049931s0.158590s
Success
test_exec_nofork.cSuccessNone0.048895s0.192818s
Success
test_unlink_open_file.cSuccessNone0.046899s0.126762s
Success
thread-guard.cSuccessNone0.048117s0.150757s
Success
thread-test.cSuccessNone0.044803s0.134597s
Success
thread.cSuccessNone0.044723s0.132800s
Success
thread_cageid_race.cSuccessNone0.046097s0.168108s
Success
tls_test.cSuccessNone0.050770s0.145436s
Success
uname.cSuccessNone0.043243s0.125466s
Success
wait.cSuccessNone2.047177s2.146374s
Success
waitpid_anychild.cSuccessNone0.049778s0.148240s
Success
waitpid_syscall.cSuccessNone1.050366s1.179020s
Success
waitpid_wnohang.cSuccessNone0.050223s0.142765s
Success
Signal Tests
alarm.cSuccessNone7.049814s7.165525s
Success
eintr_fork_signal.cSuccessNone1.052150s1.164988s
Success
kill.cSuccessNone1.049415s1.149115s
Success
setitimer.cSuccessNone7.049989s7.177787s
Success
sigalrm.cSuccessNone2.050187s2.157705s
Success
sigaltstack.cSuccessNone0.051878s0.152435s
Success
sigchld.cSuccessNone1.053006s1.148740s
Success
signal-fork.cSuccessNone4.052046s4.153082s
Success
signal-simple.cSuccessNone0.050847s0.142813s
Success
signal_SIGCHLD.cSuccessNone0.048734s0.147656s
Success
signal_fork.cSuccessNone0.046501s0.154995s
Success
signal_int_ignored.cSuccessNone2.050541s2.152092s
Success
signal_kill_cleanup.cSuccessNone1.048300s1.144761s
Success
signal_procmask.cSuccessNone0.045201s0.141927s
Success
signal_read_interrupt.cSuccessNone0.554320s0.664449s
Success
signal_recursive.cSuccessNone0.044667s0.143800s
Success
signal_sa_mask.cSuccessNone0.044874s0.134724s
Success
signal_select_interrupt.cSuccessNone0.554323s0.666931s
Success
signal_write_interrupt.cSuccessNone1.052867s1.163413s
Success
sigpipe.cSuccessNone1.052698s1.169914s
Success
sigprocmask.cSuccessNone1.049089s1.151628s
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.041977s0.130237s
Success
Memory Tests
mmap-negative1.cSuccessNone0.118192s0.132553s
Success
mmap-negative2.cSuccessNone0.105181s0.190290s
Success
Signal Tests
signal_resethand.cSuccessNone1.049685s1.149433s
Success

@github-actions
Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

Unified Test Report

grate harness

MetricValue
Total11
Success11
Failures0
Compile Failures0
Runtime Failures0
Timeout Failures0
Missing Pair Failures0

Cases

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

STDERR:

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

STDERR:

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

[Grate|interpose-exit] PASS

STDERR:

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

STDERR:

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

STDERR:

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

STDERR:

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

STDERR:

race-test_grate.cSuccess
STDOUT:
pass

STDERR:

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

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 2 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 3 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:

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

STDERR:

libcpp harness

Libc++ integration report

Smoke test: lind_compile_cpp --compile-only on the repo C++ hello source.

MetricValue
Total1
Success1
Failures0
Compile failures0

Cases

TestStatusError typeOutput
tests/unit-tests/cpp/hello.cppSuccess
OK: tests/unit-tests/cpp/hello.cpp.wasm
OK: /tests/unit-tests/cpp/hello.cpp.wasm

wasm-ld: warning: function signature mismatch: main
>>> defined as (i32, i32, i32) -> i32 in //build/sysroot/lib/wasm32-wasi/crt1.o
>>> defined as (i32, i32) -> i32 in /tmp/hello-b3779f.o

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.055416s4.331756s
Success
thread.cSuccessNone0.051607s4.424314s
Success
tls_test.cSuccessNone0.053943s4.467533s
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.052461s0.201430s
Success
chdir_getcwd.cSuccessNone0.054587s0.182675s
Success
chmod.cSuccessNone0.056623s0.166680s
Success
clock_gettime_highlevel.cSuccessNone0.123430s0.358668s
Success
clock_gettime_simple.cSuccessNone0.051906s0.162669s
Success
cloexec.cSuccessNone0.057427s0.243938s
Success
close.cSuccessNone0.063930s0.189664s
Success
creat_access.cSuccessNone0.054561s0.161613s
Success
doubleclose.cSuccessNone0.047459s0.136602s
Success
dup.cSuccessNone0.047971s0.156960s
Success
dup2.cSuccessNone0.061544s0.163087s
Success
dup3.cSuccessNone0.057309s0.161286s
Success
dupwrite.cSuccessNone0.052729s0.150287s
Success
etc_conf.cSuccessNone0.049286s0.161228s
Success
fchdir.cSuccessNone0.056241s0.168697s
Success
fchmod.cSuccessNone0.054423s0.164153s
Success
fcntl.cSuccessNone0.053393s0.162373s
Success
fdatasync.cSuccessNone0.053574s0.148909s
Success
filetest.cSuccessNone0.060887s0.161823s
Success
filetest1000.cSuccessNone0.064421s0.171504s
Success
flock.cSuccessNone0.060594s0.197036s
Success
fstat.cSuccessNone0.056517s0.166817s
Success
fstatfs.cSuccessNone0.050804s0.151795s
Success
fsync.cSuccessNone0.056865s0.161026s
Success
ftruncate.cSuccessNone0.056929s0.286963s
Success
getcwd.cSuccessNone0.050076s0.149040s
Success
getpgid.cSuccessNone0.049565s0.143242s
Success
getrandom.cSuccessNone0.053717s0.162143s
Success
ioctl.cSuccessNone0.064758s0.170378s
Success
link.cSuccessNone0.057151s0.217496s
Success
locale_test.cSuccessNone0.085913s0.686994s
Success
lseek.cSuccessNone0.057436s0.279081s
Success
lstat.cSuccessNone0.062379s0.184255s
Success
mkdir_rmdir.cSuccessNone0.057008s0.168839s
Success
mkfifo_test.cSuccessNone0.059027s0.208495s
Success
mknod.cSuccessNone0.053170s0.166763s
Success
nocancel_io.cSuccessNone0.056518s0.190035s
Success
open.cSuccessNone0.049090s0.142534s
Success
openat.cSuccessNone0.048957s0.151628s
Success
path_conversion_safety.cSuccessNone0.056854s0.188658s
Success
ppoll.cSuccessNone0.056852s0.181255s
Success
pread_pwrite.cSuccessNone0.050920s0.162413s
Success
preadv_pwritev.cSuccessNone0.056465s0.174570s
Success
printf.cSuccessNone0.046183s0.133695s
Success
prlimit64.cSuccessNone0.048047s0.144089s
Success
read.cSuccessNone0.054518s0.162764s
Success
readbytes.cSuccessNone0.050449s0.143821s
Success
readdir_basic.cSuccessNone0.057787s0.186897s
Success
readlink.cSuccessNone0.053761s0.158530s
Success
readlinkat.cSuccessNone0.056568s0.168645s
Success
readv_writev_test.cSuccessNone0.057503s0.180616s
Success
rename.cSuccessNone0.055098s0.152467s
Success
sc-writev.cSuccessNone0.052525s0.157794s
Success
stat.cSuccessNone0.055110s0.160636s
Success
statfs.cSuccessNone0.050728s0.157542s
Success
symlink.cSuccessNone0.056477s0.200175s
Success
sync_file_range.cSuccessNone0.055405s0.160355s
Success
timespec_time_t_compat.cSuccessNone0.051862s0.145184s
Success
truncate.cSuccessNone0.056019s0.180431s
Success
unlink.cSuccessNone0.059000s0.206576s
Success
unlinkat.cSuccessNone0.067585s0.190832s
Success
write.cSuccessNone0.047873s0.137784s
Success
writeloop.cSuccessNone0.056987s0.163280s
Success
writepartial.cSuccessNone0.054500s0.146237s
Success
writev.cSuccessNone0.055089s0.166894s
Success
Math Tests
math_link_smoke.cSuccessNone0.059777s0.150903s
Success
math_tests.cSuccessNone0.066235s0.190614s
Success
Memory Tests
brk.cSuccessNone0.052239s0.147242s
Success
fork_large_memory.cSuccessNone0.083603s0.407917s
Success
malloc.cSuccessNone0.050411s0.138375s
Success
malloc_large.cSuccessNone0.051039s0.146006s
Success
memcpy.cSuccessNone0.049565s0.141949s
Success
memory_error_test.cSuccessNone0.057004s0.188796s
Success
mmap.cSuccessNone0.046829s0.143354s
Success
mmap_aligned.cSuccessNone0.049834s0.159536s
Success
mmap_complicated.cSuccessNone0.053129s0.162420s
Success
mmap_file.cSuccessNone0.053814s0.155330s
Success
mmap_shared.cSuccessNone0.052163s0.157175s
Success
mmaptest.cSuccessNone0.050647s0.152406s
Success
mprotect.cSuccessNone0.047617s0.140943s
Success
mprotect_boundary.cSuccessNone0.047908s0.157106s
Success
mprotect_end_region.cSuccessNone0.047359s0.146791s
Success
mprotect_middle_region.cSuccessNone0.047528s0.152250s
Success
mprotect_multiple_times.cSuccessNone0.048400s0.155521s
Success
mprotect_same_value.cSuccessNone0.047926s0.151266s
Success
mprotect_spanning_regions.cSuccessNone0.049408s0.170353s
Success
munmap_adjacent_shm.cSuccessNone0.049997s0.160786s
Success
sbrk.cSuccessNone0.050364s0.144288s
Success
segfault.cSuccessNone0.055061s0.176245s
Success
shm.cSuccessNone0.053885s0.169085s
Success
shmtest.cSuccessNone0.049107s0.148537s
Success
thread_malloc_sequential.cSuccessNone0.054854s0.170782s
Success
vtable.cSuccessNone0.058277s0.161249s
Success
Networking Tests
accept4.cSuccessNone0.059467s0.181171s
Success
dns_resolve_test.cSuccessNone0.057483s0.157362s
Success
dnstest.cSuccessNone0.054602s0.164459s
Success
epoll_edge_triggered.cSuccessNone0.209797s0.506871s
Success
epollcreate1.cSuccessNone0.055283s0.166561s
Success
error_handling_net.cSuccessNone0.061341s0.278906s
Success
getaddrinfo_test.cSuccessNone0.056792s0.203077s
Success
getaddrinfo_unspec.cSuccessNone0.056647s0.171860s
Success
gethostname.cSuccessNone0.049028s0.140575s
Success
getifaddrs.cSuccessNone0.055438s0.159228s
Success
getsockname.cSuccessNone0.055445s0.159405s
Success
getsockopt.cSuccessNone0.057759s0.212491s
Success
ipv6_basic.cSuccessNone0.058492s0.213392s
Success
makepipe.cSuccessNone0.048270s0.135754s
Success
nonblocking_eagain.cSuccessNone0.059646s0.227203s
Success
pipe.cSuccessNone0.055978s0.168981s
Success
pipe2.cSuccessNone0.058048s0.156997s
Success
pipeinput.cSuccessNone0.056564s0.181791s
Success
pipeinput2.cSuccessNone0.056887s0.178347s
Success
pipeonestring.cSuccessNone0.057458s0.180088s
Success
pipepong.cSuccessNone0.056125s0.184997s
Success
pipewrite.cSuccessNone0.052565s0.161302s
Success
poll.cSuccessNone0.054541s0.149468s
Success
recvfrom-sendto.cSuccessNone0.056489s0.173228s
Success
sendmsg_recvmsg_test.cSuccessNone0.056563s0.169070s
Success
serverclient.cSuccessNone0.054850s0.161627s
Success
shutdown.cSuccessNone0.056822s0.163143s
Success
shutdown_fork.cSuccessNone0.055629s0.169722s
Success
simple-select.cSuccessNone0.057122s0.182247s
Success
simple_epoll.cSuccessNone0.055248s0.165606s
Success
socket.cSuccessNone0.053724s0.152993s
Success
socket_cloexec.cSuccessNone0.053499s0.150348s
Success
socket_options_advanced.cSuccessNone0.058951s0.235582s
Success
socketepoll.cSuccessNone0.054272s0.157351s
Success
socketpair.cSuccessNone0.053485s0.162742s
Success
socketselect.cSuccessNone0.054683s0.163421s
Success
udp_send_recv.cSuccessNone0.162243s0.329193s
Success
uds-getsockname.cSuccessNone0.055260s0.157181s
Success
uds-nb-select.cSuccessNone2.062619s2.231060s
Success
uds-serverclient.cSuccessNone0.059196s0.198938s
Success
uds-socketselect.cSuccessNone0.055162s0.163044s
Success
writev_socket.cSuccessNone0.057504s0.199791s
Success
Process Tests
barrier_test.cSuccessNone0.053296s0.160049s
Success
chain_thread.cSuccessNone1.054957s1.170439s
Success
ctor_syscall_test.cSuccessNone0.046127s0.140126s
Success
cxa_atexit_test.cSuccessNone0.050866s0.142393s
Success
execve_shebang.cSuccessNone0.054171s0.155406s
Success
exit.cSuccessNone0.051466s0.137812s
Success
exit_failure.cSuccessNone0.053098s0.149662s
Success
exit_group_thread.cSuccessNone0.056119s0.163567s
Success
flockfile_test.cSuccessNone0.053677s0.175657s
Success
fork2malloc.cSuccessNone0.054932s0.159441s
Success
fork_select.cSuccessNone0.053003s0.166917s
Success
fork_simple.cSuccessNone0.051587s0.151335s
Success
fork_syscall.cSuccessNone0.058283s0.303386s
Success
fork_tls_ctype.cSuccessNone0.055928s0.181524s
Success
forkandopen.cSuccessNone0.055312s0.175153s
Success
forkdup.cSuccessNone0.057948s0.171122s
Success
forkexecuid.cSuccessNone0.052618s0.234431s
Success
forkexecv-arg.cSuccessNone0.052526s0.216669s
Success
forkexecv.cSuccessNone0.050582s0.207760s
Success
forkfiles.cSuccessNone0.055464s0.171001s
Success
forkmalloc.cSuccessNone0.054453s0.155825s
Success
forknodup.cSuccessNone0.054788s0.171672s
Success
function-ptr.cSuccessNone0.049282s0.144864s
Success
getegid_syscall.cSuccessNone0.054829s0.265215s
Success
getgid_syscall.cSuccessNone0.055418s0.274474s
Success
getpid.cSuccessNone0.048665s0.140570s
Success
getpid_syscall.cSuccessNone0.056388s0.288216s
Success
getppid.cSuccessNone0.054900s0.159570s
Success
getppid_syscall.cSuccessNone0.057599s0.246412s
Success
getuid.cSuccessNone0.055263s0.150816s
Success
getuid_syscall.cSuccessNone0.054680s0.198333s
Success
hello-arg.cSuccessNone0.045561s0.140551s
Success
hello.cSuccessNone0.046386s0.135391s
Success
longjmp.cSuccessNone0.047186s0.140511s
Success
mutex.cSuccessNone2.057544s2.171626s
Success
printf_deadlock_smoke.cSuccessNone0.061657s0.197679s
Success
printf_thread_test.cSuccessNone0.052890s0.168103s
Success
sem_forks.cSuccessNone0.057583s0.170233s
Success
setsid.cSuccessNone0.047274s0.138014s
Success
template.cSuccessNone0.054055s0.170763s
Success
test_exec_nofork.cSuccessNone0.052972s0.209806s
Success
test_unlink_open_file.cSuccessNone0.049106s0.139638s
Success
thread-guard.cSuccessNone0.052101s0.160166s
Success
thread-test.cSuccessNone0.049934s0.145450s
Success
thread.cSuccessNone0.049807s0.146457s
Success
thread_cageid_race.cSuccessNone0.051123s0.185351s
Success
tls_test.cSuccessNone0.052382s0.157953s
Success
uname.cSuccessNone0.047849s0.137670s
Success
wait.cSuccessNone2.051943s2.161072s
Success
waitpid_anychild.cSuccessNone0.054514s0.156119s
Success
waitpid_syscall.cSuccessNone1.054787s1.194512s
Success
waitpid_wnohang.cSuccessNone0.055128s0.155902s
Success
Signal Tests
alarm.cSuccessNone7.054171s7.180961s
Success
eintr_fork_signal.cSuccessNone1.056545s1.179791s
Success
kill.cSuccessNone1.054383s1.164077s
Success
setitimer.cSuccessNone7.055549s7.182612s
Success
sigalrm.cSuccessNone2.054946s2.176356s
Success
sigaltstack.cSuccessNone0.056337s0.165499s
Success
sigchld.cSuccessNone1.056575s1.166013s
Success
signal-fork.cSuccessNone4.056945s4.169067s
Success
signal-simple.cSuccessNone0.055390s0.156274s
Success
signal_SIGCHLD.cSuccessNone0.054516s0.166894s
Success
signal_fork.cSuccessNone0.051694s0.170785s
Success
signal_int_ignored.cSuccessNone2.055438s2.172137s
Success
signal_kill_cleanup.cSuccessNone1.053560s1.160190s
Success
signal_procmask.cSuccessNone0.050085s0.157748s
Success
signal_read_interrupt.cSuccessNone0.558897s0.682796s
Success
signal_recursive.cSuccessNone0.050343s0.157782s
Success
signal_sa_mask.cSuccessNone0.049988s0.151118s
Success
signal_select_interrupt.cSuccessNone0.558199s0.686228s
Success
signal_write_interrupt.cSuccessNone1.057564s1.179726s
Success
sigpipe.cSuccessNone1.057751s1.184908s
Success
sigprocmask.cSuccessNone1.054735s1.167232s
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.046529s0.138569s
Success
Memory Tests
mmap-negative1.cSuccessNone0.113363s0.151504s
Success
mmap-negative2.cSuccessNone0.137947s0.143498s
Success
Signal Tests
signal_resethand.cSuccessNone1.054932s1.163279s
Success

Add minor change.
@123R3N321
Copy link
Copy Markdown
Author

123R3N321 commented Apr 22, 2026

Removed separate libcpp integration testing job in CI as instructed by @Yaxuan-w

Added scripts/harnesses/libcpptestreport.py following the styling of wasmtestreport.py in the same directory as instructed by @rennergade Currently passing 1/1 test.

@github-actions
Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

Unified Test Report

grate harness

MetricValue
Total11
Success11
Failures0
Compile Failures0
Runtime Failures0
Timeout Failures0
Missing Pair Failures0

Cases

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

STDERR:

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

STDERR:

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

[Grate|interpose-exit] PASS

STDERR:

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

STDERR:

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

STDERR:

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

STDERR:

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

STDERR:

race-test_grate.cSuccess
STDOUT:
pass

STDERR:

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

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 2 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 3 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:

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

STDERR:

libcpp harness

Libc++ integration report

smoke test: lind_compile_cpp --compile-only on test file(s) in ./tests/unit-tests/cpp/... into .wasm.

MetricValue
Total1
Success1
Failures0
Compile failures0

Cases

TestStatusError typeOutput
tests/unit-tests/cpp/hello.cppSuccess
OK: tests/unit-tests/cpp/hello.cpp.wasm
OK: /tests/unit-tests/cpp/hello.cpp.wasm

wasm-ld: warning: function signature mismatch: main
>>> defined as (i32, i32, i32) -> i32 in //build/sysroot/lib/wasm32-wasi/crt1.o
>>> defined as (i32, i32) -> i32 in /tmp/hello-0e8bf7.o

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.051595s4.344161s
Success
thread.cSuccessNone0.046361s4.422920s
Success
tls_test.cSuccessNone0.067172s4.509678s
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.046080s0.182362s
Success
chdir_getcwd.cSuccessNone0.046176s0.144343s
Success
chmod.cSuccessNone0.051593s0.153496s
Success
clock_gettime_highlevel.cSuccessNone0.118158s0.323596s
Success
clock_gettime_simple.cSuccessNone0.040773s0.126964s
Success
cloexec.cSuccessNone0.050681s0.211212s
Success
close.cSuccessNone0.057714s0.171984s
Success
creat_access.cSuccessNone0.049535s0.142923s
Success
doubleclose.cSuccessNone0.041308s0.121301s
Success
dup.cSuccessNone0.042051s0.140183s
Success
dup2.cSuccessNone0.047643s0.141397s
Success
dup3.cSuccessNone0.046354s0.144945s
Success
dupwrite.cSuccessNone0.048969s0.138134s
Success
etc_conf.cSuccessNone0.044389s0.145935s
Success
fchdir.cSuccessNone0.052041s0.153669s
Success
fchmod.cSuccessNone0.050860s0.152974s
Success
fcntl.cSuccessNone0.049175s0.150175s
Success
fdatasync.cSuccessNone0.050403s0.140124s
Success
filetest.cSuccessNone0.048295s0.137156s
Success
filetest1000.cSuccessNone0.056710s0.149922s
Success
flock.cSuccessNone0.057513s0.178395s
Success
fstat.cSuccessNone0.050973s0.152097s
Success
fstatfs.cSuccessNone0.043827s0.132021s
Success
fsync.cSuccessNone0.047488s0.135233s
Success
ftruncate.cSuccessNone0.052892s0.264126s
Success
getcwd.cSuccessNone0.045908s0.137232s
Success
getpgid.cSuccessNone0.043092s0.126593s
Success
getrandom.cSuccessNone0.048017s0.142134s
Success
ioctl.cSuccessNone0.050901s0.142829s
Success
link.cSuccessNone0.052162s0.199118s
Success
locale_test.cSuccessNone0.063449s0.634462s
Success
lseek.cSuccessNone0.053194s0.259011s
Success
lstat.cSuccessNone0.053217s0.161948s
Success
mkdir_rmdir.cSuccessNone0.051192s0.148746s
Success
mkfifo_test.cSuccessNone0.054836s0.192132s
Success
mknod.cSuccessNone0.049601s0.151523s
Success
nocancel_io.cSuccessNone0.052151s0.172546s
Success
open.cSuccessNone0.044048s0.127622s
Success
openat.cSuccessNone0.044069s0.134569s
Success
path_conversion_safety.cSuccessNone0.054159s0.171895s
Success
ppoll.cSuccessNone0.052876s0.153288s
Success
pread_pwrite.cSuccessNone0.045782s0.149128s
Success
preadv_pwritev.cSuccessNone0.051400s0.158032s
Success
printf.cSuccessNone0.040612s0.121628s
Success
prlimit64.cSuccessNone0.042365s0.133387s
Success
read.cSuccessNone0.050083s0.145664s
Success
readbytes.cSuccessNone0.046494s0.134004s
Success
readdir_basic.cSuccessNone0.053331s0.170498s
Success
readlink.cSuccessNone0.049426s0.143539s
Success
readlinkat.cSuccessNone0.050547s0.151224s
Success
readv_writev_test.cSuccessNone0.050803s0.159109s
Success
rename.cSuccessNone0.051298s0.142397s
Success
sc-writev.cSuccessNone0.047122s0.141372s
Success
stat.cSuccessNone0.050391s0.147682s
Success
statfs.cSuccessNone0.043355s0.133851s
Success
symlink.cSuccessNone0.051317s0.184242s
Success
sync_file_range.cSuccessNone0.047202s0.139568s
Success
timespec_time_t_compat.cSuccessNone0.048052s0.130092s
Success
truncate.cSuccessNone0.050803s0.159023s
Success
unlink.cSuccessNone0.052303s0.195877s
Success
unlinkat.cSuccessNone0.051316s0.165751s
Success
write.cSuccessNone0.042731s0.127541s
Success
writeloop.cSuccessNone0.052033s0.134998s
Success
writepartial.cSuccessNone0.052325s0.136850s
Success
writev.cSuccessNone0.051037s0.150097s
Success
Math Tests
math_link_smoke.cSuccessNone0.053563s0.132830s
Success
math_tests.cSuccessNone0.057409s0.166617s
Success
Memory Tests
brk.cSuccessNone0.047155s0.133982s
Success
fork_large_memory.cSuccessNone0.078412s0.391110s
Success
malloc.cSuccessNone0.044708s0.125268s
Success
malloc_large.cSuccessNone0.046011s0.130878s
Success
memcpy.cSuccessNone0.044331s0.126813s
Success
memory_error_test.cSuccessNone0.051380s0.171301s
Success
mmap.cSuccessNone0.041998s0.132119s
Success
mmap_aligned.cSuccessNone0.044353s0.145082s
Success
mmap_complicated.cSuccessNone0.050260s0.151321s
Success
mmap_file.cSuccessNone0.049479s0.143829s
Success
mmap_shared.cSuccessNone0.049218s0.146522s
Success
mmaptest.cSuccessNone0.044486s0.139717s
Success
mprotect.cSuccessNone0.043206s0.131450s
Success
mprotect_boundary.cSuccessNone0.043188s0.146290s
Success
mprotect_end_region.cSuccessNone0.042947s0.136605s
Success
mprotect_middle_region.cSuccessNone0.043463s0.140835s
Success
mprotect_multiple_times.cSuccessNone0.043003s0.139560s
Success
mprotect_same_value.cSuccessNone0.042604s0.135603s
Success
mprotect_spanning_regions.cSuccessNone0.043485s0.152875s
Success
munmap_adjacent_shm.cSuccessNone0.045743s0.148204s
Success
sbrk.cSuccessNone0.044899s0.129784s
Success
segfault.cSuccessNone0.050811s0.163780s
Success
shm.cSuccessNone0.048963s0.151961s
Success
shmtest.cSuccessNone0.044410s0.136490s
Success
thread_malloc_sequential.cSuccessNone0.050916s0.160598s
Success
vtable.cSuccessNone0.055034s0.150979s
Success
Networking Tests
accept4.cSuccessNone0.054604s0.162978s
Success
dns_resolve_test.cSuccessNone0.049218s0.141714s
Success
dnstest.cSuccessNone0.049741s0.148765s
Success
epoll_edge_triggered.cSuccessNone0.207045s0.490381s
Success
epollcreate1.cSuccessNone0.050943s0.157828s
Success
error_handling_net.cSuccessNone0.059586s0.262033s
Success
getaddrinfo_test.cSuccessNone0.053759s0.187328s
Success
getaddrinfo_unspec.cSuccessNone0.050523s0.160300s
Success
gethostname.cSuccessNone0.044396s0.125297s
Success
getifaddrs.cSuccessNone0.052129s0.152701s
Success
getsockname.cSuccessNone0.056807s0.162053s
Success
getsockopt.cSuccessNone0.053404s0.196459s
Success
ipv6_basic.cSuccessNone0.054553s0.199591s
Success
makepipe.cSuccessNone0.045102s0.127109s
Success
nonblocking_eagain.cSuccessNone0.054637s0.209338s
Success
pipe.cSuccessNone0.052194s0.155405s
Success
pipe2.cSuccessNone0.051213s0.145791s
Success
pipeinput.cSuccessNone0.053014s0.165928s
Success
pipeinput2.cSuccessNone0.053765s0.166390s
Success
pipeonestring.cSuccessNone0.053144s0.167999s
Success
pipepong.cSuccessNone0.051723s0.166344s
Success
pipewrite.cSuccessNone0.047046s0.143682s
Success
poll.cSuccessNone0.050471s0.138181s
Success
recvfrom-sendto.cSuccessNone0.051712s0.157442s
Success
sendmsg_recvmsg_test.cSuccessNone0.051066s0.153037s
Success
serverclient.cSuccessNone0.050814s0.148624s
Success
shutdown.cSuccessNone0.052466s0.151369s
Success
shutdown_fork.cSuccessNone0.051539s0.154840s
Success
simple-select.cSuccessNone0.051985s0.167354s
Success
simple_epoll.cSuccessNone0.050609s0.150451s
Success
socket.cSuccessNone0.051775s0.136169s
Success
socket_cloexec.cSuccessNone0.048783s0.135432s
Success
socket_options_advanced.cSuccessNone0.056059s0.215648s
Success
socketepoll.cSuccessNone0.049222s0.142202s
Success
socketpair.cSuccessNone0.048763s0.148197s
Success
socketselect.cSuccessNone0.049676s0.144720s
Success
udp_send_recv.cSuccessNone0.157649s0.313168s
Success
uds-getsockname.cSuccessNone0.050267s0.141875s
Success
uds-nb-select.cSuccessNone2.059227s2.212223s
Success
uds-serverclient.cSuccessNone0.054228s0.181125s
Success
uds-socketselect.cSuccessNone0.050709s0.149522s
Success
writev_socket.cSuccessNone0.056355s0.184113s
Success
Process Tests
barrier_test.cSuccessNone0.050921s0.158872s
Success
chain_thread.cSuccessNone1.051064s1.153615s
Success
ctor_syscall_test.cSuccessNone0.040380s0.123527s
Success
cxa_atexit_test.cSuccessNone0.046331s0.137801s
Success
execve_shebang.cSuccessNone0.050140s0.143694s
Success
exit.cSuccessNone0.047568s0.128119s
Success
exit_failure.cSuccessNone0.048479s0.137580s
Success
exit_group_thread.cSuccessNone0.051456s0.152054s
Success
flockfile_test.cSuccessNone0.050100s0.165418s
Success
fork2malloc.cSuccessNone0.051400s0.153351s
Success
fork_select.cSuccessNone0.049129s0.153133s
Success
fork_simple.cSuccessNone0.047758s0.139948s
Success
fork_syscall.cSuccessNone0.054507s0.288784s
Success
fork_tls_ctype.cSuccessNone0.055084s0.181221s
Success
forkandopen.cSuccessNone0.054063s0.185001s
Success
forkdup.cSuccessNone0.054041s0.159343s
Success
forkexecuid.cSuccessNone0.048408s0.215133s
Success
forkexecv-arg.cSuccessNone0.049583s0.199185s
Success
forkexecv.cSuccessNone0.047521s0.191963s
Success
forkfiles.cSuccessNone0.051399s0.156052s
Success
forkmalloc.cSuccessNone0.051051s0.144491s
Success
forknodup.cSuccessNone0.052403s0.160673s
Success
function-ptr.cSuccessNone0.045386s0.131462s
Success
getegid_syscall.cSuccessNone0.053137s0.308273s
Success
getgid_syscall.cSuccessNone0.052367s0.255799s
Success
getpid.cSuccessNone0.043249s0.125023s
Success
getpid_syscall.cSuccessNone0.057173s0.278996s
Success
getppid.cSuccessNone0.052812s0.153596s
Success
getppid_syscall.cSuccessNone0.053349s0.229769s
Success
getuid.cSuccessNone0.050662s0.136153s
Success
getuid_syscall.cSuccessNone0.049061s0.184218s
Success
hello-arg.cSuccessNone0.041034s0.127561s
Success
hello.cSuccessNone0.041484s0.124112s
Success
longjmp.cSuccessNone0.041780s0.129511s
Success
mutex.cSuccessNone2.053040s2.158827s
Success
printf_deadlock_smoke.cSuccessNone0.059426s0.191948s
Success
printf_thread_test.cSuccessNone0.048294s0.155350s
Success
sem_forks.cSuccessNone0.054993s0.160940s
Success
setsid.cSuccessNone0.043543s0.127626s
Success
template.cSuccessNone0.050487s0.161406s
Success
test_exec_nofork.cSuccessNone0.049733s0.192519s
Success
test_unlink_open_file.cSuccessNone0.045177s0.129719s
Success
thread-guard.cSuccessNone0.047549s0.148620s
Success
thread-test.cSuccessNone0.045036s0.134271s
Success
thread.cSuccessNone0.045821s0.137355s
Success
thread_cageid_race.cSuccessNone0.046086s0.169092s
Success
tls_test.cSuccessNone0.048401s0.145902s
Success
uname.cSuccessNone0.042939s0.125261s
Success
wait.cSuccessNone2.047518s2.147019s
Success
waitpid_anychild.cSuccessNone0.049940s0.144261s
Success
waitpid_syscall.cSuccessNone1.050897s1.183672s
Success
waitpid_wnohang.cSuccessNone0.050724s0.145413s
Success
Signal Tests
alarm.cSuccessNone7.049647s7.165081s
Success
eintr_fork_signal.cSuccessNone1.052386s1.167854s
Success
kill.cSuccessNone1.050164s1.149448s
Success
setitimer.cSuccessNone7.049834s7.169257s
Success
sigalrm.cSuccessNone2.049874s2.157494s
Success
sigaltstack.cSuccessNone0.053009s0.151147s
Success
sigchld.cSuccessNone1.051786s1.149012s
Success
signal-fork.cSuccessNone4.051922s4.154596s
Success
signal-simple.cSuccessNone0.051225s0.143575s
Success
signal_SIGCHLD.cSuccessNone0.048527s0.148651s
Success
signal_fork.cSuccessNone0.046796s0.154405s
Success
signal_int_ignored.cSuccessNone2.051889s2.152583s
Success
signal_kill_cleanup.cSuccessNone1.048120s1.145746s
Success
signal_procmask.cSuccessNone0.044963s0.142101s
Success
signal_read_interrupt.cSuccessNone0.553507s0.664548s
Success
signal_recursive.cSuccessNone0.044869s0.144549s
Success
signal_sa_mask.cSuccessNone0.044641s0.134389s
Success
signal_select_interrupt.cSuccessNone0.554079s0.665976s
Success
signal_write_interrupt.cSuccessNone1.051936s1.161523s
Success
sigpipe.cSuccessNone1.053133s1.167942s
Success
sigprocmask.cSuccessNone1.049968s1.150260s
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.041890s0.126090s
Success
Memory Tests
mmap-negative1.cSuccessNone0.138026s0.132000s
Success
mmap-negative2.cSuccessNone0.105091s0.164443s
Success
Signal Tests
signal_resethand.cSuccessNone1.049511s1.149785s
Success

@rennergade
Copy link
Copy Markdown
Contributor

Removed separate libcpp integration testing job in CI as instructed by @Yaxuan-w

Added scripts/harnesses/libcpptestreport.py following the styling of wasmtestreport.py in the same directory as instructed by @rennergade Currently passing 1/1 test.

this test just verifies compilation? It would be cool to actually run the programs like the main tester does

Comment thread scripts/lind_compile
Comment thread scripts/lind_compile_cpp
Comment on lines +113 to +115
--compile-grate)
COMPILE_GRATE="true"
;;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Don't need those in cpp yet?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

The lind_compile_cpp script actually has a ton of space for improvement since it is literally scrambled up from scraps taken from the original lind_compile script.

will we have the need to preserve such a flag in the future? I have it here simply because, well, I haven't deleted it after copy-pasting the original lind_compile script.

There is much to do, as almost everything in this script assumes c source code usage (such as the prompt when you pass in -help flag). I will see to it after getting all the more important parts done

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

We can remove grates related part at least. But yeah this has less priority than others

Comment thread scripts/lind_compile_cpp
"precompile-only")
echo "OK: ${OUT_CWASM}"
;;
esac
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Add new line

Comment thread trial/hello.cpp Outdated
Comment thread .gitignore
Comment thread build-llvm.sh Outdated
Comment thread docs/internal/libcpp.md
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Put into doc folder

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Done.

ok I'm not sure I want this to show up on the official documentation site yet... I will look into it and possibly rework the entire documentation one this PR is truely ready for merge, so that future devs know what is going on.

Comment thread Toolchain-WASI.cmake Outdated
Abstract the sorting function call to literal comparison with a small
sorted result for easier CI flow.
@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:

libcpp harness

Libc++ integration report

Compiles with lind_compile_cpp --compile-only, runs via lind_run, and checks for LIBCPP_SORT_OK 1 2 3 on a line of stdout.

MetricValue
Total1
Success0
Failures1
Compile failures0
Runtime failures1
Output mismatch0
Timeouts0

Cases

TestStatusError typeOutput
tests/unit-tests/cpp/hello.cppFailureRuntime_Failure
=== compile (ok) ===
OK: /tests/unit-tests/cpp/hello.cpp.wasm

wasm-ld: warning: function signature mismatch: main
>>> defined as (i32, i32, i32) -> i32 in //build/sysroot/lib/wasm32-wasi/crt1.o
>>> defined as (i32, i32) -> i32 in /tmp/hello-1320db.o

=== run (exit 101) ===
thread 'main' (742) panicked at src/lind_wasmtime/execute.rs:641:22:
Failed to find epoch global export!
note: run with RUST_BACKTRACE=1 environment variable to display a backtrace

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.061861s4.951647s
Success
thread.cSuccessNone0.055942s5.068919s
Success
tls_test.cSuccessNone0.063467s5.080466s
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.055709s0.164167s
Success
chdir_getcwd.cSuccessNone0.056701s0.112784s
Success
chmod.cSuccessNone0.062099s0.118713s
Success
clock_gettime_highlevel.cSuccessNone0.140343s0.348671s
Success
clock_gettime_simple.cSuccessNone0.050911s0.100546s
Success
cloexec.cSuccessNone0.060232s0.121616s
Success
close.cSuccessNone0.070635s0.138793s
Success
creat_access.cSuccessNone0.059909s0.111623s
Success
doubleclose.cSuccessNone0.052157s0.095537s
Success
dup.cSuccessNone0.052413s0.111685s
Success
dup2.cSuccessNone0.058789s0.109351s
Success
dup3.cSuccessNone0.056565s0.111223s
Success
dupwrite.cSuccessNone0.059421s0.107305s
Success
etc_conf.cSuccessNone0.055600s0.118101s
Success
fchdir.cSuccessNone0.061652s0.121720s
Success
fchmod.cSuccessNone0.061760s0.119275s
Success
fcntl.cSuccessNone0.059312s0.119149s
Success
fdatasync.cSuccessNone0.059534s0.105257s
Success
filetest.cSuccessNone0.059086s0.106376s
Success
filetest1000.cSuccessNone0.072305s0.127091s
Success
flock.cSuccessNone0.068062s0.143134s
Success
fstat.cSuccessNone0.061848s0.119078s
Success
fstatfs.cSuccessNone0.054318s0.104980s
Success
fsync.cSuccessNone0.058062s0.106291s
Success
ftruncate.cSuccessNone0.063374s0.246043s
Success
getcwd.cSuccessNone0.055883s0.103775s
Success
getpgid.cSuccessNone0.053573s0.099312s
Success
getrandom.cSuccessNone0.059402s0.112969s
Success
ioctl.cSuccessNone0.061260s0.114392s
Success
link.cSuccessNone0.063574s0.173516s
Success
locale_test.cSuccessNone0.072002s0.654540s
Success
lseek.cSuccessNone0.063441s0.239396s
Success
lstat.cSuccessNone0.066771s0.128762s
Success
mkdir_rmdir.cSuccessNone0.060126s0.110939s
Success
mkfifo_test.cSuccessNone0.065428s0.154020s
Success
mknod.cSuccessNone0.058630s0.121293s
Success
nocancel_io.cSuccessNone0.062979s0.141888s
Success
open.cSuccessNone0.054614s0.098971s
Success
openat.cSuccessNone0.055054s0.108243s
Success
path_conversion_safety.cSuccessNone0.064020s0.140541s
Success
ppoll.cSuccessNone0.062814s0.121750s
Success
pread_pwrite.cSuccessNone0.057069s0.120036s
Success
preadv_pwritev.cSuccessNone0.061796s0.127361s
Success
printf.cSuccessNone0.050623s0.095432s
Success
prlimit64.cSuccessNone0.053249s0.103195s
Success
read.cSuccessNone0.059949s0.117479s
Success
readbytes.cSuccessNone0.056020s0.104739s
Success
readdir_basic.cSuccessNone0.063606s0.130217s
Success
readlink.cSuccessNone0.060208s0.116821s
Success
readlinkat.cSuccessNone0.061195s0.124163s
Success
readv_writev_test.cSuccessNone0.061423s0.123099s
Success
rename.cSuccessNone0.061993s0.113618s
Success
sc-writev.cSuccessNone0.057751s0.110242s
Success
stat.cSuccessNone0.060807s0.116100s
Success
statfs.cSuccessNone0.054015s0.104972s
Success
symlink.cSuccessNone0.062736s0.147632s
Success
sync_file_range.cSuccessNone0.057794s0.106356s
Success
timespec_time_t_compat.cSuccessNone0.056782s0.103969s
Success
truncate.cSuccessNone0.061790s0.123525s
Success
unlink.cSuccessNone0.062257s0.161731s
Success
unlinkat.cSuccessNone0.061996s0.131030s
Success
write.cSuccessNone0.053827s0.097157s
Success
writeloop.cSuccessNone0.062408s0.107785s
Success
writepartial.cSuccessNone0.060124s0.104428s
Success
writev.cSuccessNone0.061250s0.119464s
Success
Math Tests
math_link_smoke.cSuccessNone0.064628s0.105114s
Success
math_tests.cSuccessNone0.068357s0.125787s
Success
Memory Tests
brk.cSuccessNone0.057508s0.109643s
Success
fork_large_memory.cSuccessNone0.094693s0.381573s
Success
malloc.cSuccessNone0.055021s0.099589s
Success
malloc_large.cSuccessNone0.055802s0.104333s
Success
memcpy.cSuccessNone0.055610s0.099925s
Success
memory_error_test.cSuccessNone0.061712s0.145912s
Success
mmap.cSuccessNone0.052219s0.101507s
Success
mmap_aligned.cSuccessNone0.054402s0.121151s
Success
mmap_complicated.cSuccessNone0.060397s0.120253s
Success
mmap_file.cSuccessNone0.060297s0.112665s
Success
mmap_shared.cSuccessNone0.059103s0.115951s
Success
mmaptest.cSuccessNone0.055113s0.106486s
Success
mprotect.cSuccessNone0.053576s0.101963s
Success
mprotect_boundary.cSuccessNone0.053847s0.119766s
Success
mprotect_end_region.cSuccessNone0.053719s0.109080s
Success
mprotect_middle_region.cSuccessNone0.053314s0.114163s
Success
mprotect_multiple_times.cSuccessNone0.053325s0.113385s
Success
mprotect_same_value.cSuccessNone0.052828s0.107010s
Success
mprotect_spanning_regions.cSuccessNone0.054215s0.128939s
Success
munmap_adjacent_shm.cSuccessNone0.055931s0.117633s
Success
sbrk.cSuccessNone0.055249s0.102981s
Success
segfault.cSuccessNone0.061431s0.129586s
Success
shm.cSuccessNone0.059190s0.121353s
Success
shmtest.cSuccessNone0.054550s0.108170s
Success
thread_malloc_sequential.cSuccessNone0.061957s0.133559s
Success
vtable.cSuccessNone0.064894s0.124892s
Success
Networking Tests
accept4.cSuccessNone0.065308s0.126325s
Success
dns_resolve_test.cSuccessNone0.059427s0.111987s
Success
dnstest.cSuccessNone0.059781s0.122296s
Success
epoll_edge_triggered.cSuccessNone0.217527s0.482545s
Success
epollcreate1.cSuccessNone0.061433s0.122895s
Success
error_handling_net.cSuccessNone0.068233s0.236412s
Success
getaddrinfo_test.cSuccessNone0.063797s0.160648s
Success
getaddrinfo_unspec.cSuccessNone0.061614s0.163203s
Success
gethostname.cSuccessNone0.053651s0.098209s
Success
getifaddrs.cSuccessNone0.061903s0.112759s
Success
getsockname.cSuccessNone0.065158s0.115818s
Success
getsockopt.cSuccessNone0.063997s0.174902s
Success
ipv6_basic.cSuccessNone0.065148s0.161697s
Success
makepipe.cSuccessNone0.053484s0.096982s
Success
nonblocking_eagain.cSuccessNone0.065363s0.180614s
Success
pipe.cSuccessNone0.062926s0.121664s
Success
pipe2.cSuccessNone0.063112s0.114196s
Success
pipeinput.cSuccessNone0.063369s0.134316s
Success
pipeinput2.cSuccessNone0.063192s0.133313s
Success
pipeonestring.cSuccessNone0.064115s0.134515s
Success
pipepong.cSuccessNone0.062571s0.135213s
Success
pipewrite.cSuccessNone0.056621s0.114736s
Success
poll.cSuccessNone0.060694s0.106629s
Success
recvfrom-sendto.cSuccessNone0.062410s0.121301s
Success
sendmsg_recvmsg_test.cSuccessNone0.061733s0.123202s
Success
serverclient.cSuccessNone0.061244s0.117727s
Success
shutdown.cSuccessNone0.062784s0.116603s
Success
shutdown_fork.cSuccessNone0.062217s0.121033s
Success
simple-select.cSuccessNone0.062965s0.134429s
Success
simple_epoll.cSuccessNone0.061305s0.116694s
Success
socket.cSuccessNone0.060109s0.108067s
Success
socket_cloexec.cSuccessNone0.059535s0.107239s
Success
socket_options_advanced.cSuccessNone0.066782s0.197216s
Success
socketepoll.cSuccessNone0.059739s0.110986s
Success
socketpair.cSuccessNone0.058849s0.116760s
Success
socketselect.cSuccessNone0.060173s0.116777s
Success
udp_send_recv.cSuccessNone0.168076s0.280836s
Success
uds-getsockname.cSuccessNone0.061263s0.109789s
Success
uds-nb-select.cSuccessNone2.068717s2.172976s
Success
uds-serverclient.cSuccessNone0.065147s0.142015s
Success
uds-socketselect.cSuccessNone0.061008s0.115746s
Success
writev_socket.cSuccessNone0.064457s0.157305s
Success
Process Tests
barrier_test.cSuccessNone0.058968s0.114223s
Success
chain_thread.cSuccessNone1.061670s1.120775s
Success
ctor_syscall_test.cSuccessNone0.051189s0.098296s
Success
cxa_atexit_test.cSuccessNone0.056160s0.102585s
Success
execve_shebang.cSuccessNone0.061088s0.109713s
Success
exit.cSuccessNone0.058393s0.102610s
Success
exit_failure.cSuccessNone0.059559s0.111902s
Success
exit_group_thread.cSuccessNone0.062583s0.120331s
Success
flockfile_test.cSuccessNone0.060085s0.124571s
Success
fork2malloc.cSuccessNone0.062081s0.120378s
Success
fork_select.cSuccessNone0.059817s0.125817s
Success
fork_simple.cSuccessNone0.058578s0.110995s
Success
fork_syscall.cSuccessNone0.065570s0.254536s
Success
fork_tls_ctype.cSuccessNone0.063190s0.142963s
Success
forkandopen.cSuccessNone0.062258s0.132360s
Success
forkdup.cSuccessNone0.064218s0.118897s
Success
forkexecuid.cSuccessNone0.058760s0.128030s
Success
forkexecv-arg.cSuccessNone0.058835s0.115149s
Success
forkexecv.cSuccessNone0.057262s0.113823s
Success
forkfiles.cSuccessNone0.061229s0.125425s
Success
forkmalloc.cSuccessNone0.061506s0.114310s
Success
forknodup.cSuccessNone0.061667s0.126548s
Success
function-ptr.cSuccessNone0.055320s0.102525s
Success
getegid_syscall.cSuccessNone0.061702s0.212428s
Success
getgid_syscall.cSuccessNone0.062078s0.220440s
Success
getpid.cSuccessNone0.053718s0.099540s
Success
getpid_syscall.cSuccessNone0.063716s0.234757s
Success
getppid.cSuccessNone0.061082s0.113177s
Success
getppid_syscall.cSuccessNone0.065301s0.193814s
Success
getuid.cSuccessNone0.060847s0.108923s
Success
getuid_syscall.cSuccessNone0.060248s0.154273s
Success
hello-arg.cSuccessNone0.051521s0.098465s
Success
hello.cSuccessNone0.051474s0.095109s
Success
longjmp.cSuccessNone0.052269s0.100227s
Success
mutex.cSuccessNone2.063709s2.117912s
Success
printf_deadlock_smoke.cSuccessNone0.069657s0.146066s
Success
printf_thread_test.cSuccessNone0.059122s0.121977s
Success
sem_forks.cSuccessNone0.063353s0.127008s
Success
setsid.cSuccessNone0.053113s0.099242s
Success
template.cSuccessNone0.060566s0.134401s
Success
test_exec_nofork.cSuccessNone0.059590s0.112420s
Success
test_unlink_open_file.cSuccessNone0.055922s0.100782s
Success
thread-guard.cSuccessNone0.058059s0.114495s
Success
thread-test.cSuccessNone0.055419s0.106096s
Success
thread.cSuccessNone0.055499s0.104907s
Success
thread_cageid_race.cSuccessNone0.056287s0.128285s
Success
tls_test.cSuccessNone0.058826s0.116811s
Success
uname.cSuccessNone0.054353s0.098504s
Success
wait.cSuccessNone2.057616s2.114988s
Success
waitpid_anychild.cSuccessNone0.060696s0.115077s
Success
waitpid_syscall.cSuccessNone1.061777s1.148818s
Success
waitpid_wnohang.cSuccessNone0.061490s0.115977s
Success
Signal Tests
alarm.cSuccessNone7.059578s7.137089s
Success
eintr_fork_signal.cSuccessNone1.062478s1.127497s
Success
kill.cSuccessNone1.060529s1.116524s
Success
setitimer.cSuccessNone7.060713s7.143977s
Success
sigalrm.cSuccessNone2.060237s2.120300s
Success
sigaltstack.cSuccessNone0.062384s0.119852s
Success
sigchld.cSuccessNone1.063512s1.114335s
Success
signal-fork.cSuccessNone4.062300s4.118294s
Success
signal-simple.cSuccessNone0.061188s0.110135s
Success
signal_SIGCHLD.cSuccessNone0.059083s0.117476s
Success
signal_fork.cSuccessNone0.057111s0.119014s
Success
signal_int_ignored.cSuccessNone2.061331s2.116770s
Success
signal_kill_cleanup.cSuccessNone1.058702s1.114558s
Success
signal_procmask.cSuccessNone0.055284s0.110337s
Success
signal_read_interrupt.cSuccessNone0.564354s0.623634s
Success
signal_recursive.cSuccessNone0.055234s0.111858s
Success
signal_sa_mask.cSuccessNone0.055124s0.105548s
Success
signal_select_interrupt.cSuccessNone0.564228s0.627020s
Success
signal_write_interrupt.cSuccessNone1.063720s1.127377s
Success
sigpipe.cSuccessNone1.063176s1.123702s
Success
sigprocmask.cSuccessNone1.060096s1.115308s
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.052315s0.098403s
Success
Memory Tests
mmap-negative1.cSuccessNone0.152983s0.114267s
Success
mmap-negative2.cSuccessNone0.128909s0.111793s
Success
Signal Tests
signal_resethand.cSuccessNone1.060020s1.114215s
Success

@123R3N321
Copy link
Copy Markdown
Author

Removed separate libcpp integration testing job in CI as instructed by @Yaxuan-w
Added scripts/harnesses/libcpptestreport.py following the styling of wasmtestreport.py in the same directory as instructed by @rennergade Currently passing 1/1 test.

this test just verifies compilation? It would be cool to actually run the programs like the main tester does

Done. a couple assumptions:

  1. lind_run is used as blackbox to execute .wasm
  2. I "suppressed" the comipler warning regarding main func argument list style so that the report looks less noisy.

@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:

libcpp harness

Libc++ integration report

Builds with full lind_compile_cpp (wasm-opt + precompile), runs lind_run on the .cwasm, and checks for LIBCPP_SORT_OK 1 2 3 on a line of stdout.

MetricValue
Total1
Success1
Failures0
Compile failures0
Runtime failures0
Output mismatch0
Timeouts0

Cases

TestStatusError typeOutput
tests/unit-tests/cpp/hello.cppSuccess
=== compile ===
OK: /tests/unit-tests/cpp/hello.cpp.cwasm

OK: /tests/unit-tests/cpp/hello.cpp.cwasm

=== run (exit 0) ===
LIBCPP_SORT_OK 1 2 3

Verified: 'LIBCPP_SORT_OK 1 2 3' present in output.
Artifact: tests/unit-tests/cpp/hello.cpp.cwasm

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.056335s4.378427s
Success
thread.cSuccessNone0.050783s4.378044s
Success
tls_test.cSuccessNone0.060394s4.427237s
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.050446s0.147606s
Success
chdir_getcwd.cSuccessNone0.051786s0.103904s
Success
chmod.cSuccessNone0.056751s0.107296s
Success
clock_gettime_highlevel.cSuccessNone0.124249s0.305297s
Success
clock_gettime_simple.cSuccessNone0.048465s0.093186s
Success
cloexec.cSuccessNone0.057166s0.111877s
Success
close.cSuccessNone0.064834s0.125840s
Success
creat_access.cSuccessNone0.054673s0.101434s
Success
doubleclose.cSuccessNone0.047595s0.088730s
Success
dup.cSuccessNone0.048997s0.101809s
Success
dup2.cSuccessNone0.053401s0.100286s
Success
dup3.cSuccessNone0.051668s0.102018s
Success
dupwrite.cSuccessNone0.054124s0.098105s
Success
etc_conf.cSuccessNone0.051298s0.108160s
Success
fchdir.cSuccessNone0.056607s0.110519s
Success
fchmod.cSuccessNone0.056723s0.108744s
Success
fcntl.cSuccessNone0.054605s0.110981s
Success
fdatasync.cSuccessNone0.054767s0.097758s
Success
filetest.cSuccessNone0.054074s0.097791s
Success
filetest1000.cSuccessNone0.063783s0.115523s
Success
flock.cSuccessNone0.062440s0.131056s
Success
fstat.cSuccessNone0.056414s0.109205s
Success
fstatfs.cSuccessNone0.049973s0.095137s
Success
fsync.cSuccessNone0.053408s0.096852s
Success
ftruncate.cSuccessNone0.058452s0.225031s
Success
getcwd.cSuccessNone0.051077s0.094814s
Success
getpgid.cSuccessNone0.049271s0.092201s
Success
getrandom.cSuccessNone0.053828s0.102165s
Success
ioctl.cSuccessNone0.055694s0.104124s
Success
link.cSuccessNone0.057045s0.153958s
Success
locale_test.cSuccessNone0.065643s0.574251s
Success
lseek.cSuccessNone0.058245s0.218136s
Success
lstat.cSuccessNone0.060027s0.118681s
Success
mkdir_rmdir.cSuccessNone0.054543s0.101231s
Success
mkfifo_test.cSuccessNone0.059847s0.138005s
Success
mknod.cSuccessNone0.053627s0.109352s
Success
nocancel_io.cSuccessNone0.058499s0.127549s
Success
open.cSuccessNone0.049427s0.091816s
Success
openat.cSuccessNone0.050697s0.098158s
Success
path_conversion_safety.cSuccessNone0.059556s0.129967s
Success
ppoll.cSuccessNone0.058434s0.112290s
Success
pread_pwrite.cSuccessNone0.052786s0.110255s
Success
preadv_pwritev.cSuccessNone0.057389s0.116747s
Success
printf.cSuccessNone0.047577s0.088048s
Success
prlimit64.cSuccessNone0.048944s0.094947s
Success
read.cSuccessNone0.055376s0.107161s
Success
readbytes.cSuccessNone0.052351s0.096957s
Success
readdir_basic.cSuccessNone0.060497s0.120835s
Success
readlink.cSuccessNone0.055157s0.107068s
Success
readlinkat.cSuccessNone0.056527s0.112275s
Success
readv_writev_test.cSuccessNone0.057031s0.111939s
Success
rename.cSuccessNone0.056398s0.103638s
Success
sc-writev.cSuccessNone0.053192s0.100849s
Success
stat.cSuccessNone0.055539s0.106327s
Success
statfs.cSuccessNone0.049916s0.095496s
Success
symlink.cSuccessNone0.057186s0.134299s
Success
sync_file_range.cSuccessNone0.052278s0.098066s
Success
timespec_time_t_compat.cSuccessNone0.052452s0.095521s
Success
truncate.cSuccessNone0.055486s0.111609s
Success
unlink.cSuccessNone0.057048s0.146827s
Success
unlinkat.cSuccessNone0.055944s0.119104s
Success
write.cSuccessNone0.049000s0.088393s
Success
writeloop.cSuccessNone0.056571s0.098468s
Success
writepartial.cSuccessNone0.055647s0.095086s
Success
writev.cSuccessNone0.055999s0.108128s
Success
Math Tests
math_link_smoke.cSuccessNone0.058753s0.094794s
Success
math_tests.cSuccessNone0.063540s0.114709s
Success
Memory Tests
brk.cSuccessNone0.051268s0.096082s
Success
fork_large_memory.cSuccessNone0.082964s0.334522s
Success
malloc.cSuccessNone0.049143s0.089309s
Success
malloc_large.cSuccessNone0.049659s0.093776s
Success
memcpy.cSuccessNone0.048837s0.088747s
Success
memory_error_test.cSuccessNone0.054868s0.129016s
Success
mmap.cSuccessNone0.046199s0.090341s
Success
mmap_aligned.cSuccessNone0.048157s0.107265s
Success
mmap_complicated.cSuccessNone0.053734s0.106818s
Success
mmap_file.cSuccessNone0.053445s0.099077s
Success
mmap_shared.cSuccessNone0.052409s0.102671s
Success
mmaptest.cSuccessNone0.049431s0.093407s
Success
mprotect.cSuccessNone0.048063s0.090384s
Success
mprotect_boundary.cSuccessNone0.047934s0.106670s
Success
mprotect_end_region.cSuccessNone0.047133s0.096045s
Success
mprotect_middle_region.cSuccessNone0.047128s0.099599s
Success
mprotect_multiple_times.cSuccessNone0.047076s0.099825s
Success
mprotect_same_value.cSuccessNone0.046810s0.095348s
Success
mprotect_spanning_regions.cSuccessNone0.048169s0.113188s
Success
munmap_adjacent_shm.cSuccessNone0.049322s0.104189s
Success
sbrk.cSuccessNone0.048702s0.090538s
Success
segfault.cSuccessNone0.053908s0.114154s
Success
shm.cSuccessNone0.052846s0.107472s
Success
shmtest.cSuccessNone0.048508s0.096701s
Success
thread_malloc_sequential.cSuccessNone0.054516s0.118511s
Success
vtable.cSuccessNone0.057491s0.109413s
Success
Networking Tests
accept4.cSuccessNone0.058630s0.113921s
Success
dns_resolve_test.cSuccessNone0.054724s0.101690s
Success
dnstest.cSuccessNone0.055157s0.110748s
Success
epoll_edge_triggered.cSuccessNone0.210916s0.450620s
Success
epollcreate1.cSuccessNone0.056622s0.110352s
Success
error_handling_net.cSuccessNone0.062190s0.213504s
Success
getaddrinfo_test.cSuccessNone0.057117s0.142257s
Success
getaddrinfo_unspec.cSuccessNone0.056382s0.142119s
Success
gethostname.cSuccessNone0.048873s0.089343s
Success
getifaddrs.cSuccessNone0.055539s0.102817s
Success
getsockname.cSuccessNone0.057839s0.102496s
Success
getsockopt.cSuccessNone0.057836s0.155097s
Success
ipv6_basic.cSuccessNone0.058879s0.145769s
Success
makepipe.cSuccessNone0.047242s0.087244s
Success
nonblocking_eagain.cSuccessNone0.059205s0.161910s
Success
pipe.cSuccessNone0.057050s0.109723s
Success
pipe2.cSuccessNone0.057094s0.103206s
Success
pipeinput.cSuccessNone0.057286s0.119486s
Success
pipeinput2.cSuccessNone0.057663s0.120186s
Success
pipeonestring.cSuccessNone0.056357s0.118603s
Success
pipepong.cSuccessNone0.057250s0.121507s
Success
pipewrite.cSuccessNone0.051178s0.103396s
Success
poll.cSuccessNone0.055091s0.097224s
Success
recvfrom-sendto.cSuccessNone0.056429s0.108696s
Success
sendmsg_recvmsg_test.cSuccessNone0.056091s0.110886s
Success
serverclient.cSuccessNone0.055718s0.106776s
Success
shutdown.cSuccessNone0.056871s0.106073s
Success
shutdown_fork.cSuccessNone0.056193s0.109531s
Success
simple-select.cSuccessNone0.057638s0.122829s
Success
simple_epoll.cSuccessNone0.054122s0.103349s
Success
socket.cSuccessNone0.054342s0.098378s
Success
socket_cloexec.cSuccessNone0.054173s0.098709s
Success
socket_options_advanced.cSuccessNone0.059154s0.171753s
Success
socketepoll.cSuccessNone0.061878s0.101392s
Success
socketpair.cSuccessNone0.053464s0.105450s
Success
socketselect.cSuccessNone0.052889s0.103961s
Success
udp_send_recv.cSuccessNone0.160535s0.259245s
Success
uds-getsockname.cSuccessNone0.054939s0.098696s
Success
uds-nb-select.cSuccessNone2.061943s2.153679s
Success
uds-serverclient.cSuccessNone0.058641s0.128705s
Success
uds-socketselect.cSuccessNone0.054966s0.104880s
Success
writev_socket.cSuccessNone0.058100s0.140532s
Success
Process Tests
barrier_test.cSuccessNone0.053389s0.101463s
Success
chain_thread.cSuccessNone1.054691s1.106743s
Success
ctor_syscall_test.cSuccessNone0.045422s0.086630s
Success
cxa_atexit_test.cSuccessNone0.050508s0.091528s
Success
execve_shebang.cSuccessNone0.053410s0.097335s
Success
exit.cSuccessNone0.051816s0.090774s
Success
exit_failure.cSuccessNone0.052806s0.098498s
Success
exit_group_thread.cSuccessNone0.054942s0.106408s
Success
flockfile_test.cSuccessNone0.053430s0.109851s
Success
fork2malloc.cSuccessNone0.055614s0.106893s
Success
fork_select.cSuccessNone0.053216s0.110561s
Success
fork_simple.cSuccessNone0.051904s0.098607s
Success
fork_syscall.cSuccessNone0.057465s0.223609s
Success
fork_tls_ctype.cSuccessNone0.055898s0.125273s
Success
forkandopen.cSuccessNone0.055168s0.116806s
Success
forkdup.cSuccessNone0.058779s0.107763s
Success
forkexecuid.cSuccessNone0.052474s0.118018s
Success
forkexecv-arg.cSuccessNone0.052473s0.103566s
Success
forkexecv.cSuccessNone0.051341s0.100708s
Success
forkfiles.cSuccessNone0.054501s0.109822s
Success
forkmalloc.cSuccessNone0.055601s0.103751s
Success
forknodup.cSuccessNone0.054374s0.110692s
Success
function-ptr.cSuccessNone0.050096s0.093142s
Success
getegid_syscall.cSuccessNone0.054678s0.187560s
Success
getgid_syscall.cSuccessNone0.055621s0.195996s
Success
getpid.cSuccessNone0.047597s0.088542s
Success
getpid_syscall.cSuccessNone0.057590s0.204244s
Success
getppid.cSuccessNone0.054222s0.100492s
Success
getppid_syscall.cSuccessNone0.057304s0.173891s
Success
getuid.cSuccessNone0.053898s0.096174s
Success
getuid_syscall.cSuccessNone0.053475s0.136534s
Success
hello-arg.cSuccessNone0.046085s0.088218s
Success
hello.cSuccessNone0.045674s0.084749s
Success
longjmp.cSuccessNone0.046412s0.090373s
Success
mutex.cSuccessNone2.056157s2.104045s
Success
printf_deadlock_smoke.cSuccessNone0.060840s0.128824s
Success
printf_thread_test.cSuccessNone0.052513s0.107296s
Success
sem_forks.cSuccessNone0.056014s0.112985s
Success
setsid.cSuccessNone0.047544s0.087488s
Success
template.cSuccessNone0.054081s0.118191s
Success
test_exec_nofork.cSuccessNone0.052791s0.100216s
Success
test_unlink_open_file.cSuccessNone0.048838s0.088791s
Success
thread-guard.cSuccessNone0.051155s0.101207s
Success
thread-test.cSuccessNone0.049171s0.094086s
Success
thread.cSuccessNone0.049013s0.093679s
Success
thread_cageid_race.cSuccessNone0.051027s0.114905s
Success
tls_test.cSuccessNone0.051939s0.103889s
Success
uname.cSuccessNone0.047915s0.087436s
Success
wait.cSuccessNone2.051252s2.102006s
Success
waitpid_anychild.cSuccessNone0.053554s0.101624s
Success
waitpid_syscall.cSuccessNone1.054722s1.131826s
Success
waitpid_wnohang.cSuccessNone0.054334s0.103436s
Success
Signal Tests
alarm.cSuccessNone7.056023s7.125838s
Success
eintr_fork_signal.cSuccessNone1.055333s1.112837s
Success
kill.cSuccessNone1.053394s1.103658s
Success
setitimer.cSuccessNone7.053825s7.131500s
Success
sigalrm.cSuccessNone2.053585s2.110396s
Success
sigaltstack.cSuccessNone0.055173s0.105720s
Success
sigchld.cSuccessNone1.056770s1.103607s
Success
signal-fork.cSuccessNone4.055005s4.105115s
Success
signal-simple.cSuccessNone0.054234s0.098047s
Success
signal_SIGCHLD.cSuccessNone0.054445s0.106759s
Success
signal_fork.cSuccessNone0.050979s0.105367s
Success
signal_int_ignored.cSuccessNone2.053991s2.103365s
Success
signal_kill_cleanup.cSuccessNone1.052384s1.101031s
Success
signal_procmask.cSuccessNone0.049085s0.096802s
Success
signal_read_interrupt.cSuccessNone0.558912s0.612996s
Success
signal_recursive.cSuccessNone0.049019s0.099708s
Success
signal_sa_mask.cSuccessNone0.050943s0.096723s
Success
signal_select_interrupt.cSuccessNone0.558688s0.615929s
Success
signal_write_interrupt.cSuccessNone1.056972s1.113810s
Success
sigpipe.cSuccessNone1.056295s1.130922s
Success
sigprocmask.cSuccessNone1.052989s1.101842s
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.046185s0.088330s
Success
Memory Tests
mmap-negative1.cSuccessNone0.125824s0.103436s
Success
mmap-negative2.cSuccessNone0.113461s0.102712s
Success
Signal Tests
signal_resethand.cSuccessNone1.053212s1.101358s
Success

@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:

libcpp harness

Libc++ integration report

Builds with full lind_compile_cpp (wasm-opt + precompile), runs lind_run on the .cwasm, and checks for LIBCPP_SORT_OK 1 2 3 on a line of stdout.

MetricValue
Total1
Success1
Failures0
Compile failures0
Runtime failures0
Output mismatch0
Timeouts0

Cases

TestStatusError typeOutput
tests/unit-tests/cpp/hello.cppSuccess
=== compile ===
OK: /tests/unit-tests/cpp/hello.cpp.cwasm

OK: /tests/unit-tests/cpp/hello.cpp.cwasm

=== run (exit 0) ===
LIBCPP_SORT_OK 1 2 3

Verified: 'LIBCPP_SORT_OK 1 2 3' present in output.
Artifact: tests/unit-tests/cpp/hello.cpp.cwasm

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.056248s4.284954s
Success
thread.cSuccessNone0.049389s4.378514s
Success
tls_test.cSuccessNone0.056591s4.413042s
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.050275s0.147750s
Success
chdir_getcwd.cSuccessNone0.050500s0.100269s
Success
chmod.cSuccessNone0.055303s0.105019s
Success
clock_gettime_highlevel.cSuccessNone0.122018s0.304016s
Success
clock_gettime_simple.cSuccessNone0.045363s0.089940s
Success
cloexec.cSuccessNone0.054108s0.107081s
Success
close.cSuccessNone0.063003s0.122366s
Success
creat_access.cSuccessNone0.053057s0.099160s
Success
doubleclose.cSuccessNone0.046325s0.085844s
Success
dup.cSuccessNone0.047183s0.099749s
Success
dup2.cSuccessNone0.052014s0.096501s
Success
dup3.cSuccessNone0.050971s0.098562s
Success
dupwrite.cSuccessNone0.052981s0.094621s
Success
etc_conf.cSuccessNone0.048559s0.103966s
Success
fchdir.cSuccessNone0.055290s0.108372s
Success
fchmod.cSuccessNone0.055269s0.105241s
Success
fcntl.cSuccessNone0.052276s0.107535s
Success
fdatasync.cSuccessNone0.051832s0.094655s
Success
filetest.cSuccessNone0.052279s0.095973s
Success
filetest1000.cSuccessNone0.061967s0.111692s
Success
flock.cSuccessNone0.060539s0.126683s
Success
fstat.cSuccessNone0.054676s0.105861s
Success
fstatfs.cSuccessNone0.048890s0.093345s
Success
fsync.cSuccessNone0.051693s0.096401s
Success
ftruncate.cSuccessNone0.056351s0.214832s
Success
getcwd.cSuccessNone0.050472s0.092985s
Success
getpgid.cSuccessNone0.048032s0.088184s
Success
getrandom.cSuccessNone0.053104s0.100421s
Success
ioctl.cSuccessNone0.054692s0.103817s
Success
link.cSuccessNone0.056695s0.151898s
Success
locale_test.cSuccessNone0.063754s0.564746s
Success
lseek.cSuccessNone0.056316s0.211354s
Success
lstat.cSuccessNone0.056920s0.114057s
Success
mkdir_rmdir.cSuccessNone0.053267s0.098330s
Success
mkfifo_test.cSuccessNone0.057747s0.135546s
Success
mknod.cSuccessNone0.051934s0.106389s
Success
nocancel_io.cSuccessNone0.055827s0.124814s
Success
open.cSuccessNone0.047910s0.089370s
Success
openat.cSuccessNone0.048677s0.098335s
Success
path_conversion_safety.cSuccessNone0.056683s0.125059s
Success
ppoll.cSuccessNone0.055802s0.108599s
Success
pread_pwrite.cSuccessNone0.050999s0.105370s
Success
preadv_pwritev.cSuccessNone0.055128s0.113289s
Success
printf.cSuccessNone0.046012s0.084128s
Success
prlimit64.cSuccessNone0.047267s0.091510s
Success
read.cSuccessNone0.053618s0.104541s
Success
readbytes.cSuccessNone0.050038s0.092822s
Success
readdir_basic.cSuccessNone0.056283s0.115784s
Success
readlink.cSuccessNone0.052614s0.103170s
Success
readlinkat.cSuccessNone0.055210s0.110592s
Success
readv_writev_test.cSuccessNone0.054502s0.110478s
Success
rename.cSuccessNone0.055119s0.101340s
Success
sc-writev.cSuccessNone0.051305s0.098049s
Success
stat.cSuccessNone0.053524s0.103339s
Success
statfs.cSuccessNone0.047623s0.093468s
Success
symlink.cSuccessNone0.055110s0.130388s
Success
sync_file_range.cSuccessNone0.051484s0.095936s
Success
timespec_time_t_compat.cSuccessNone0.050606s0.091633s
Success
truncate.cSuccessNone0.055445s0.110691s
Success
unlink.cSuccessNone0.054944s0.142117s
Success
unlinkat.cSuccessNone0.055419s0.118746s
Success
write.cSuccessNone0.047151s0.085835s
Success
writeloop.cSuccessNone0.055970s0.097282s
Success
writepartial.cSuccessNone0.054425s0.092981s
Success
writev.cSuccessNone0.054589s0.106628s
Success
Math Tests
math_link_smoke.cSuccessNone0.057670s0.093163s
Success
math_tests.cSuccessNone0.060677s0.113089s
Success
Memory Tests
brk.cSuccessNone0.051145s0.097040s
Success
fork_large_memory.cSuccessNone0.082689s0.337068s
Success
malloc.cSuccessNone0.049426s0.089210s
Success
malloc_large.cSuccessNone0.050188s0.094326s
Success
memcpy.cSuccessNone0.049572s0.088999s
Success
memory_error_test.cSuccessNone0.055233s0.128385s
Success
mmap.cSuccessNone0.045968s0.089916s
Success
mmap_aligned.cSuccessNone0.048163s0.106515s
Success
mmap_complicated.cSuccessNone0.053482s0.107476s
Success
mmap_file.cSuccessNone0.053296s0.099380s
Success
mmap_shared.cSuccessNone0.052238s0.103097s
Success
mmaptest.cSuccessNone0.049297s0.099108s
Success
mprotect.cSuccessNone0.047557s0.089556s
Success
mprotect_boundary.cSuccessNone0.047947s0.106756s
Success
mprotect_end_region.cSuccessNone0.047308s0.097548s
Success
mprotect_middle_region.cSuccessNone0.048309s0.101128s
Success
mprotect_multiple_times.cSuccessNone0.047301s0.100105s
Success
mprotect_same_value.cSuccessNone0.047379s0.095545s
Success
mprotect_spanning_regions.cSuccessNone0.048235s0.114467s
Success
munmap_adjacent_shm.cSuccessNone0.049903s0.103906s
Success
sbrk.cSuccessNone0.049389s0.090660s
Success
segfault.cSuccessNone0.054155s0.115300s
Success
shm.cSuccessNone0.053108s0.109768s
Success
shmtest.cSuccessNone0.047803s0.095565s
Success
thread_malloc_sequential.cSuccessNone0.055152s0.118302s
Success
vtable.cSuccessNone0.058291s0.110865s
Success
Networking Tests
accept4.cSuccessNone0.057671s0.112519s
Success
dns_resolve_test.cSuccessNone0.052622s0.099513s
Success
dnstest.cSuccessNone0.053721s0.109107s
Success
epoll_edge_triggered.cSuccessNone0.210078s0.444660s
Success
epollcreate1.cSuccessNone0.054739s0.109170s
Success
error_handling_net.cSuccessNone0.064022s0.208964s
Success
getaddrinfo_test.cSuccessNone0.056646s0.141226s
Success
getaddrinfo_unspec.cSuccessNone0.065323s0.136030s
Success
gethostname.cSuccessNone0.047755s0.087298s
Success
getifaddrs.cSuccessNone0.054796s0.099725s
Success
getsockname.cSuccessNone0.057844s0.101689s
Success
getsockopt.cSuccessNone0.056670s0.151642s
Success
ipv6_basic.cSuccessNone0.057973s0.143741s
Success
makepipe.cSuccessNone0.047601s0.086136s
Success
nonblocking_eagain.cSuccessNone0.057963s0.159255s
Success
pipe.cSuccessNone0.055365s0.107394s
Success
pipe2.cSuccessNone0.055277s0.101528s
Success
pipeinput.cSuccessNone0.056140s0.117956s
Success
pipeinput2.cSuccessNone0.056809s0.118588s
Success
pipeonestring.cSuccessNone0.056573s0.118914s
Success
pipepong.cSuccessNone0.055200s0.119906s
Success
pipewrite.cSuccessNone0.050104s0.101025s
Success
poll.cSuccessNone0.053840s0.094073s
Success
recvfrom-sendto.cSuccessNone0.055358s0.106497s
Success
sendmsg_recvmsg_test.cSuccessNone0.055671s0.108965s
Success
serverclient.cSuccessNone0.053980s0.104445s
Success
shutdown.cSuccessNone0.055770s0.104825s
Success
shutdown_fork.cSuccessNone0.055533s0.107696s
Success
simple-select.cSuccessNone0.055938s0.119180s
Success
simple_epoll.cSuccessNone0.054085s0.103396s
Success
socket.cSuccessNone0.052712s0.096684s
Success
socket_cloexec.cSuccessNone0.052887s0.095286s
Success
socket_options_advanced.cSuccessNone0.058955s0.172601s
Success
socketepoll.cSuccessNone0.053083s0.098479s
Success
socketpair.cSuccessNone0.052459s0.104579s
Success
socketselect.cSuccessNone0.052999s0.102303s
Success
udp_send_recv.cSuccessNone0.161257s0.257560s
Success
uds-getsockname.cSuccessNone0.054176s0.098046s
Success
uds-nb-select.cSuccessNone2.061333s2.151361s
Success
uds-serverclient.cSuccessNone0.057450s0.126937s
Success
uds-socketselect.cSuccessNone0.054573s0.102332s
Success
writev_socket.cSuccessNone0.056764s0.138614s
Success
Process Tests
barrier_test.cSuccessNone0.052825s0.100368s
Success
chain_thread.cSuccessNone1.054885s1.107199s
Success
ctor_syscall_test.cSuccessNone0.045900s0.087303s
Success
cxa_atexit_test.cSuccessNone0.050353s0.091067s
Success
execve_shebang.cSuccessNone0.053885s0.097126s
Success
exit.cSuccessNone0.051501s0.089571s
Success
exit_failure.cSuccessNone0.053449s0.097890s
Success
exit_group_thread.cSuccessNone0.055484s0.106203s
Success
flockfile_test.cSuccessNone0.053918s0.111433s
Success
fork2malloc.cSuccessNone0.055337s0.106860s
Success
fork_select.cSuccessNone0.053619s0.112054s
Success
fork_simple.cSuccessNone0.051677s0.098587s
Success
fork_syscall.cSuccessNone0.058456s0.224211s
Success
fork_tls_ctype.cSuccessNone0.056037s0.125245s
Success
forkandopen.cSuccessNone0.055182s0.117606s
Success
forkdup.cSuccessNone0.057019s0.105480s
Success
forkexecuid.cSuccessNone0.052720s0.113951s
Success
forkexecv-arg.cSuccessNone0.052387s0.101829s
Success
forkexecv.cSuccessNone0.052474s0.101011s
Success
forkfiles.cSuccessNone0.054569s0.110069s
Success
forkmalloc.cSuccessNone0.054588s0.101729s
Success
forknodup.cSuccessNone0.055818s0.112299s
Success
function-ptr.cSuccessNone0.049186s0.091523s
Success
getegid_syscall.cSuccessNone0.054137s0.188940s
Success
getgid_syscall.cSuccessNone0.054769s0.193354s
Success
getpid.cSuccessNone0.047792s0.087743s
Success
getpid_syscall.cSuccessNone0.058443s0.204678s
Success
getppid.cSuccessNone0.054551s0.100152s
Success
getppid_syscall.cSuccessNone0.056920s0.168705s
Success
getuid.cSuccessNone0.054130s0.096000s
Success
getuid_syscall.cSuccessNone0.052657s0.137062s
Success
hello-arg.cSuccessNone0.046160s0.087121s
Success
hello.cSuccessNone0.045374s0.084567s
Success
longjmp.cSuccessNone0.047257s0.090356s
Success
mutex.cSuccessNone2.056364s2.104484s
Success
printf_deadlock_smoke.cSuccessNone0.061981s0.128518s
Success
printf_thread_test.cSuccessNone0.052092s0.106670s
Success
sem_forks.cSuccessNone0.057923s0.113333s
Success
setsid.cSuccessNone0.047906s0.087470s
Success
template.cSuccessNone0.054606s0.118975s
Success
test_exec_nofork.cSuccessNone0.052507s0.100417s
Success
test_unlink_open_file.cSuccessNone0.049486s0.088581s
Success
thread-guard.cSuccessNone0.051639s0.101705s
Success
thread-test.cSuccessNone0.049304s0.092714s
Success
thread.cSuccessNone0.049784s0.093380s
Success
thread_cageid_race.cSuccessNone0.050156s0.112988s
Success
tls_test.cSuccessNone0.052401s0.103481s
Success
uname.cSuccessNone0.049211s0.087232s
Success
wait.cSuccessNone2.051578s2.102456s
Success
waitpid_anychild.cSuccessNone0.053547s0.102069s
Success
waitpid_syscall.cSuccessNone1.054746s1.132254s
Success
waitpid_wnohang.cSuccessNone0.054531s0.102905s
Success
Signal Tests
alarm.cSuccessNone7.053923s7.128286s
Success
eintr_fork_signal.cSuccessNone1.055694s1.113123s
Success
kill.cSuccessNone1.054125s1.103859s
Success
setitimer.cSuccessNone7.053887s7.131063s
Success
sigalrm.cSuccessNone2.054206s2.110075s
Success
sigaltstack.cSuccessNone0.055369s0.106038s
Success
sigchld.cSuccessNone1.055244s1.102146s
Success
signal-fork.cSuccessNone4.055286s4.106164s
Success
signal-simple.cSuccessNone0.054579s0.099075s
Success
signal_SIGCHLD.cSuccessNone0.052765s0.104495s
Success
signal_fork.cSuccessNone0.052037s0.107093s
Success
signal_int_ignored.cSuccessNone2.054150s2.104265s
Success
signal_kill_cleanup.cSuccessNone1.052378s1.102196s
Success
signal_procmask.cSuccessNone0.049467s0.096841s
Success
signal_read_interrupt.cSuccessNone0.556985s0.610551s
Success
signal_recursive.cSuccessNone0.048945s0.100466s
Success
signal_sa_mask.cSuccessNone0.049257s0.093785s
Success
signal_select_interrupt.cSuccessNone0.557683s0.611973s
Success
signal_write_interrupt.cSuccessNone1.056665s1.112562s
Success
sigpipe.cSuccessNone1.056204s1.110255s
Success
sigprocmask.cSuccessNone1.054112s1.102686s
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.046247s0.088585s
Success
Memory Tests
mmap-negative1.cSuccessNone0.141793s0.100472s
Success
mmap-negative2.cSuccessNone0.121352s0.098919s
Success
Signal Tests
signal_resethand.cSuccessNone1.053771s1.102103s
Success

@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:

libcpp harness

Libc++ integration report

Builds with full lind_compile_cpp (wasm-opt + precompile), runs lind_run on the .cwasm, and checks for LIBCPP_SORT_OK 1 2 3 on a line of stdout.

MetricValue
Total1
Success1
Failures0
Compile failures0
Runtime failures0
Output mismatch0
Timeouts0

Cases

TestStatusError typeOutput
tests/unit-tests/cpp/hello.cppSuccess
=== compile ===
OK: /tests/unit-tests/cpp/hello.cpp.cwasm

OK: /tests/unit-tests/cpp/hello.cpp.cwasm

=== run (exit 0) ===
LIBCPP_SORT_OK 1 2 3

Verified: 'LIBCPP_SORT_OK 1 2 3' present in output.
Artifact: tests/unit-tests/cpp/hello.cpp.cwasm

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.055365s4.420681s
Success
thread.cSuccessNone0.046079s4.413302s
Success
tls_test.cSuccessNone0.068238s4.444295s
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.046120s0.136857s
Success
chdir_getcwd.cSuccessNone0.045945s0.092255s
Success
chmod.cSuccessNone0.052336s0.098761s
Success
clock_gettime_highlevel.cSuccessNone0.116811s0.291574s
Success
clock_gettime_simple.cSuccessNone0.040728s0.081918s
Success
cloexec.cSuccessNone0.050110s0.101083s
Success
close.cSuccessNone0.057250s0.113657s
Success
creat_access.cSuccessNone0.049833s0.092238s
Success
doubleclose.cSuccessNone0.041204s0.079766s
Success
dup.cSuccessNone0.042020s0.091141s
Success
dup2.cSuccessNone0.047580s0.091579s
Success
dup3.cSuccessNone0.045534s0.091890s
Success
dupwrite.cSuccessNone0.049272s0.089577s
Success
etc_conf.cSuccessNone0.044383s0.096962s
Success
fchdir.cSuccessNone0.053097s0.101170s
Success
fchmod.cSuccessNone0.050511s0.098925s
Success
fcntl.cSuccessNone0.048446s0.100154s
Success
fdatasync.cSuccessNone0.048235s0.089147s
Success
filetest.cSuccessNone0.049108s0.088276s
Success
filetest1000.cSuccessNone0.056482s0.102202s
Success
flock.cSuccessNone0.058752s0.121567s
Success
fstat.cSuccessNone0.051318s0.098547s
Success
fstatfs.cSuccessNone0.043784s0.085047s
Success
fsync.cSuccessNone0.047206s0.088154s
Success
ftruncate.cSuccessNone0.053343s0.207105s
Success
getcwd.cSuccessNone0.045252s0.085532s
Success
getpgid.cSuccessNone0.043070s0.081462s
Success
getrandom.cSuccessNone0.049613s0.095758s
Success
ioctl.cSuccessNone0.051532s0.096170s
Success
link.cSuccessNone0.053495s0.144700s
Success
locale_test.cSuccessNone0.062968s0.589351s
Success
lseek.cSuccessNone0.053744s0.201011s
Success
lstat.cSuccessNone0.056020s0.107679s
Success
mkdir_rmdir.cSuccessNone0.050264s0.091631s
Success
mkfifo_test.cSuccessNone0.054459s0.128928s
Success
mknod.cSuccessNone0.047848s0.100077s
Success
nocancel_io.cSuccessNone0.053747s0.123486s
Success
open.cSuccessNone0.043897s0.082249s
Success
openat.cSuccessNone0.044624s0.088888s
Success
path_conversion_safety.cSuccessNone0.053810s0.118470s
Success
ppoll.cSuccessNone0.053238s0.103427s
Success
pread_pwrite.cSuccessNone0.047478s0.099715s
Success
preadv_pwritev.cSuccessNone0.051420s0.106187s
Success
printf.cSuccessNone0.041246s0.078382s
Success
prlimit64.cSuccessNone0.043200s0.084798s
Success
read.cSuccessNone0.050284s0.097992s
Success
readbytes.cSuccessNone0.045313s0.086087s
Success
readdir_basic.cSuccessNone0.053580s0.108788s
Success
readlink.cSuccessNone0.051246s0.098438s
Success
readlinkat.cSuccessNone0.052667s0.103306s
Success
readv_writev_test.cSuccessNone0.053959s0.104038s
Success
rename.cSuccessNone0.052299s0.095250s
Success
sc-writev.cSuccessNone0.048808s0.091628s
Success
stat.cSuccessNone0.050304s0.095670s
Success
statfs.cSuccessNone0.043455s0.087476s
Success
symlink.cSuccessNone0.051715s0.123625s
Success
sync_file_range.cSuccessNone0.048438s0.090374s
Success
timespec_time_t_compat.cSuccessNone0.046707s0.085708s
Success
truncate.cSuccessNone0.051011s0.102215s
Success
unlink.cSuccessNone0.051719s0.134988s
Success
unlinkat.cSuccessNone0.050987s0.109222s
Success
write.cSuccessNone0.042853s0.078952s
Success
writeloop.cSuccessNone0.051909s0.091069s
Success
writepartial.cSuccessNone0.051610s0.088244s
Success
writev.cSuccessNone0.050906s0.100535s
Success
Math Tests
math_link_smoke.cSuccessNone0.053896s0.088661s
Success
math_tests.cSuccessNone0.060351s0.107721s
Success
Memory Tests
brk.cSuccessNone0.047842s0.090644s
Success
fork_large_memory.cSuccessNone0.080832s0.333450s
Success
malloc.cSuccessNone0.046015s0.082283s
Success
malloc_large.cSuccessNone0.045940s0.088431s
Success
memcpy.cSuccessNone0.046652s0.085333s
Success
memory_error_test.cSuccessNone0.052493s0.124949s
Success
mmap.cSuccessNone0.043051s0.085493s
Success
mmap_aligned.cSuccessNone0.045739s0.101021s
Success
mmap_complicated.cSuccessNone0.050974s0.104650s
Success
mmap_file.cSuccessNone0.050363s0.093526s
Success
mmap_shared.cSuccessNone0.049673s0.098919s
Success
mmaptest.cSuccessNone0.046359s0.089152s
Success
mprotect.cSuccessNone0.043673s0.084432s
Success
mprotect_boundary.cSuccessNone0.043908s0.099390s
Success
mprotect_end_region.cSuccessNone0.043590s0.090693s
Success
mprotect_middle_region.cSuccessNone0.042821s0.093268s
Success
mprotect_multiple_times.cSuccessNone0.044300s0.095317s
Success
mprotect_same_value.cSuccessNone0.044110s0.090284s
Success
mprotect_spanning_regions.cSuccessNone0.043812s0.106401s
Success
munmap_adjacent_shm.cSuccessNone0.046276s0.099928s
Success
sbrk.cSuccessNone0.045174s0.083975s
Success
segfault.cSuccessNone0.051698s0.108946s
Success
shm.cSuccessNone0.050426s0.103155s
Success
shmtest.cSuccessNone0.045900s0.092705s
Success
thread_malloc_sequential.cSuccessNone0.051958s0.112000s
Success
vtable.cSuccessNone0.057073s0.108050s
Success
Networking Tests
accept4.cSuccessNone0.054316s0.107540s
Success
dns_resolve_test.cSuccessNone0.048360s0.092267s
Success
dnstest.cSuccessNone0.050517s0.102827s
Success
epoll_edge_triggered.cSuccessNone0.207029s0.436290s
Success
epollcreate1.cSuccessNone0.051629s0.101768s
Success
error_handling_net.cSuccessNone0.061526s0.203111s
Success
getaddrinfo_test.cSuccessNone0.053500s0.134574s
Success
getaddrinfo_unspec.cSuccessNone0.052658s0.107562s
Success
gethostname.cSuccessNone0.043460s0.080391s
Success
getifaddrs.cSuccessNone0.051189s0.094226s
Success
getsockname.cSuccessNone0.057491s0.098554s
Success
getsockopt.cSuccessNone0.053026s0.146537s
Success
ipv6_basic.cSuccessNone0.055252s0.137389s
Success
makepipe.cSuccessNone0.042644s0.079066s
Success
nonblocking_eagain.cSuccessNone0.055271s0.151038s
Success
pipe.cSuccessNone0.054138s0.103319s
Success
pipe2.cSuccessNone0.052983s0.096208s
Success
pipeinput.cSuccessNone0.053106s0.110604s
Success
pipeinput2.cSuccessNone0.053423s0.113476s
Success
pipeonestring.cSuccessNone0.052620s0.112069s
Success
pipepong.cSuccessNone0.052478s0.113465s
Success
pipewrite.cSuccessNone0.046051s0.095108s
Success
poll.cSuccessNone0.050764s0.090933s
Success
recvfrom-sendto.cSuccessNone0.052310s0.101929s
Success
sendmsg_recvmsg_test.cSuccessNone0.051503s0.103173s
Success
serverclient.cSuccessNone0.050743s0.097805s
Success
shutdown.cSuccessNone0.052332s0.097962s
Success
shutdown_fork.cSuccessNone0.051346s0.101184s
Success
simple-select.cSuccessNone0.052344s0.113657s
Success
simple_epoll.cSuccessNone0.053560s0.097271s
Success
socket.cSuccessNone0.049939s0.091215s
Success
socket_cloexec.cSuccessNone0.048625s0.089678s
Success
socket_options_advanced.cSuccessNone0.057698s0.164592s
Success
socketepoll.cSuccessNone0.050462s0.091162s
Success
socketpair.cSuccessNone0.048572s0.096685s
Success
socketselect.cSuccessNone0.050695s0.096140s
Success
udp_send_recv.cSuccessNone0.157449s0.252522s
Success
uds-getsockname.cSuccessNone0.050013s0.091118s
Success
uds-nb-select.cSuccessNone2.060557s2.144314s
Success
uds-serverclient.cSuccessNone0.055025s0.120361s
Success
uds-socketselect.cSuccessNone0.050972s0.095807s
Success
writev_socket.cSuccessNone0.053623s0.132355s
Success
Process Tests
barrier_test.cSuccessNone0.049135s0.094753s
Success
chain_thread.cSuccessNone1.052057s1.104463s
Success
ctor_syscall_test.cSuccessNone0.040862s0.081363s
Success
cxa_atexit_test.cSuccessNone0.046952s0.085475s
Success
execve_shebang.cSuccessNone0.050227s0.091398s
Success
exit.cSuccessNone0.048570s0.085052s
Success
exit_failure.cSuccessNone0.051676s0.094153s
Success
exit_group_thread.cSuccessNone0.052199s0.100931s
Success
flockfile_test.cSuccessNone0.050828s0.102724s
Success
fork2malloc.cSuccessNone0.052134s0.100063s
Success
fork_select.cSuccessNone0.049993s0.103991s
Success
fork_simple.cSuccessNone0.048304s0.091868s
Success
fork_syscall.cSuccessNone0.054078s0.215185s
Success
fork_tls_ctype.cSuccessNone0.053266s0.119655s
Success
forkandopen.cSuccessNone0.053566s0.110146s
Success
forkdup.cSuccessNone0.057059s0.102755s
Success
forkexecuid.cSuccessNone0.049727s0.107030s
Success
forkexecv-arg.cSuccessNone0.051322s0.096220s
Success
forkexecv.cSuccessNone0.049927s0.092847s
Success
forkfiles.cSuccessNone0.051277s0.102536s
Success
forkmalloc.cSuccessNone0.052667s0.097239s
Success
forknodup.cSuccessNone0.051930s0.106121s
Success
function-ptr.cSuccessNone0.044873s0.085764s
Success
getegid_syscall.cSuccessNone0.050619s0.182150s
Success
getgid_syscall.cSuccessNone0.052135s0.188312s
Success
getpid.cSuccessNone0.042859s0.081549s
Success
getpid_syscall.cSuccessNone0.054122s0.203287s
Success
getppid.cSuccessNone0.050908s0.094748s
Success
getppid_syscall.cSuccessNone0.055128s0.163527s
Success
getuid.cSuccessNone0.050284s0.090943s
Success
getuid_syscall.cSuccessNone0.050904s0.130931s
Success
hello-arg.cSuccessNone0.041600s0.081078s
Success
hello.cSuccessNone0.040922s0.077195s
Success
longjmp.cSuccessNone0.042923s0.082421s
Success
mutex.cSuccessNone2.054003s2.099328s
Success
printf_deadlock_smoke.cSuccessNone0.059528s0.123254s
Success
printf_thread_test.cSuccessNone0.048834s0.099396s
Success
sem_forks.cSuccessNone0.053469s0.108215s
Success
setsid.cSuccessNone0.046074s0.083746s
Success
template.cSuccessNone0.049810s0.111650s
Success
test_exec_nofork.cSuccessNone0.051825s0.098206s
Success
test_unlink_open_file.cSuccessNone0.046373s0.084624s
Success
thread-guard.cSuccessNone0.047944s0.094655s
Success
thread-test.cSuccessNone0.045582s0.087117s
Success
thread.cSuccessNone0.047664s0.089369s
Success
thread_cageid_race.cSuccessNone0.047626s0.108718s
Success
tls_test.cSuccessNone0.048119s0.098312s
Success
uname.cSuccessNone0.044347s0.081634s
Success
wait.cSuccessNone2.047987s2.094709s
Success
waitpid_anychild.cSuccessNone0.050918s0.095988s
Success
waitpid_syscall.cSuccessNone1.050737s1.125281s
Success
waitpid_wnohang.cSuccessNone0.052667s0.099231s
Success
Signal Tests
alarm.cSuccessNone7.050354s7.118836s
Success
eintr_fork_signal.cSuccessNone1.052324s1.108779s
Success
kill.cSuccessNone1.050019s1.099816s
Success
setitimer.cSuccessNone7.050458s7.127711s
Success
sigalrm.cSuccessNone2.050383s2.106815s
Success
sigaltstack.cSuccessNone0.052826s0.101480s
Success
sigchld.cSuccessNone1.051985s1.096881s
Success
signal-fork.cSuccessNone4.052138s4.101847s
Success
signal-simple.cSuccessNone0.052013s0.093092s
Success
signal_SIGCHLD.cSuccessNone0.048338s0.096398s
Success
signal_fork.cSuccessNone0.051288s0.100237s
Success
signal_int_ignored.cSuccessNone2.050282s2.102636s
Success
signal_kill_cleanup.cSuccessNone1.048663s1.095895s
Success
signal_procmask.cSuccessNone0.045099s0.091158s
Success
signal_read_interrupt.cSuccessNone0.555194s0.607480s
Success
signal_recursive.cSuccessNone0.045684s0.092873s
Success
signal_sa_mask.cSuccessNone0.044600s0.086579s
Success
signal_select_interrupt.cSuccessNone0.554759s0.606107s
Success
signal_write_interrupt.cSuccessNone1.053032s1.108281s
Success
sigpipe.cSuccessNone1.053324s1.104790s
Success
sigprocmask.cSuccessNone1.050450s1.096986s
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.042946s0.081925s
Success
Memory Tests
mmap-negative1.cSuccessNone0.125411s0.085057s
Success
mmap-negative2.cSuccessNone0.119593s0.096931s
Success
Signal Tests
signal_resethand.cSuccessNone1.051894s1.098628s
Success

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants