Skip to content

tests/benchmarks: writing and running cage-rtt benchmarks#830

Open
stupendoussuperpowers wants to merge 4 commits intomainfrom
regular-benches
Open

tests/benchmarks: writing and running cage-rtt benchmarks#830
stupendoussuperpowers wants to merge 4 commits intomainfrom
regular-benches

Conversation

@stupendoussuperpowers
Copy link
Copy Markdown
Contributor

The previous data measured and reported in #718 was done for the most part with a hacky and temporary script that needed manual intervention at various points.

This PR adds all the tests used in the Performance Tracker (+ IPC tests) with a runner.

Changes:

  • tests/benchmark folder which contains source code for benchmarking tests
  • benchrunner.py to compile, run, and aggregate the results to either print to the terminal or store as a json
  • README.md detailing how these tests are run, and how to add new tests

@stupendoussuperpowers stupendoussuperpowers marked this pull request as ready for review February 25, 2026 20:49
@github-actions
Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases175
Number of Successes175
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.051376s4.309750s
Success
chdir_getcwd.cSuccessNone0.051542s4.315442s
Success
chmod.cSuccessNone0.057213s4.341979s
Success
clock_gettime_highlevel.cSuccessNone0.123341s4.494656s
Success
clock_gettime_simple.cSuccessNone0.046443s4.253454s
Success
cloexec.cSuccessNone0.056388s3.941315s
Success
close.cSuccessNone0.064122s4.303483s
Success
creat_access.cSuccessNone0.055215s4.292247s
Success
doubleclose.cSuccessNone0.046408s3.883224s
Success
dup.cSuccessNone0.046765s4.277773s
Success
dup2.cSuccessNone0.051783s3.866223s
Success
dup3.cSuccessNone0.051253s4.301317s
Success
dupwrite.cSuccessNone0.055011s3.871180s
Success
etc_conf.cSuccessNone0.049287s4.285411s
Success
fchdir.cSuccessNone0.058137s4.346867s
Success
fchmod.cSuccessNone0.060121s4.269695s
Success
fcntl.cSuccessNone0.052871s4.305450s
Success
fdatasync.cSuccessNone0.055344s4.335323s
Success
filetest.cSuccessNone0.054007s3.905939s
Success
filetest1000.cSuccessNone0.064589s3.904874s
Success
flock.cSuccessNone0.061156s4.385464s
Success
fstat.cSuccessNone0.056222s4.327141s
Success
fstatfs.cSuccessNone0.048632s4.284676s
Success
fsync.cSuccessNone0.052217s4.264743s
Success
ftruncate.cSuccessNone0.058890s4.325780s
Success
getcwd.cSuccessNone0.049704s4.264771s
Success
getrandom.cSuccessNone0.052195s4.273307s
Success
ioctl.cSuccessNone0.059613s4.283957s
Success
link.cSuccessNone0.057761s4.346142s
Success
locale_test.cSuccessNone0.069523s6.166866s
Success
lseek.cSuccessNone0.059592s4.395687s
Success
mkdir_rmdir.cSuccessNone0.053779s4.302715s
Success
nocancel_io.cSuccessNone0.058604s5.668231s
Success
open.cSuccessNone0.049474s4.281654s
Success
pread_pwrite.cSuccessNone0.052720s4.317823s
Success
printf.cSuccessNone0.045205s3.857765s
Success
read.cSuccessNone0.055274s4.276064s
Success
readbytes.cSuccessNone0.050546s3.914739s
Success
readlink.cSuccessNone0.053327s4.307764s
Success
readlinkat.cSuccessNone0.055966s4.295975s
Success
rename.cSuccessNone0.057291s4.304775s
Success
sc-writev.cSuccessNone0.051062s4.256172s
Success
stat.cSuccessNone0.056667s4.292882s
Success
statfs.cSuccessNone0.049703s4.299776s
Success
sync_file_range.cSuccessNone0.051274s4.250252s
Success
truncate.cSuccessNone0.055780s4.269574s
Success
unlink.cSuccessNone0.056564s4.316666s
Success
unlinkat.cSuccessNone0.055501s4.318297s
Success
write.cSuccessNone0.047706s3.892574s
Success
writeloop.cSuccessNone0.056657s3.888742s
Success
writepartial.cSuccessNone0.053702s3.874177s
Success
writev.cSuccessNone0.054664s4.296973s
Success
Math Tests
math_link_smoke.cSuccessNone0.057823s3.909182s
Success
math_tests.cSuccessNone0.063420s4.099666s
Success
Memory Tests
brk.cSuccessNone0.051974s4.267500s
Success
malloc.cSuccessNone0.050478s3.904940s
Success
malloc_large.cSuccessNone0.052417s4.304617s
Success
memcpy.cSuccessNone0.049710s3.895597s
Success
memory_error_test.cSuccessNone0.056810s4.309922s
Success
mmap.cSuccessNone0.046625s4.309863s
Success
mmap_aligned.cSuccessNone0.048636s4.276046s
Success
mmap_complicated.cSuccessNone0.054562s4.321226s
Success
mmap_file.cSuccessNone0.054582s4.295709s
Success
mmap_shared.cSuccessNone0.052891s4.346582s
Success
mmaptest.cSuccessNone0.050632s4.312473s
Success
mprotect.cSuccessNone0.048925s4.302857s
Success
mprotect_boundary.cSuccessNone0.049629s4.289062s
Success
mprotect_end_region.cSuccessNone0.049169s4.299611s
Success
mprotect_middle_region.cSuccessNone0.048045s4.282813s
Success
mprotect_multiple_times.cSuccessNone0.046797s4.281942s
Success
mprotect_same_value.cSuccessNone0.048013s4.325825s
Success
mprotect_spanning_regions.cSuccessNone0.048572s4.325326s
Success
sbrk.cSuccessNone0.051068s4.336329s
Success
segfault.cSuccessNone0.055427s4.384393s
Success
shm.cSuccessNone0.053753s4.339349s
Success
shmtest.cSuccessNone0.049547s4.289561s
Success
tcache_test.cSuccessNone0.059395s4.521039s
Success
vtable.cSuccessNone0.062299s3.890894s
Success
Networking Tests
dnstest.cSuccessNone0.058080s4.375202s
Success
epollcreate1.cSuccessNone0.058098s4.335811s
Success
error_handling_net.cSuccessNone0.062857s4.399948s
Success
getaddrinfo_test.cSuccessNone0.061546s6.233310s
Success
gethostname.cSuccessNone0.050122s3.942508s
Success
getsockname.cSuccessNone0.058698s4.331633s
Success
getsockopt.cSuccessNone0.059250s4.316435s
Success
makepipe.cSuccessNone0.048122s3.865389s
Success
nonblocking_eagain.cSuccessNone0.060681s4.471697s
Success
pipe.cSuccessNone0.057709s4.451476s
Success
pipe2.cSuccessNone0.058461s4.304701s
Success
pipeinput.cSuccessNone0.059336s4.394571s
Success
pipeinput2.cSuccessNone0.057787s4.355922s
Success
pipeonestring.cSuccessNone0.061385s4.400580s
Success
pipepong.cSuccessNone0.059783s4.518458s
Success
pipewrite.cSuccessNone0.053521s4.309235s
Success
poll.cSuccessNone0.058436s4.317255s
Success
recvfrom-sendto.cSuccessNone0.060024s4.442823s
Success
serverclient.cSuccessNone0.056627s3.934732s
Success
shutdown.cSuccessNone0.060680s4.007536s
Success
shutdown_fork.cSuccessNone0.059993s4.487643s
Success
simple-select.cSuccessNone0.058824s4.377285s
Success
simple_epoll.cSuccessNone0.060700s4.484766s
Success
socket.cSuccessNone0.054550s3.981447s
Success
socket_cloexec.cSuccessNone0.054435s4.286214s
Success
socket_options_advanced.cSuccessNone0.064096s4.557711s
Success
socketepoll.cSuccessNone0.056850s4.012695s
Success
socketpair.cSuccessNone0.054983s4.402279s
Success
socketselect.cSuccessNone0.056067s4.310167s
Success
tcp_connect_single.cSuccessNone0.059368s4.458931s
Success
uds-getsockname.cSuccessNone0.058771s4.320737s
Success
uds-socketselect.cSuccessNone0.056251s3.931161s
Success
writev_socket.cSuccessNone0.060484s4.461395s
Success
Process Tests
barrier_test.cSuccessNone0.053562s4.430019s
Success
chain_thread.cSuccessNone1.055980s5.500045s
Success
cxa_atexit_test.cSuccessNone0.051831s3.931220s
Success
exit.cSuccessNone0.052853s3.893552s
Success
flockfile_test.cSuccessNone0.055503s4.535212s
Success
fork2malloc.cSuccessNone0.056713s4.356469s
Success
fork_select.cSuccessNone0.055081s4.372405s
Success
fork_simple.cSuccessNone0.051338s4.288504s
Success
fork_syscall.cSuccessNone0.059846s4.383002s
Success
forkandopen.cSuccessNone0.056918s4.347030s
Success
forkdup.cSuccessNone0.057530s3.972175s
Success
forkexecuid.cSuccessNone0.054239s4.348197s
Success
forkexecv-arg.cSuccessNone0.055375s4.330228s
Success
forkexecv.cSuccessNone0.053005s4.331308s
Success
forkfiles.cSuccessNone0.057332s4.384043s
Success
forkmalloc.cSuccessNone0.065207s4.355463s
Success
forknodup.cSuccessNone0.058681s4.336307s
Success
function-ptr.cSuccessNone0.049458s4.231977s
Success
getegid_syscall.cSuccessNone0.055772s4.371919s
Success
getgid_syscall.cSuccessNone0.056887s4.376755s
Success
getpid.cSuccessNone0.048635s4.285936s
Success
getpid_syscall.cSuccessNone0.057171s4.372612s
Success
getppid.cSuccessNone0.055193s4.314129s
Success
getppid_syscall.cSuccessNone0.058948s4.360409s
Success
getuid.cSuccessNone0.055043s4.252707s
Success
getuid_syscall.cSuccessNone0.054931s4.384159s
Success
hello-arg.cSuccessNone0.045114s3.898676s
Success
hello.cSuccessNone0.045757s3.897409s
Success
longjmp.cSuccessNone0.046927s3.952789s
Success
mutex.cSuccessNone2.060580s6.612357s
Success
printf_deadlock_smoke.cSuccessNone0.063682s4.611340s
Success
printf_thread_test.cSuccessNone0.052931s4.486401s
Success
sem_forks.cSuccessNone0.059204s4.366409s
Success
setsid.cSuccessNone0.048299s3.911967s
Success
template.cSuccessNone0.055420s4.390114s
Success
test_exec_nofork.cSuccessNone0.056784s4.318592s
Success
test_unlink_open_file.cSuccessNone0.049273s3.882671s
Success
thread-test.cSuccessNone0.050719s4.449107s
Success
thread.cSuccessNone0.049083s4.424608s
Success
thread_cageid_race.cSuccessNone0.050800s4.440526s
Success
tls_test.cSuccessNone0.053068s4.443617s
Success
uname.cSuccessNone0.049182s4.265521s
Success
wait.cSuccessNone2.052789s5.965948s
Success
waitpid_anychild.cSuccessNone0.055196s4.327549s
Success
waitpid_syscall.cSuccessNone1.056354s5.332715s
Success
waitpid_wnohang.cSuccessNone0.058426s4.003304s
Success
Signal Tests
alarm.cSuccessNone7.057363s10.968676s
Success
setitimer.cSuccessNone7.057138s10.969651s
Success
sigalrm.cSuccessNone2.055511s5.940393s
Success
sigchld.cSuccessNone1.057985s5.009691s
Success
signal-fork.cSuccessNone4.057774s7.983102s
Success
signal-simple.cSuccessNone0.057904s3.905188s
Success
signal.cSuccessNone0.052777s3.992901s
Success
signal_SIGCHLD.cSuccessNone0.055374s4.359197s
Success
signal_fork.cSuccessNone0.055583s4.392467s
Success
signal_int_ignored.cSuccessNone2.057898s6.412638s
Success
signal_int_thread.cSuccessNone0.054950s4.516587s
Success
signal_longjmp.cSuccessNone0.053772s3.988734s
Success
signal_nodefer.cSuccessNone0.052368s3.901576s
Success
signal_procmask.cSuccessNone0.050216s4.353069s
Success
signal_recursive.cSuccessNone0.051582s4.008702s
Success
signal_sa_mask.cSuccessNone0.049860s3.916394s
Success
sigpipe.cSuccessNone1.058545s5.379976s
Success
sigprocmask.cSuccessNone1.056718s4.984374s
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.114343s4.522813s
Success
mmap-negative2.cSuccessNone0.169203s4.165960s
Success
Signal Tests
signal_resethand.cSuccessNone1.053609s3.984672s
Success

@Yaxuan-w
Copy link
Copy Markdown
Member

Do we have some example data with this benchmark suite?

@stupendoussuperpowers
Copy link
Copy Markdown
Contributor Author

It's in the README.

Sample outputs:

lind@232affd4dc4d:~/lind-wasm$ ./scripts/benchrunner.py fs_read imfs_grate.fs_read.grate
Running:  /home/lind/lind-wasm/tests/benchmarks/fs_read.c
Running:  /home/lind/lind-wasm/tests/benchmarks/imfs_grate.fs_read.grate
TEST  PARAM  LINUX (ns)  LIND (ns)    GRATE (ns)    ITERATIONS
----  -----  ----------  -----------  ------------  ----------
Read  1      240         451 (1.879)  1102 (4.592)  1000000
Read  1024   252         461 (1.829)  1102 (4.373)  1000000
Read  4096   267         475 (1.779)  1149 (4.303)  1000000
Read  10240  389         586 (1.506)  1348 (3.465)  1000
lind@232affd4dc4d:~/lind-wasm$ ./scripts/benchrunner.py -o result.json fs_read imfs_grate.fs_read.grate && jq . result.json
Running:  /home/lind/lind-wasm/tests/benchmarks/fs_read.c
Running:  /home/lind/lind-wasm/tests/benchmarks/imfs_grate.fs_read.grate
{
  "Read": {
    "1": {
      "grate": "1043",
      "lind": "448",
      "linux": "237",
      "loops": "1000000"
    },
    "1024": {
      "grate": "1038",
      "lind": "457",
      "linux": "250",
      "loops": "1000000"
    },
    "4096": {
      "grate": "1088",
      "lind": "469",
      "linux": "265",
      "loops": "1000000"
    },
    "10240": {
      "grate": "1273",
      "lind": "712",
      "linux": "383",
      "loops": "1000"
    }
  }
}

@rennergade
Copy link
Copy Markdown
Contributor

I think the grate benchmarks are using the wrong register_handler API post #798

Comment thread scripts/benchrunner.py
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

  • collect_tests globs * without filtering by .c suffix — will try to compile README.md, imfs.h, etc. and os._exit(1)
  • Bare except: catches KeyboardInterrupt/SystemExit — should be except Exception:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

this always reports failure?

@stupendoussuperpowers
Copy link
Copy Markdown
Contributor Author

As discussed with @rennergade, instead of having grates duplicates in this benchmarks folder, I'll update the runner to just fetch them from the example grates repo like a quasi-package manager of sorts.

@stupendoussuperpowers
Copy link
Copy Markdown
Contributor Author

Updated this to use the example grates repo to source grates. Added a PR to example grates repo as well to make sure it's set up to be used like that.

Also update the test runner script for some better error handling (e.g. skip if compilation/run fails, print debug logs, etc.)

@github-actions
Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases178
Number of Successes177
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 Failure1
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.051215s4.241555s
Success
chdir_getcwd.cSuccessNone0.050358s4.284176s
Success
chmod.cSuccessNone0.056467s4.248850s
Success
clock_gettime_highlevel.cSuccessNone0.137964s4.475244s
Success
clock_gettime_simple.cSuccessNone0.044637s4.212982s
Success
cloexec.cSuccessNone0.054218s3.905294s
Success
close.cSuccessNone0.063108s4.270354s
Success
creat_access.cSuccessNone0.053262s4.260227s
Success
doubleclose.cSuccessNone0.045080s3.838087s
Success
dup.cSuccessNone0.045983s4.215774s
Success
dup2.cSuccessNone0.052281s3.867649s
Success
dup3.cSuccessNone0.050103s4.259321s
Success
dupwrite.cSuccessNone0.052515s3.861401s
Success
etc_conf.cSuccessNone0.048513s4.217811s
Success
fchdir.cSuccessNone0.055463s4.300739s
Success
fchmod.cSuccessNone0.058042s4.246610s
Success
fcntl.cSuccessNone0.052523s4.245825s
Success
fdatasync.cSuccessNone0.051764s4.225472s
Success
filetest.cSuccessNone0.053220s3.890633s
Success
filetest1000.cSuccessNone0.061621s3.873681s
Success
flock.cSuccessNone0.061502s4.349312s
Success
fstat.cSuccessNone0.054510s4.244183s
Success
fstatfs.cSuccessNone0.047467s4.219891s
Success
fsync.cSuccessNone0.052195s4.237670s
Success
ftruncate.cSuccessNone0.056964s4.300703s
Success
getcwd.cSuccessNone0.049705s4.282044s
Success
getrandom.cSuccessNone0.052393s4.231980s
Success
ioctl.cSuccessNone0.057491s4.250639s
Success
link.cSuccessNone0.056650s4.272744s
Success
locale_test.cSuccessNone0.066282s6.028981s
Success
lseek.cSuccessNone0.057538s4.292308s
Success
mkdir_rmdir.cSuccessNone0.054884s4.247407s
Success
nocancel_io.cSuccessNone0.056509s5.588637s
Success
open.cSuccessNone0.046953s4.245590s
Success
path_conversion_safety.cSuccessNone0.058856s4.245880s
Success
pread_pwrite.cSuccessNone0.051478s4.256459s
Success
printf.cSuccessNone0.044964s3.839954s
Success
read.cSuccessNone0.052933s4.213505s
Success
readbytes.cSuccessNone0.049298s3.837853s
Success
readlink.cSuccessNone0.053133s4.275768s
Success
readlinkat.cSuccessNone0.054353s4.236779s
Success
rename.cSuccessNone0.056021s4.259794s
Success
sc-writev.cSuccessNone0.052280s4.249774s
Success
stat.cSuccessNone0.054904s4.283475s
Success
statfs.cSuccessNone0.047785s4.243367s
Success
sync_file_range.cSuccessNone0.050576s4.235140s
Success
truncate.cSuccessNone0.055991s4.292699s
Success
unlink.cSuccessNone0.055588s4.273939s
Success
unlinkat.cSuccessNone0.054512s4.272851s
Success
write.cSuccessNone0.046584s3.824632s
Success
writeloop.cSuccessNone0.055341s3.852543s
Success
writepartial.cSuccessNone0.053603s3.843389s
Success
writev.cSuccessNone0.055485s4.274252s
Success
Math Tests
math_link_smoke.cSuccessNone0.056861s3.866441s
Success
math_tests.cSuccessNone0.060538s4.039939s
Success
Memory Tests
brk.cSuccessNone0.050571s4.244865s
Success
fork_large_memory.cSuccessNone0.088717s4.561450s
Success
malloc.cSuccessNone0.048118s3.840457s
Success
malloc_large.cSuccessNone0.050190s4.245552s
Success
memcpy.cSuccessNone0.047394s3.820702s
Success
memory_error_test.cSuccessNone0.056201s4.253606s
Success
mmap.cSuccessNone0.045404s4.218787s
Success
mmap_aligned.cSuccessNone0.048664s4.237926s
Success
mmap_complicated.cSuccessNone0.053376s4.273137s
Success
mmap_file.cSuccessNone0.052945s4.242798s
Success
mmap_shared.cSuccessNone0.051727s4.275509s
Success
mmaptest.cSuccessNone0.049524s4.228658s
Success
mprotect.cSuccessNone0.047394s4.225113s
Success
mprotect_boundary.cSuccessNone0.047609s4.221612s
Success
mprotect_end_region.cSuccessNone0.045992s4.213787s
Success
mprotect_middle_region.cSuccessNone0.046305s4.223900s
Success
mprotect_multiple_times.cSuccessNone0.046325s4.216432s
Success
mprotect_same_value.cSuccessNone0.045986s4.266195s
Success
mprotect_spanning_regions.cSuccessNone0.048079s4.265828s
Success
sbrk.cSuccessNone0.049227s4.256697s
Success
segfault.cSuccessNone0.054426s4.275787s
Success
shm.cSuccessNone0.052897s4.308637s
Success
shmtest.cSuccessNone0.048075s4.239335s
Success
tcache_test.cSuccessNone0.056732s4.390035s
Success
vtable.cSuccessNone0.060784s3.892309s
Success
Networking Tests
dnstest.cSuccessNone0.057563s4.315229s
Success
epollcreate1.cSuccessNone0.054808s4.335057s
Success
error_handling_net.cSuccessNone0.061089s4.311039s
Success
getaddrinfo_test.cSuccessNone0.057938s6.020502s
Success
gethostname.cSuccessNone0.050684s3.922892s
Success
getsockname.cSuccessNone0.058506s4.538924s
Success
getsockopt.cSuccessNone0.061895s4.509101s
Success
makepipe.cSuccessNone0.049854s4.162351s
Success
nonblocking_eagain.cSuccessNone0.062901s4.514700s
Success
pipe.cSuccessNone0.060193s4.606961s
Success
pipe2.cSuccessNone0.055776s4.290271s
Success
pipeinput.cSuccessNone0.060016s4.296727s
Success
pipeinput2.cSuccessNone0.061670s4.423593s
Success
pipeonestring.cSuccessNone0.056685s4.313413s
Success
pipepong.cSuccessNone0.060874s4.564436s
Success
pipewrite.cSuccessNone0.049373s4.214122s
Success
poll.cSuccessNone0.057764s4.374373s
Success
recvfrom-sendto.cSuccessNone0.059881s4.511169s
Success
serverclient.cSuccessNone0.055832s3.861497s
Success
shutdown.cSuccessNone0.061594s4.183320s
Success
shutdown_fork.cSuccessNone0.058477s4.500812s
Success
simple-select.cSuccessNone0.059168s4.448293s
Success
simple_epoll.cSuccessNone0.059096s4.507729s
Success
socket.cSuccessNone0.054900s4.094318s
Success
socket_cloexec.cSuccessNone0.055971s4.415296s
Success
socket_options_advanced.cSuccessNone0.066115s4.576094s
Success
socketepoll.cSuccessNone0.066826s4.057857s
Success
socketpair.cSuccessNone0.053297s4.294829s
Success
socketselect.cSuccessNone0.059303s4.393931s
Success
tcp_connect_single.cSuccessNone0.059970s4.510262s
Success
uds-getsockname.cSuccessNone0.057374s4.556280s
Success
uds-socketselect.cSuccessNone0.058163s3.993365s
Success
writev_socket.cSuccessNone0.061860s4.575170s
Success
Process Tests
barrier_test.cSuccessNone0.053702s4.458917s
Success
chain_thread.cSuccessNone1.057138s5.436120s
Success
cxa_atexit_test.cSuccessNone0.050202s3.881028s
Success
exit.cSuccessNone0.052577s3.838844s
Success
flockfile_test.cSuccessNone0.054403s4.439086s
Success
fork2malloc.cSuccessNone0.058175s4.571172s
Success
fork_select.cSuccessNone0.054425s4.310835s
Success
fork_simple.cSuccessNone0.052672s4.272315s
Success
fork_syscall.cSuccessNone0.058466s4.342116s
Success
fork_tls_ctype.cSuccessNone0.058004s4.364122s
Success
forkandopen.cSuccessNone0.056292s4.294325s
Success
forkdup.cSuccessNone0.056182s3.922130s
Success
forkexecuid.cSuccessNone0.054237s4.361275s
Success
forkexecv-arg.cSuccessNone0.052512s4.290145s
Success
forkexecv.cSuccessNone0.052796s4.355559s
Success
forkfiles.cSuccessNone0.055205s4.299859s
Success
forkmalloc.cSuccessNone0.067244s4.277017s
Success
forknodup.cSuccessNone0.055251s4.270548s
Success
function-ptr.cSuccessNone0.049619s4.211589s
Success
getegid_syscall.cSuccessNone0.054480s4.304871s
Success
getgid_syscall.cSuccessNone0.055916s4.349843s
Success
getpid.cSuccessNone0.047397s4.211177s
Success
getpid_syscall.cSuccessNone0.055833s4.308290s
Success
getppid.cSuccessNone0.053886s4.279850s
Success
getppid_syscall.cSuccessNone0.058669s4.322199s
Success
getuid.cSuccessNone0.078591s4.267331s
Success
getuid_syscall.cSuccessNone0.053502s4.355779s
Success
hello-arg.cSuccessNone0.046644s3.871425s
Success
hello.cSuccessNone0.045366s3.840639s
Success
longjmp.cSuccessNone0.048551s3.905944s
Success
mutex.cSuccessNone2.059684s6.511286s
Success
printf_deadlock_smoke.cSuccessNone0.062435s4.560102s
Success
printf_thread_test.cSuccessNone0.051974s4.436177s
Success
sem_forks.cSuccessNone0.058650s4.361078s
Success
setsid.cSuccessNone0.046156s3.865039s
Success
template.cSuccessNone0.055409s4.304368s
Success
test_exec_nofork.cSuccessNone0.052241s4.296013s
Success
test_unlink_open_file.cSuccessNone0.048985s3.852878s
Success
thread-test.cSuccessNone0.048569s4.427773s
Success
thread.cSuccessNone0.049324s4.414149s
Success
thread_cageid_race.cSuccessNone0.049248s4.375277s
Success
tls_test.cSuccessNone0.051210s4.416779s
Success
uname.cSuccessNone0.047549s4.230230s
Success
wait.cSuccessNone2.051217s5.922208s
Success
waitpid_anychild.cSuccessNone0.053846s4.311376s
Success
waitpid_syscall.cSuccessNone1.055462s5.293201s
Success
waitpid_wnohang.cSuccessNone0.055114s3.904288s
Success
Signal Tests
alarm.cSuccessNone7.053768s10.890783s
Success
setitimer.cSuccessNone7.054285s10.909847s
Success
sigalrm.cSuccessNone2.053855s5.873713s
Success
sigchld.cSuccessNone1.055852s4.918512s
Success
signal-fork.cSuccessNone4.055319s7.920261s
Success
signal-simple.cSuccessNone0.054678s3.888378s
Success
signal.cSuccessNone0.050789s3.918591s
Success
signal_SIGCHLD.cFailureLind_wasm_Segmentation_Fault0.052923s4.292378s
/tmp/wasmtest_artifacts_dvuwbv0r/signal_tests/deterministic/signal_SIGCHLD.c:36: int main(): Assertion `waited_pid >= 0' failed.
Error: failed to run main module

Caused by:
0: failed to invoke command default
1: wasm trap: wasm unreachable instruction executed

signal_fork.cSuccessNone0.050273s4.301151s
Success
signal_int_ignored.cSuccessNone2.054680s6.318835s
Success
signal_int_thread.cSuccessNone0.051442s4.431717s
Success
signal_longjmp.cSuccessNone0.051225s3.892453s
Success
signal_nodefer.cSuccessNone0.050980s3.866247s
Success
signal_procmask.cSuccessNone0.048792s4.238706s
Success
signal_recursive.cSuccessNone0.048689s3.847942s
Success
signal_sa_mask.cSuccessNone0.048131s3.853573s
Success
sigpipe.cSuccessNone1.054779s5.315314s
Success
sigprocmask.cSuccessNone1.053198s4.875343s
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.110927s4.271597s
Success
mmap-negative2.cSuccessNone0.157249s4.057885s
Success
Signal Tests
signal_resethand.cSuccessNone1.053553s3.918114s
Success

Comment thread tests/benchmarks/ipc_uds.c Outdated
// Child
if (pid == 0) {
close(sv[0]);
char buf[msg_size];
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

char buf[msg_size] is a VLA on the child stack in uds_dgram. For KiB(32) that's 32KB on the stack, which is fine, but in uds_stream (line 75) the parent uses malloc while the child in uds_dgram uses VLA. Inconsistent — the commented-out VLAs (// char buf[msg_size]) suggest this was partially migrated.

Comment thread tests/benchmarks/bench.c Outdated

// Emits one benchmark row in the format:
// <test>\t<param>\t<loops>\t<avg_ns>
inline void emit_result(char *test, int param, long long average, int loops) {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

emit_result is declared inline in the .c file but has external linkage via the header declaration. This can cause linker issues. Remove the inline keyword.

Comment thread scripts/benchrunner.py
Comment thread scripts/benchrunner.py Outdated

def run_lind(wasm_paths, res, platform):
"""Run lind-boot with one or more wasm paths."""
cmd = ["sudo", "lind-boot"] + wasm_paths
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

probably worth calling lind_run?

Comment thread scripts/benchrunner.py Outdated
return rel.name


def parse_output(res, output, platform):
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

parse_output silently swallows parse errors. param is stored as int key in the dict but JSON serialization will convert it to a string key. When reading back, param keys won't match. Consider using string keys consistently.

Comment thread scripts/benchrunner.py Outdated
run_native(native_path, res)
elif test.suffix == ".grate":
print("Running: ", test)
status = run_grate_test(test.with_suffix(""), res)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

run_grate_test returns None on success (no explicit return), so the if not status check on line 332 will always print "Failed to compile. Skipping." even on success.

Copy link
Copy Markdown
Contributor

@rennergade rennergade left a comment

Choose a reason for hiding this comment

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

added some more comments.

probably want a .gitignore

Should think about factoring out the imfs code

@github-actions
Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases181
Number of Successes181
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.049883s4.255971s
Success
chdir_getcwd.cSuccessNone0.049671s4.273245s
Success
chmod.cSuccessNone0.056526s4.273758s
Success
clock_gettime_highlevel.cSuccessNone0.121541s4.487728s
Success
clock_gettime_simple.cSuccessNone0.044392s4.222795s
Success
cloexec.cSuccessNone0.054804s3.887979s
Success
close.cSuccessNone0.063578s4.299435s
Success
creat_access.cSuccessNone0.053462s4.271693s
Success
doubleclose.cSuccessNone0.045744s3.851403s
Success
dup.cSuccessNone0.045894s4.229943s
Success
dup2.cSuccessNone0.051642s3.885313s
Success
dup3.cSuccessNone0.049758s4.265810s
Success
dupwrite.cSuccessNone0.053225s3.849482s
Success
etc_conf.cSuccessNone0.048272s4.251662s
Success
fchdir.cSuccessNone0.055813s4.282426s
Success
fchmod.cSuccessNone0.057840s4.248070s
Success
fcntl.cSuccessNone0.051993s4.253657s
Success
fdatasync.cSuccessNone0.053682s4.239468s
Success
filetest.cSuccessNone0.053283s3.919965s
Success
filetest1000.cSuccessNone0.061906s3.903694s
Success
flock.cSuccessNone0.060923s4.390709s
Success
fstat.cSuccessNone0.055430s4.245631s
Success
fstatfs.cSuccessNone0.047042s4.263786s
Success
fsync.cSuccessNone0.052055s4.231237s
Success
ftruncate.cSuccessNone0.057112s4.308717s
Success
getcwd.cSuccessNone0.049038s4.270326s
Success
getrandom.cSuccessNone0.052675s4.234325s
Success
ioctl.cSuccessNone0.059453s4.250372s
Success
link.cSuccessNone0.056495s4.284023s
Success
locale_test.cSuccessNone0.067924s6.077436s
Success
lseek.cSuccessNone0.058366s4.300786s
Success
mkdir_rmdir.cSuccessNone0.054301s4.282294s
Success
nocancel_io.cSuccessNone0.056907s5.608311s
Success
open.cSuccessNone0.047417s4.277586s
Success
path_conversion_safety.cSuccessNone0.059536s4.263676s
Success
pread_pwrite.cSuccessNone0.050482s4.245640s
Success
printf.cSuccessNone0.044453s3.851747s
Success
read.cSuccessNone0.053663s4.240298s
Success
readbytes.cSuccessNone0.049380s3.852579s
Success
readlink.cSuccessNone0.052930s4.261601s
Success
readlinkat.cSuccessNone0.055234s4.254136s
Success
rename.cSuccessNone0.055636s4.237701s
Success
sc-writev.cSuccessNone0.053756s4.238945s
Success
stat.cSuccessNone0.054536s4.258398s
Success
statfs.cSuccessNone0.047713s4.258514s
Success
sync_file_range.cSuccessNone0.051081s4.243787s
Success
truncate.cSuccessNone0.055027s4.268174s
Success
unlink.cSuccessNone0.055802s4.279087s
Success
unlinkat.cSuccessNone0.055988s4.272758s
Success
write.cSuccessNone0.046803s3.842337s
Success
writeloop.cSuccessNone0.055840s3.846723s
Success
writepartial.cSuccessNone0.053666s3.843923s
Success
writev.cSuccessNone0.056542s4.270107s
Success
Math Tests
math_link_smoke.cSuccessNone0.057356s3.880956s
Success
math_tests.cSuccessNone0.061710s4.053017s
Success
Memory Tests
brk.cSuccessNone0.051131s4.256069s
Success
fork_large_memory.cSuccessNone0.086977s4.535860s
Success
malloc.cSuccessNone0.048461s3.860005s
Success
malloc_large.cSuccessNone0.049659s4.215034s
Success
memcpy.cSuccessNone0.048295s3.878292s
Success
memory_error_test.cSuccessNone0.055270s4.285695s
Success
mmap.cSuccessNone0.044926s4.248879s
Success
mmap_aligned.cSuccessNone0.047908s4.251707s
Success
mmap_complicated.cSuccessNone0.053638s4.291339s
Success
mmap_file.cSuccessNone0.053224s4.241063s
Success
mmap_shared.cSuccessNone0.053954s4.283302s
Success
mmaptest.cSuccessNone0.049693s4.233844s
Success
mprotect.cSuccessNone0.047332s4.222650s
Success
mprotect_boundary.cSuccessNone0.047923s4.249026s
Success
mprotect_end_region.cSuccessNone0.046943s4.251126s
Success
mprotect_middle_region.cSuccessNone0.046461s4.244288s
Success
mprotect_multiple_times.cSuccessNone0.046692s4.243455s
Success
mprotect_same_value.cSuccessNone0.046560s4.231363s
Success
mprotect_spanning_regions.cSuccessNone0.047942s4.255257s
Success
sbrk.cSuccessNone0.049197s4.254680s
Success
segfault.cSuccessNone0.055212s4.305875s
Success
shm.cSuccessNone0.055730s4.323435s
Success
shmtest.cSuccessNone0.047932s4.244939s
Success
tcache_test.cSuccessNone0.058405s4.405861s
Success
vtable.cSuccessNone0.061257s3.900021s
Success
Networking Tests
dnstest.cSuccessNone0.053597s4.268424s
Success
epollcreate1.cSuccessNone0.054577s4.270193s
Success
error_handling_net.cSuccessNone0.061900s4.336664s
Success
getaddrinfo_test.cSuccessNone0.058638s6.042809s
Success
gethostname.cSuccessNone0.047820s3.856574s
Success
getifaddrs.cSuccessNone0.054803s4.346055s
Success
getsockname.cSuccessNone0.055426s4.260993s
Success
getsockopt.cSuccessNone0.057439s4.279077s
Success
makepipe.cSuccessNone0.047082s3.830493s
Success
nonblocking_eagain.cSuccessNone0.058091s4.310106s
Success
pipe.cSuccessNone0.056666s4.305657s
Success
pipe2.cSuccessNone0.055850s4.282216s
Success
pipeinput.cSuccessNone0.057037s4.331492s
Success
pipeinput2.cSuccessNone0.057254s4.306170s
Success
pipeonestring.cSuccessNone0.057197s4.284611s
Success
pipepong.cSuccessNone0.055968s4.314452s
Success
pipewrite.cSuccessNone0.050258s4.224140s
Success
poll.cSuccessNone0.054114s4.244229s
Success
recvfrom-sendto.cSuccessNone0.055261s4.275549s
Success
serverclient.cSuccessNone0.055845s3.863019s
Success
shutdown.cSuccessNone0.057386s3.898204s
Success
shutdown_fork.cSuccessNone0.055042s4.306603s
Success
simple-select.cSuccessNone0.056373s4.310490s
Success
simple_epoll.cSuccessNone0.055000s4.285310s
Success
socket.cSuccessNone0.053127s3.862127s
Success
socket_cloexec.cSuccessNone0.052793s4.251671s
Success
socket_options_advanced.cSuccessNone0.059468s4.294809s
Success
socketepoll.cSuccessNone0.054052s3.864091s
Success
socketpair.cSuccessNone0.053424s4.301650s
Success
socketselect.cSuccessNone0.052802s4.249920s
Success
tcp_connect_single.cSuccessNone0.055491s4.280470s
Success
uds-getsockname.cSuccessNone0.054427s4.244177s
Success
uds-nb-select.cSuccessNone2.061946s6.491690s
Success
uds-serverclient.cSuccessNone0.058789s4.335902s
Success
uds-socketselect.cSuccessNone0.054897s3.879407s
Success
writev_socket.cSuccessNone0.057721s4.280887s
Success
Process Tests
barrier_test.cSuccessNone0.053171s4.409519s
Success
chain_thread.cSuccessNone1.054711s5.422406s
Success
cxa_atexit_test.cSuccessNone0.049449s3.883193s
Success
exit.cSuccessNone0.051424s3.857483s
Success
flockfile_test.cSuccessNone0.054377s4.452900s
Success
fork2malloc.cSuccessNone0.055692s4.302769s
Success
fork_select.cSuccessNone0.054061s4.302898s
Success
fork_simple.cSuccessNone0.052019s4.292197s
Success
fork_syscall.cSuccessNone0.058471s4.365491s
Success
fork_tls_ctype.cSuccessNone0.057360s4.305876s
Success
forkandopen.cSuccessNone0.055015s4.300761s
Success
forkdup.cSuccessNone0.057175s3.941919s
Success
forkexecuid.cSuccessNone0.052772s4.313511s
Success
forkexecv-arg.cSuccessNone0.053511s4.324879s
Success
forkexecv.cSuccessNone0.054016s4.302273s
Success
forkfiles.cSuccessNone0.054893s4.295598s
Success
forkmalloc.cSuccessNone0.066667s4.356816s
Success
forknodup.cSuccessNone0.056382s4.329691s
Success
function-ptr.cSuccessNone0.050814s4.259281s
Success
getegid_syscall.cSuccessNone0.055170s4.335249s
Success
getgid_syscall.cSuccessNone0.056582s4.344549s
Success
getpid.cSuccessNone0.047526s4.237154s
Success
getpid_syscall.cSuccessNone0.056313s4.343628s
Success
getppid.cSuccessNone0.055799s4.315857s
Success
getppid_syscall.cSuccessNone0.057495s4.322524s
Success
getuid.cSuccessNone0.054820s4.249924s
Success
getuid_syscall.cSuccessNone0.054936s4.325148s
Success
hello-arg.cSuccessNone0.045490s3.865376s
Success
hello.cSuccessNone0.045885s3.865016s
Success
longjmp.cSuccessNone0.045817s3.871135s
Success
mutex.cSuccessNone2.060731s6.539301s
Success
printf_deadlock_smoke.cSuccessNone0.063366s4.584009s
Success
printf_thread_test.cSuccessNone0.052787s4.480025s
Success
sem_forks.cSuccessNone0.058170s4.337912s
Success
setsid.cSuccessNone0.046971s3.880033s
Success
template.cSuccessNone0.055128s4.306075s
Success
test_exec_nofork.cSuccessNone0.056345s4.294069s
Success
test_unlink_open_file.cSuccessNone0.049103s3.845941s
Success
thread-test.cSuccessNone0.049210s4.397661s
Success
thread.cSuccessNone0.048799s4.400254s
Success
thread_cageid_race.cSuccessNone0.050252s4.409334s
Success
tls_test.cSuccessNone0.052558s4.427233s
Success
uname.cSuccessNone0.046953s4.265760s
Success
wait.cSuccessNone2.051316s5.917942s
Success
waitpid_anychild.cSuccessNone0.054678s4.302743s
Success
waitpid_syscall.cSuccessNone1.056842s5.310527s
Success
waitpid_wnohang.cSuccessNone0.054797s3.926611s
Success
Signal Tests
alarm.cSuccessNone7.053938s10.910013s
Success
setitimer.cSuccessNone7.056008s10.948407s
Success
sigalrm.cSuccessNone2.054275s5.890882s
Success
sigchld.cSuccessNone1.056202s4.931360s
Success
signal-fork.cSuccessNone4.056188s7.962384s
Success
signal-simple.cSuccessNone0.055593s3.889680s
Success
signal.cSuccessNone0.050631s3.876886s
Success
signal_SIGCHLD.cSuccessNone0.052832s4.310232s
Success
signal_fork.cSuccessNone0.050193s4.351614s
Success
signal_int_ignored.cSuccessNone2.055231s6.326344s
Success
signal_int_thread.cSuccessNone0.051486s4.421180s
Success
signal_longjmp.cSuccessNone0.050851s3.899593s
Success
signal_nodefer.cSuccessNone0.050312s3.888846s
Success
signal_procmask.cSuccessNone0.048658s4.254767s
Success
signal_recursive.cSuccessNone0.048575s3.856879s
Success
signal_sa_mask.cSuccessNone0.047980s3.854231s
Success
sigpipe.cSuccessNone1.056670s5.311789s
Success
sigprocmask.cSuccessNone1.054999s4.917489s
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.111177s4.296470s
Success
mmap-negative2.cSuccessNone0.140269s4.082821s
Success
Signal Tests
signal_resethand.cSuccessNone1.053301s3.925089s
Success

@stupendoussuperpowers
Copy link
Copy Markdown
Contributor Author

Addressed all the comments. Not sure about the parse_output one, since it does have a try/except block which logs when the output is malformed along with the output.

rennergade
rennergade previously approved these changes Feb 27, 2026
@github-actions
Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

Unified Test Report

grate harness

MetricValue
Total4
Success4
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:

interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 3
[Cage|interpose-register] In cage 2, about to register handler for geteuid
[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 0 with fn ptr addr: 7021753225191620609
[Grate|interpose-register] Handling function ptr: 2 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Cage|interpose-register] PASS: geteuid ret = 10
[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:

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

STDERR:

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases183
Number of Successes183
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.050420s4.362895s
Success
chdir_getcwd.cSuccessNone0.051785s4.316862s
Success
chmod.cSuccessNone0.056472s4.326363s
Success
clock_gettime_highlevel.cSuccessNone0.122635s4.508445s
Success
clock_gettime_simple.cSuccessNone0.045116s4.323462s
Success
cloexec.cSuccessNone0.055678s3.972874s
Success
close.cSuccessNone0.063327s4.328669s
Success
creat_access.cSuccessNone0.055035s4.415010s
Success
doubleclose.cSuccessNone0.046119s3.919893s
Success
dup.cSuccessNone0.048180s4.307575s
Success
dup2.cSuccessNone0.052812s3.930020s
Success
dup3.cSuccessNone0.051301s4.353345s
Success
dupwrite.cSuccessNone0.054548s3.938741s
Success
etc_conf.cSuccessNone0.049033s4.324367s
Success
fchdir.cSuccessNone0.056550s4.322220s
Success
fchmod.cSuccessNone0.058301s4.354355s
Success
fcntl.cSuccessNone0.054681s4.385806s
Success
fdatasync.cSuccessNone0.053191s4.295426s
Success
filetest.cSuccessNone0.055567s3.941095s
Success
filetest1000.cSuccessNone0.064852s3.960650s
Success
flock.cSuccessNone0.062494s4.390426s
Success
fstat.cSuccessNone0.055663s4.280665s
Success
fstatfs.cSuccessNone0.049580s4.307798s
Success
fsync.cSuccessNone0.052708s4.322416s
Success
ftruncate.cSuccessNone0.059694s4.352454s
Success
getcwd.cSuccessNone0.050821s4.342113s
Success
getrandom.cSuccessNone0.054095s4.297369s
Success
ioctl.cSuccessNone0.059266s4.347778s
Success
link.cSuccessNone0.059182s4.374592s
Success
locale_test.cSuccessNone0.068248s6.122299s
Success
lseek.cSuccessNone0.058149s4.348306s
Success
mkdir_rmdir.cSuccessNone0.053621s4.311584s
Success
nocancel_io.cSuccessNone0.058292s5.708444s
Success
open.cSuccessNone0.049193s4.379470s
Success
path_conversion_safety.cSuccessNone0.059293s4.312162s
Success
pread_pwrite.cSuccessNone0.051885s4.347025s
Success
printf.cSuccessNone0.045624s3.908196s
Success
read.cSuccessNone0.055441s4.338156s
Success
readbytes.cSuccessNone0.050601s3.913506s
Success
readlink.cSuccessNone0.055769s4.392406s
Success
readlinkat.cSuccessNone0.056829s4.363303s
Success
readv_writev_test.cSuccessNone0.056777s4.350082s
Success
rename.cSuccessNone0.055245s4.345290s
Success
sc-writev.cSuccessNone0.052360s4.321729s
Success
stat.cSuccessNone0.055759s4.313792s
Success
statfs.cSuccessNone0.048627s4.360803s
Success
sync_file_range.cSuccessNone0.053079s4.326349s
Success
truncate.cSuccessNone0.056775s4.348302s
Success
unlink.cSuccessNone0.058238s4.411569s
Success
unlinkat.cSuccessNone0.057273s4.407273s
Success
write.cSuccessNone0.046402s3.890559s
Success
writeloop.cSuccessNone0.056872s3.916576s
Success
writepartial.cSuccessNone0.056859s3.930911s
Success
writev.cSuccessNone0.055891s4.350738s
Success
Math Tests
math_link_smoke.cSuccessNone0.058942s3.954075s
Success
math_tests.cSuccessNone0.062833s4.110742s
Success
Memory Tests
brk.cSuccessNone0.052575s4.334503s
Success
fork_large_memory.cSuccessNone0.092301s4.574421s
Success
malloc.cSuccessNone0.049849s3.931613s
Success
malloc_large.cSuccessNone0.051548s4.271990s
Success
memcpy.cSuccessNone0.050956s3.920986s
Success
memory_error_test.cSuccessNone0.056160s4.319127s
Success
mmap.cSuccessNone0.047617s4.335350s
Success
mmap_aligned.cSuccessNone0.049176s4.289427s
Success
mmap_complicated.cSuccessNone0.054635s4.335875s
Success
mmap_file.cSuccessNone0.056479s4.334834s
Success
mmap_shared.cSuccessNone0.053518s4.403659s
Success
mmaptest.cSuccessNone0.051453s4.304934s
Success
mprotect.cSuccessNone0.047680s4.315620s
Success
mprotect_boundary.cSuccessNone0.049350s4.332730s
Success
mprotect_end_region.cSuccessNone0.047961s4.320683s
Success
mprotect_middle_region.cSuccessNone0.048200s4.346200s
Success
mprotect_multiple_times.cSuccessNone0.048638s4.304900s
Success
mprotect_same_value.cSuccessNone0.046666s4.329703s
Success
mprotect_spanning_regions.cSuccessNone0.049602s4.316776s
Success
sbrk.cSuccessNone0.049290s4.343266s
Success
segfault.cSuccessNone0.056487s4.342264s
Success
shm.cSuccessNone0.054020s4.341992s
Success
shmtest.cSuccessNone0.049132s4.318060s
Success
tcache_test.cSuccessNone0.057919s4.496868s
Success
vtable.cSuccessNone0.061026s3.944554s
Success
Networking Tests
dnstest.cSuccessNone0.056079s4.315688s
Success
epollcreate1.cSuccessNone0.057173s4.337866s
Success
error_handling_net.cSuccessNone0.063420s4.408461s
Success
getaddrinfo_test.cSuccessNone0.060656s6.106372s
Success
gethostname.cSuccessNone0.048753s3.969576s
Success
getifaddrs.cSuccessNone0.056471s4.406168s
Success
getsockname.cSuccessNone0.057456s4.332874s
Success
getsockopt.cSuccessNone0.058562s4.347972s
Success
makepipe.cSuccessNone0.048478s3.898512s
Success
nonblocking_eagain.cSuccessNone0.059880s4.398496s
Success
pipe.cSuccessNone0.056345s4.359972s
Success
pipe2.cSuccessNone0.057702s4.289572s
Success
pipeinput.cSuccessNone0.058301s4.331579s
Success
pipeinput2.cSuccessNone0.058410s4.384558s
Success
pipeonestring.cSuccessNone0.058625s4.358540s
Success
pipepong.cSuccessNone0.057872s4.359580s
Success
pipewrite.cSuccessNone0.051282s4.286265s
Success
poll.cSuccessNone0.054236s4.294358s
Success
recvfrom-sendto.cSuccessNone0.056327s4.319291s
Success
sendmsg_recvmsg_test.cSuccessNone0.055567s4.332786s
Success
serverclient.cSuccessNone0.055705s3.928391s
Success
shutdown.cSuccessNone0.056948s3.958090s
Success
shutdown_fork.cSuccessNone0.056547s4.336264s
Success
simple-select.cSuccessNone0.057337s4.362347s
Success
simple_epoll.cSuccessNone0.054544s4.328591s
Success
socket.cSuccessNone0.054975s3.923108s
Success
socket_cloexec.cSuccessNone0.054144s4.306826s
Success
socket_options_advanced.cSuccessNone0.060258s4.374390s
Success
socketepoll.cSuccessNone0.054057s3.901427s
Success
socketpair.cSuccessNone0.053685s4.403554s
Success
socketselect.cSuccessNone0.054325s4.303573s
Success
tcp_connect_single.cSuccessNone0.057098s4.388129s
Success
uds-getsockname.cSuccessNone0.056134s4.328547s
Success
uds-nb-select.cSuccessNone2.063451s6.542395s
Success
uds-serverclient.cSuccessNone0.059743s4.449757s
Success
uds-socketselect.cSuccessNone0.055150s3.935446s
Success
writev_socket.cSuccessNone0.058679s4.344228s
Success
Process Tests
barrier_test.cSuccessNone0.053997s4.505982s
Success
chain_thread.cSuccessNone1.057642s5.489287s
Success
cxa_atexit_test.cSuccessNone0.051650s3.932476s
Success
exit.cSuccessNone0.052582s3.934622s
Success
flockfile_test.cSuccessNone0.055454s4.513860s
Success
fork2malloc.cSuccessNone0.059366s4.368731s
Success
fork_select.cSuccessNone0.054652s4.378713s
Success
fork_simple.cSuccessNone0.053014s4.424998s
Success
fork_syscall.cSuccessNone0.061292s4.440318s
Success
fork_tls_ctype.cSuccessNone0.058030s4.388524s
Success
forkandopen.cSuccessNone0.056885s4.376021s
Success
forkdup.cSuccessNone0.056807s4.033019s
Success
forkexecuid.cSuccessNone0.054673s4.408336s
Success
forkexecv-arg.cSuccessNone0.054941s4.376637s
Success
forkexecv.cSuccessNone0.054820s4.388094s
Success
forkfiles.cSuccessNone0.056058s4.400212s
Success
forkmalloc.cSuccessNone0.070143s4.385036s
Success
forknodup.cSuccessNone0.057883s4.362956s
Success
function-ptr.cSuccessNone0.051884s4.316885s
Success
getegid_syscall.cSuccessNone0.056741s4.402417s
Success
getgid_syscall.cSuccessNone0.057013s4.399425s
Success
getpid.cSuccessNone0.049945s4.298300s
Success
getpid_syscall.cSuccessNone0.057043s4.398466s
Success
getppid.cSuccessNone0.056292s4.369767s
Success
getppid_syscall.cSuccessNone0.060046s4.450022s
Success
getuid.cSuccessNone0.057042s4.326325s
Success
getuid_syscall.cSuccessNone0.054373s4.427213s
Success
hello-arg.cSuccessNone0.045904s3.914531s
Success
hello.cSuccessNone0.046112s3.928971s
Success
longjmp.cSuccessNone0.048596s3.967202s
Success
mutex.cSuccessNone2.060996s6.595153s
Success
printf_deadlock_smoke.cSuccessNone0.063834s4.639903s
Success
printf_thread_test.cSuccessNone0.053208s4.545938s
Success
sem_forks.cSuccessNone0.058454s4.411874s
Success
setsid.cSuccessNone0.047963s3.900532s
Success
template.cSuccessNone0.055730s4.378482s
Success
test_exec_nofork.cSuccessNone0.053892s4.359294s
Success
test_unlink_open_file.cSuccessNone0.051381s3.949415s
Success
thread-test.cSuccessNone0.051017s4.512671s
Success
thread.cSuccessNone0.051421s4.461069s
Success
thread_cageid_race.cSuccessNone0.053690s4.503884s
Success
tls_test.cSuccessNone0.054489s4.504291s
Success
uname.cSuccessNone0.048874s4.316590s
Success
wait.cSuccessNone2.053369s6.028437s
Success
waitpid_anychild.cSuccessNone0.055792s4.367085s
Success
waitpid_syscall.cSuccessNone1.057376s5.404861s
Success
waitpid_wnohang.cSuccessNone0.056763s3.988945s
Success
Signal Tests
alarm.cSuccessNone7.055734s11.032731s
Success
setitimer.cSuccessNone7.057221s11.033957s
Success
sigalrm.cSuccessNone2.056049s6.021473s
Success
sigchld.cSuccessNone1.056922s4.999440s
Success
signal-fork.cSuccessNone4.056869s8.008958s
Success
signal-simple.cSuccessNone0.056378s3.940446s
Success
signal.cSuccessNone0.052715s3.983634s
Success
signal_SIGCHLD.cSuccessNone0.056212s4.484986s
Success
signal_fork.cSuccessNone0.052811s4.460815s
Success
signal_int_ignored.cSuccessNone2.056162s6.410520s
Success
signal_int_thread.cSuccessNone0.054089s4.532725s
Success
signal_longjmp.cSuccessNone0.053810s4.033530s
Success
signal_nodefer.cSuccessNone0.051326s3.954398s
Success
signal_procmask.cSuccessNone0.050674s4.378046s
Success
signal_recursive.cSuccessNone0.057926s3.956657s
Success
signal_sa_mask.cSuccessNone0.049618s3.949152s
Success
sigpipe.cSuccessNone1.057924s5.397217s
Success
sigprocmask.cSuccessNone1.055986s4.995662s
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.119977s4.438001s
Success
mmap-negative2.cSuccessNone0.193766s4.171555s
Success
Signal Tests
signal_resethand.cSuccessNone1.055493s4.027220s
Success

rennergade
rennergade previously approved these changes Mar 4, 2026
- Add scripts/benchrunner.py as the test runner.

- Add tests/benchmarks folder with benchmark source files.

- Add tests/benchmarks/README.md to add details about the benchmarking test suite.

- Address all comments on the PR.

- Add a support for test descriptions.

- Add support for .csv output.
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Mar 9, 2026

End-to-End Test Report

Test Preview

Unified Test Report

grate harness

MetricValue
Total9
Success9
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:

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:

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] Handling function ptr: 2 from cage: 1
[Grate|interpose-exit] In exit_grate 1 handler for cage: 1
[Grate|interpose-exit] PASS

STDERR:

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:

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
mmap test: PASS
[Grate|interpose-mmap] PASS

STDERR:

interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 3
[Cage|interpose-register] In cage 2, about to register handler for geteuid
[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 0 with fn ptr addr: 7021753225191620609
[Grate|interpose-register] Handling function ptr: 2 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Cage|interpose-register] PASS: geteuid ret = 10
[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:

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: 2
[Grate|geteuid] Handling function ptr: 2 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases186
Number of Successes186
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.049538s4.283154s
Success
chdir_getcwd.cSuccessNone0.049610s4.269449s
Success
chmod.cSuccessNone0.056412s4.286657s
Success
clock_gettime_highlevel.cSuccessNone0.125801s4.490749s
Success
clock_gettime_simple.cSuccessNone0.044849s4.261872s
Success
cloexec.cSuccessNone0.054838s3.896057s
Success
close.cSuccessNone0.063417s4.316486s
Success
creat_access.cSuccessNone0.053207s4.284004s
Success
doubleclose.cSuccessNone0.045916s3.851657s
Success
dup.cSuccessNone0.046513s4.287594s
Success
dup2.cSuccessNone0.051842s3.899986s
Success
dup3.cSuccessNone0.050098s4.272597s
Success
dupwrite.cSuccessNone0.052700s3.921931s
Success
etc_conf.cSuccessNone0.048340s4.291183s
Success
fchdir.cSuccessNone0.057178s4.348874s
Success
fchmod.cSuccessNone0.061708s4.339372s
Success
fcntl.cSuccessNone0.052598s4.333425s
Success
fdatasync.cSuccessNone0.052474s4.279376s
Success
filetest.cSuccessNone0.053232s3.876798s
Success
filetest1000.cSuccessNone0.061632s3.905180s
Success
flock.cSuccessNone0.060615s4.367864s
Success
fstat.cSuccessNone0.055078s4.308513s
Success
fstatfs.cSuccessNone0.047407s4.245342s
Success
fsync.cSuccessNone0.053390s4.244859s
Success
ftruncate.cSuccessNone0.057062s4.338896s
Success
getcwd.cSuccessNone0.049070s4.289767s
Success
getrandom.cSuccessNone0.053332s4.280905s
Success
ioctl.cSuccessNone0.059073s4.290830s
Success
link.cSuccessNone0.056526s4.293859s
Success
locale_test.cSuccessNone0.067294s6.077437s
Success
lseek.cSuccessNone0.057517s4.317550s
Success
mkdir_rmdir.cSuccessNone0.053608s4.290036s
Success
mkfifo_test.cSuccessNone0.059599s4.364517s
Success
mknod.cSuccessNone0.052694s4.298266s
Success
nocancel_io.cSuccessNone0.057398s5.608014s
Success
open.cSuccessNone0.049198s4.248630s
Success
path_conversion_safety.cSuccessNone0.058291s4.275794s
Success
pread_pwrite.cSuccessNone0.050625s4.268785s
Success
printf.cSuccessNone0.044616s3.863707s
Success
read.cSuccessNone0.053970s4.281515s
Success
readbytes.cSuccessNone0.049364s3.870618s
Success
readlink.cSuccessNone0.053237s4.275853s
Success
readlinkat.cSuccessNone0.055000s4.303680s
Success
readv_writev_test.cSuccessNone0.055557s4.263551s
Success
rename.cSuccessNone0.056517s4.282343s
Success
sc-writev.cSuccessNone0.051234s4.270925s
Success
stat.cSuccessNone0.053850s4.282275s
Success
statfs.cSuccessNone0.047943s4.253897s
Success
sync_file_range.cSuccessNone0.051715s4.282046s
Success
truncate.cSuccessNone0.054890s4.309481s
Success
unlink.cSuccessNone0.055396s4.294187s
Success
unlinkat.cSuccessNone0.055185s4.281581s
Success
write.cSuccessNone0.046932s3.882444s
Success
writeloop.cSuccessNone0.055765s3.882117s
Success
writepartial.cSuccessNone0.054169s3.867559s
Success
writev.cSuccessNone0.054269s4.277049s
Success
Math Tests
math_link_smoke.cSuccessNone0.056984s3.909277s
Success
math_tests.cSuccessNone0.062478s4.062212s
Success
Memory Tests
brk.cSuccessNone0.051125s4.312786s
Success
fork_large_memory.cSuccessNone0.086418s4.686602s
Success
malloc.cSuccessNone0.048947s3.851090s
Success
malloc_large.cSuccessNone0.050836s4.252073s
Success
memcpy.cSuccessNone0.049409s3.861401s
Success
memory_error_test.cSuccessNone0.055824s4.278348s
Success
mmap.cSuccessNone0.045183s4.268238s
Success
mmap_aligned.cSuccessNone0.047686s4.265505s
Success
mmap_complicated.cSuccessNone0.053125s4.304519s
Success
mmap_file.cSuccessNone0.053816s4.280790s
Success
mmap_shared.cSuccessNone0.052962s4.296403s
Success
mmaptest.cSuccessNone0.048642s4.259335s
Success
mprotect.cSuccessNone0.047629s4.283797s
Success
mprotect_boundary.cSuccessNone0.047655s4.262382s
Success
mprotect_end_region.cSuccessNone0.046720s4.252509s
Success
mprotect_middle_region.cSuccessNone0.047050s4.244742s
Success
mprotect_multiple_times.cSuccessNone0.047193s4.257285s
Success
mprotect_same_value.cSuccessNone0.046515s4.273056s
Success
mprotect_spanning_regions.cSuccessNone0.047300s4.266019s
Success
sbrk.cSuccessNone0.048468s4.243350s
Success
segfault.cSuccessNone0.056047s4.335606s
Success
shm.cSuccessNone0.053553s4.319923s
Success
shmtest.cSuccessNone0.047195s4.261373s
Success
tcache_test.cSuccessNone0.057872s4.452743s
Success
thread_malloc_sequential.cSuccessNone0.055000s4.432949s
Success
vtable.cSuccessNone0.060787s3.884805s
Success
Networking Tests
dnstest.cSuccessNone0.053179s4.254074s
Success
epoll_edge_triggered.cSuccessNone0.212084s4.510314s
Success
epollcreate1.cSuccessNone0.055228s4.272984s
Success
error_handling_net.cSuccessNone0.062799s4.306150s
Success
getaddrinfo_test.cSuccessNone0.059077s6.052729s
Success
gethostname.cSuccessNone0.048800s3.871373s
Success
getifaddrs.cSuccessNone0.054998s4.384918s
Success
getsockname.cSuccessNone0.055258s4.294767s
Success
getsockopt.cSuccessNone0.056537s4.294897s
Success
ipv6_basic.cSuccessNone0.058530s4.327327s
Success
makepipe.cSuccessNone0.048038s3.831017s
Success
nonblocking_eagain.cSuccessNone0.058344s4.324308s
Success
pipe.cSuccessNone0.055328s4.293621s
Success
pipe2.cSuccessNone0.055943s4.255794s
Success
pipeinput.cSuccessNone0.057726s4.334405s
Success
pipeinput2.cSuccessNone0.057205s4.326524s
Success
pipeonestring.cSuccessNone0.056955s4.340993s
Success
pipepong.cSuccessNone0.055832s4.327209s
Success
pipewrite.cSuccessNone0.049558s4.251418s
Success
poll.cSuccessNone0.053843s4.254140s
Success
recvfrom-sendto.cSuccessNone0.056627s4.291853s
Success
sendmsg_recvmsg_test.cSuccessNone0.056114s4.306650s
Success
serverclient.cSuccessNone0.053870s3.897682s
Success
shutdown.cSuccessNone0.057301s3.957179s
Success
shutdown_fork.cSuccessNone0.056088s4.370340s
Success
simple-select.cSuccessNone0.055975s4.325056s
Success
simple_epoll.cSuccessNone0.053358s4.272685s
Success
socket.cSuccessNone0.052345s3.883033s
Success
socket_cloexec.cSuccessNone0.052392s4.254179s
Success
socket_options_advanced.cSuccessNone0.061193s4.304571s
Success
socketepoll.cSuccessNone0.053212s3.851266s
Success
socketpair.cSuccessNone0.052486s4.305541s
Success
socketselect.cSuccessNone0.055803s4.282256s
Success
tcp_connect_single.cSuccessNone0.055951s4.292474s
Success
udp_send_recv.cSuccessNone0.163413s4.484753s
Success
uds-getsockname.cSuccessNone0.054223s4.274110s
Success
uds-nb-select.cSuccessNone2.063935s6.497818s
Success
uds-serverclient.cSuccessNone0.057936s4.321907s
Success
uds-socketselect.cSuccessNone0.055750s3.889460s
Success
writev_socket.cSuccessNone0.056971s4.264617s
Success
Process Tests
barrier_test.cSuccessNone0.054271s4.456866s
Success
chain_thread.cSuccessNone1.055666s5.493873s
Success
ctor_syscall_test.cSuccessNone0.045862s4.298565s
Success
cxa_atexit_test.cSuccessNone0.050516s3.935087s
Success
exit.cSuccessNone0.051280s3.901934s
Success
flockfile_test.cSuccessNone0.055219s4.473077s
Success
fork2malloc.cSuccessNone0.054564s4.326167s
Success
fork_select.cSuccessNone0.052894s4.334836s
Success
fork_simple.cSuccessNone0.051855s4.306596s
Success
fork_syscall.cSuccessNone0.058505s4.364693s
Success
fork_tls_ctype.cSuccessNone0.056877s4.322289s
Success
forkandopen.cSuccessNone0.055873s4.351873s
Success
forkdup.cSuccessNone0.056040s3.986150s
Success
forkexecuid.cSuccessNone0.053912s4.334954s
Success
forkexecv-arg.cSuccessNone0.053420s4.321859s
Success
forkexecv.cSuccessNone0.051705s4.346957s
Success
forkfiles.cSuccessNone0.057286s4.360049s
Success
forkmalloc.cSuccessNone0.068867s4.317426s
Success
forknodup.cSuccessNone0.057376s4.323986s
Success
function-ptr.cSuccessNone0.050401s4.279133s
Success
getegid_syscall.cSuccessNone0.054807s4.328777s
Success
getgid_syscall.cSuccessNone0.055567s4.368273s
Success
getpid.cSuccessNone0.049108s4.300664s
Success
getpid_syscall.cSuccessNone0.056524s4.372014s
Success
getppid.cSuccessNone0.054580s4.336871s
Success
getppid_syscall.cSuccessNone0.057657s4.344459s
Success
getuid.cSuccessNone0.055942s4.256472s
Success
getuid_syscall.cSuccessNone0.052995s4.319902s
Success
hello-arg.cSuccessNone0.044840s3.844963s
Success
hello.cSuccessNone0.045079s3.874630s
Success
longjmp.cSuccessNone0.046721s3.890773s
Success
mutex.cSuccessNone2.062689s6.621342s
Success
printf_deadlock_smoke.cSuccessNone0.065250s4.655914s
Success
printf_thread_test.cSuccessNone0.052612s4.471496s
Success
sem_forks.cSuccessNone0.058093s4.341189s
Success
setsid.cSuccessNone0.047678s3.887718s
Success
template.cSuccessNone0.053782s4.315016s
Success
test_exec_nofork.cSuccessNone0.052582s4.266197s
Success
test_unlink_open_file.cSuccessNone0.048929s3.897723s
Success
thread-test.cSuccessNone0.048681s4.468457s
Success
thread.cSuccessNone0.051843s4.450144s
Success
thread_cageid_race.cSuccessNone0.049657s4.407482s
Success
tls_test.cSuccessNone0.052861s4.428314s
Success
uname.cSuccessNone0.048147s4.334384s
Success
wait.cSuccessNone2.052746s5.966989s
Success
waitpid_anychild.cSuccessNone0.053939s4.341712s
Success
waitpid_syscall.cSuccessNone1.056174s5.337571s
Success
waitpid_wnohang.cSuccessNone0.054187s3.946052s
Success
Signal Tests
alarm.cSuccessNone7.053713s10.916156s
Success
setitimer.cSuccessNone7.054222s10.917395s
Success
sigalrm.cSuccessNone2.055020s5.911804s
Success
sigchld.cSuccessNone1.056034s4.944416s
Success
signal-fork.cSuccessNone4.056013s7.957537s
Success
signal-simple.cSuccessNone0.055032s3.909820s
Success
signal_SIGCHLD.cSuccessNone0.054123s4.332176s
Success
signal_fork.cSuccessNone0.050826s4.337131s
Success
signal_int_ignored.cSuccessNone2.055699s6.346665s
Success
signal_procmask.cSuccessNone0.048841s4.272762s
Success
signal_recursive.cSuccessNone0.048929s3.882322s
Success
signal_sa_mask.cSuccessNone0.048229s3.875444s
Success
sigpipe.cSuccessNone1.055976s5.358147s
Success
sigprocmask.cSuccessNone1.054756s4.916682s
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.127276s4.232465s
Success
mmap-negative2.cSuccessNone0.163365s4.092674s
Success
Signal Tests
signal_resethand.cSuccessNone1.054544s3.977102s
Success

Comment thread tests/benchmarks/README.md Outdated

### IMFS Tests
Example: `imfs_read.c`
These call IMFS functions directly to estimate in-memory FS overhead
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.

Do we need to prepare the imfs_grate wasm binary before running the test? If so, what's the step? ie: we need to pull from example repo manually or..?

I also didn't find imfs_read.c in this PR..

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Need to update the readme, we are not doing independent imfs tests right now.

@Yaxuan-w
Copy link
Copy Markdown
Member

I tried to run the runner locally and it works well. I see there's a grates/ folder under benchmarks but that doesn't show on this PR.. I'm not sure what's happening here..

@stupendoussuperpowers
Copy link
Copy Markdown
Contributor Author

I tried to run the runner locally and it works well. I see there's a grates/ folder under benchmarks but that doesn't show on this PR.. I'm not sure what's happening here..

All grates are fetched from the lind-wasm-example-grates repo using a git shallow clone, the grates/ folder within the benchmarks folder is equivalent to node_modules with our package registry being the example grates repo.

As previously discussed, this was done so that we don't need to manually make changes to a grate we might want to benchmark in two separate places i.e. once in the example-grates repo and then once in this benchmarks folder. It therefore should not be committed.

Copy link
Copy Markdown
Member

@JustinCappos JustinCappos left a comment

Choose a reason for hiding this comment

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

Need to board a flight. Will try to look more later

Comment thread scripts/benchrunner.py
Comment on lines +10 to +12
def repo_root() -> Path:
"""Return repo root (scripts/..)."""
return Path(__file__).resolve().parent.parent
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.

Does this do what the comment says? Doesn't it resolve to ../.. from the script itself instead?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Will change the doc string it's a bit confusing.

It's supposed to mean => benchrunner.py is in the scripts/ folder (Path(__file__).parent), the root of the lind-wasm repo is scripts/..

Comment thread scripts/benchrunner.py
str(GRATES_REPO_DIR),
]
)
run_cmd(["git", "-C", str(GRATES_REPO_DIR),
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.

The way in which you checkout things here seems odd to me. Might these be better off in the same repo or with them as cargo packages with explicit dependenciet?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

We need to fetch grates from somewhere and right now we use the lind-wasm-example-grates repo as the single source of truth for them. So we need to do quasi-package manager things for this. Ideally I guess we'd have each grate set up as a crates.io entry or as a packaged release on github for C grates, but none of that is set up currently.

Comment thread scripts/benchrunner.py
Comment on lines +127 to +132
if status:
existing = [
line.strip()
for line in status.stdout.decode("utf-8").splitlines()
if line.strip()
]
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.

I'm not that sure what you are doing here. What is considered existing? Does a directory existing count? Does it need to be bit for bit identical with all files, etc.?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

We use sparse checkouts to grab only the grate that was requested, this just check if our git config has already registered this folder for that sparse checkout.

If not, it adds it to the list

Latest changes are pulled regardless, on L140

Comment thread scripts/benchrunner.py
Comment on lines +146 to +147
add_sparse_path(f"examples/{grate_name}")
repo_path = GRATES_EXAMPLES_DIR / grate_name
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.

Seems like this should be a constant both places, right?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

repo_path will be grates/imfs-grate or grates/geteuid-grate etc, depending on which grate is being fetched. The only constant is the base path encoded in GRATES_EXAMPLES_DIR

Comment thread scripts/benchrunner.py
Comment thread tests/benchmarks/fs_read.c Outdated
Comment thread tests/benchmarks/fs_read.c Outdated
Comment thread tests/benchmarks/fs_write.c Outdated
Comment thread tests/benchmarks/ipc_uds.c Outdated
Comment thread tests/benchmarks/perf_fibonacci.c Outdated

#define LOOP_COUNT 1000000

int main(int argc, char *argv[]) {
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.

There is a lot of duplication across the tests. Would you be better off having them be more modular and included instead of duplicating all of the main, etc. code?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I tried to trim down some of these tests, right now I do not want to over-engineer helpers around these benchmarks so I've tried to keep each benchmark as standalone as possible. Can look into building something more sophisticated as we add more tests.

@github-actions
Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

Unified Test Report

grate harness

MetricValue
Total9
Success9
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:

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:

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] Handling function ptr: 3 from cage: 1
[Grate|interpose-exit] In exit_grate 1 handler for cage: 1
[Grate|interpose-exit] PASS

STDERR:

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:

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:

interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 4
[Cage|interpose-register] In cage 2, about to register handler for geteuid
[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
[Cage|interpose-register] PASS: geteuid ret = 10
[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/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 Cases190
Number of Successes189
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.049593s4.259705s
Success
chdir_getcwd.cSuccessNone0.051283s4.263837s
Success
chmod.cSuccessNone0.055613s4.292865s
Success
clock_gettime_highlevel.cSuccessNone0.121903s4.463772s
Success
clock_gettime_simple.cSuccessNone0.044243s4.220685s
Success
cloexec.cSuccessNone0.054628s3.917602s
Success
close.cSuccessNone0.062952s4.292861s
Success
creat_access.cSuccessNone0.053887s4.257176s
Success
doubleclose.cSuccessNone0.046612s3.868758s
Success
dup.cSuccessNone0.047765s4.254093s
Success
dup2.cSuccessNone0.051905s3.874724s
Success
dup3.cSuccessNone0.049767s4.260668s
Success
dupwrite.cSuccessNone0.053202s3.871990s
Success
etc_conf.cSuccessNone0.048364s4.233607s
Success
fchdir.cSuccessNone0.056264s4.281246s
Success
fchmod.cSuccessNone0.058540s4.273650s
Success
fcntl.cSuccessNone0.051880s4.251299s
Success
fdatasync.cSuccessNone0.051640s4.243490s
Success
filetest.cSuccessNone0.052732s3.859960s
Success
filetest1000.cSuccessNone0.062726s3.901006s
Success
flock.cSuccessNone0.060369s4.338303s
Success
fstat.cSuccessNone0.054201s4.273718s
Success
fstatfs.cSuccessNone0.046458s4.245364s
Success
fsync.cSuccessNone0.053461s4.262214s
Success
ftruncate.cSuccessNone0.058527s4.323865s
Success
getcwd.cSuccessNone0.048847s4.272435s
Success
getrandom.cSuccessNone0.052417s4.262974s
Success
ioctl.cSuccessNone0.057859s4.284511s
Success
link.cSuccessNone0.058000s4.338710s
Success
locale_test.cSuccessNone0.066340s6.060854s
Success
lseek.cSuccessNone0.057390s4.306003s
Success
mkdir_rmdir.cSuccessNone0.053235s4.250009s
Success
mkfifo_test.cSuccessNone0.057833s4.324891s
Success
mknod.cSuccessNone0.053580s4.270779s
Success
nocancel_io.cSuccessNone0.057447s5.465277s
Success
open.cSuccessNone0.047790s4.256271s
Success
path_conversion_safety.cSuccessNone0.058153s4.280278s
Success
pread_pwrite.cSuccessNone0.052199s4.261398s
Success
printf.cSuccessNone0.045520s3.844848s
Success
read.cSuccessNone0.054845s4.264950s
Success
readbytes.cSuccessNone0.048765s3.845260s
Success
readlink.cSuccessNone0.053852s4.259784s
Success
readlinkat.cSuccessNone0.055603s4.275308s
Success
readv_writev_test.cSuccessNone0.055452s4.253117s
Success
rename.cSuccessNone0.055274s4.251839s
Success
sc-writev.cSuccessNone0.051314s4.235526s
Success
stat.cSuccessNone0.053909s4.270288s
Success
statfs.cSuccessNone0.047798s4.233444s
Success
sync_file_range.cSuccessNone0.050577s4.257892s
Success
truncate.cSuccessNone0.055419s4.292036s
Success
unlink.cSuccessNone0.055985s4.331619s
Success
unlinkat.cSuccessNone0.055449s4.279270s
Success
write.cSuccessNone0.045822s3.844929s
Success
writeloop.cSuccessNone0.056181s3.880137s
Success
writepartial.cSuccessNone0.053770s3.847242s
Success
writev.cSuccessNone0.054469s4.256824s
Success
Math Tests
math_link_smoke.cSuccessNone0.057218s3.889973s
Success
math_tests.cSuccessNone0.062363s4.042357s
Success
Memory Tests
brk.cSuccessNone0.051275s4.236658s
Success
fork_large_memory.cSuccessNone0.093476s4.631133s
Success
malloc.cSuccessNone0.048620s3.861346s
Success
malloc_large.cSuccessNone0.048937s4.230676s
Success
memcpy.cSuccessNone0.049065s3.850830s
Success
memory_error_test.cSuccessNone0.054941s4.268407s
Success
mmap.cSuccessNone0.046065s4.241023s
Success
mmap_aligned.cSuccessNone0.047885s4.246322s
Success
mmap_complicated.cSuccessNone0.052273s4.293962s
Success
mmap_file.cSuccessNone0.054010s4.238454s
Success
mmap_shared.cSuccessNone0.052730s4.293606s
Success
mmaptest.cSuccessNone0.048813s4.241511s
Success
mprotect.cSuccessNone0.046785s4.240792s
Success
mprotect_boundary.cSuccessNone0.046828s4.246443s
Success
mprotect_end_region.cSuccessNone0.046575s4.242868s
Success
mprotect_middle_region.cSuccessNone0.047327s4.257828s
Success
mprotect_multiple_times.cSuccessNone0.047020s4.234693s
Success
mprotect_same_value.cSuccessNone0.046087s4.230154s
Success
mprotect_spanning_regions.cSuccessNone0.046838s4.257506s
Success
sbrk.cSuccessNone0.048850s4.266844s
Success
segfault.cSuccessNone0.054354s4.284007s
Success
shm.cSuccessNone0.052713s4.309921s
Success
shmtest.cSuccessNone0.047732s4.240320s
Success
tcache_test.cSuccessNone0.056456s4.434108s
Success
thread_malloc_sequential.cSuccessNone0.054757s4.411104s
Success
vtable.cSuccessNone0.059722s3.890584s
Success
Networking Tests
dns_resolve_test.cSuccessNone0.053917s6.099951s
Success
dnstest.cSuccessNone0.055382s4.320241s
Success
epoll_edge_triggered.cSuccessNone0.212776s4.463996s
Success
epollcreate1.cSuccessNone0.055541s4.306966s
Success
error_handling_net.cSuccessNone0.065041s4.402372s
Success
getaddrinfo_test.cSuccessNone0.061874s6.115545s
Success
getaddrinfo_unspec.cFailureUnknown_Failure0.053931s6.040070s
Fatal glibc error: getaddrinfo.c:2554 (int getaddrinfo(const char *, const char *, const struct addrinfo *, struct addrinfo **)): assertion failed: IN6_IS_ADDR_V4MAPPED (sin6->sin6_addr.s6_addr32)
failed to run main module

Caused by:
0: failed to invoke command default
1: wasm trap: wasm unreachable instruction executed

gethostname.cSuccessNone0.048084s3.943619s
Success
getifaddrs.cSuccessNone0.058083s4.403843s
Success
getsockname.cSuccessNone0.056020s4.281545s
Success
getsockopt.cSuccessNone0.056859s4.312805s
Success
ipv6_basic.cSuccessNone0.058506s4.298388s
Success
makepipe.cSuccessNone0.046625s3.869030s
Success
nonblocking_eagain.cSuccessNone0.058386s4.331699s
Success
pipe.cSuccessNone0.058026s4.342581s
Success
pipe2.cSuccessNone0.055324s4.272387s
Success
pipeinput.cSuccessNone0.058253s4.360723s
Success
pipeinput2.cSuccessNone0.057144s4.314015s
Success
pipeonestring.cSuccessNone0.058463s4.387412s
Success
pipepong.cSuccessNone0.057438s4.326996s
Success
pipewrite.cSuccessNone0.052251s4.318613s
Success
poll.cSuccessNone0.056704s4.305546s
Success
recvfrom-sendto.cSuccessNone0.055650s4.289311s
Success
sendmsg_recvmsg_test.cSuccessNone0.056387s4.287026s
Success
serverclient.cSuccessNone0.056789s3.960967s
Success
shutdown.cSuccessNone0.058438s3.943935s
Success
shutdown_fork.cSuccessNone0.055774s4.326104s
Success
simple-select.cSuccessNone0.056678s4.350307s
Success
simple_epoll.cSuccessNone0.054475s4.285214s
Success
socket.cSuccessNone0.054814s3.917265s
Success
socket_cloexec.cSuccessNone0.053640s4.270276s
Success
socket_options_advanced.cSuccessNone0.060674s4.300462s
Success
socketepoll.cSuccessNone0.052815s3.891296s
Success
socketpair.cSuccessNone0.055038s4.386891s
Success
socketselect.cSuccessNone0.053281s4.236916s
Success
tcp_connect_single.cSuccessNone0.055194s4.291440s
Success
udp_send_recv.cSuccessNone0.161880s4.451405s
Success
uds-getsockname.cSuccessNone0.054068s4.270609s
Success
uds-nb-select.cSuccessNone2.064416s6.558174s
Success
uds-serverclient.cSuccessNone0.058572s4.352350s
Success
uds-socketselect.cSuccessNone0.055382s3.891428s
Success
writev_socket.cSuccessNone0.058814s4.326388s
Success
Process Tests
barrier_test.cSuccessNone0.052381s4.407230s
Success
chain_thread.cSuccessNone1.054593s5.407660s
Success
ctor_syscall_test.cSuccessNone0.045326s4.255019s
Success
cxa_atexit_test.cSuccessNone0.051411s3.877074s
Success
exit.cSuccessNone0.052190s3.924112s
Success
exit_failure.cSuccessNone0.054565s3.976019s
Success
flockfile_test.cSuccessNone0.055299s4.464398s
Success
fork2malloc.cSuccessNone0.056506s4.320362s
Success
fork_select.cSuccessNone0.053518s4.321781s
Success
fork_simple.cSuccessNone0.051372s4.282303s
Success
fork_syscall.cSuccessNone0.058876s4.371586s
Success
fork_tls_ctype.cSuccessNone0.057805s4.352479s
Success
forkandopen.cSuccessNone0.055739s4.338706s
Success
forkdup.cSuccessNone0.057166s3.984991s
Success
forkexecuid.cSuccessNone0.053609s4.316409s
Success
forkexecv-arg.cSuccessNone0.054061s4.323013s
Success
forkexecv.cSuccessNone0.051521s4.304063s
Success
forkfiles.cSuccessNone0.054593s4.301119s
Success
forkmalloc.cSuccessNone0.071022s4.284843s
Success
forknodup.cSuccessNone0.056424s4.324569s
Success
function-ptr.cSuccessNone0.049724s4.235541s
Success
getegid_syscall.cSuccessNone0.054688s4.346006s
Success
getgid_syscall.cSuccessNone0.056188s4.365470s
Success
getpid.cSuccessNone0.047452s4.261810s
Success
getpid_syscall.cSuccessNone0.056967s4.378132s
Success
getppid.cSuccessNone0.055116s4.327391s
Success
getppid_syscall.cSuccessNone0.058833s4.314811s
Success
getuid.cSuccessNone0.054142s4.248853s
Success
getuid_syscall.cSuccessNone0.053145s4.340097s
Success
hello-arg.cSuccessNone0.044866s3.868913s
Success
hello.cSuccessNone0.046185s3.866788s
Success
longjmp.cSuccessNone0.047007s3.875507s
Success
mutex.cSuccessNone2.059699s6.550097s
Success
printf_deadlock_smoke.cSuccessNone0.062472s4.604756s
Success
printf_thread_test.cSuccessNone0.052930s4.443686s
Success
sem_forks.cSuccessNone0.059124s4.358133s
Success
setsid.cSuccessNone0.047800s3.898069s
Success
template.cSuccessNone0.054537s4.307955s
Success
test_exec_nofork.cSuccessNone0.052588s4.242590s
Success
test_unlink_open_file.cSuccessNone0.049339s3.861901s
Success
thread-test.cSuccessNone0.049380s4.422218s
Success
thread.cSuccessNone0.049301s4.401031s
Success
thread_cageid_race.cSuccessNone0.050068s4.373060s
Success
tls_test.cSuccessNone0.051544s4.399694s
Success
uname.cSuccessNone0.047026s4.237313s
Success
wait.cSuccessNone2.051441s5.952877s
Success
waitpid_anychild.cSuccessNone0.054920s4.291398s
Success
waitpid_syscall.cSuccessNone1.055528s5.334286s
Success
waitpid_wnohang.cSuccessNone0.054849s3.913290s
Success
Signal Tests
alarm.cSuccessNone7.053580s10.910100s
Success
eintr_fork_signal.cSuccessNone1.056548s5.327025s
Success
setitimer.cSuccessNone7.053946s10.896589s
Success
sigalrm.cSuccessNone2.054018s5.885834s
Success
sigchld.cSuccessNone1.055236s4.924976s
Success
signal-fork.cSuccessNone4.056446s7.957270s
Success
signal-simple.cSuccessNone0.054675s3.906379s
Success
signal_SIGCHLD.cSuccessNone0.052237s4.299617s
Success
signal_fork.cSuccessNone0.051255s4.335296s
Success
signal_int_ignored.cSuccessNone2.054010s6.323652s
Success
signal_procmask.cSuccessNone0.048811s4.253228s
Success
signal_recursive.cSuccessNone0.048879s3.868295s
Success
signal_sa_mask.cSuccessNone0.048596s3.874286s
Success
sigpipe.cSuccessNone1.055967s5.344931s
Success
sigprocmask.cSuccessNone1.053589s4.908187s
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.126683s4.580342s
Success
mmap-negative2.cSuccessNone0.160990s4.359251s
Success
Signal Tests
signal_resethand.cSuccessNone1.053451s3.921157s
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