Skip to content

initial inter-process/inter-machine library interposition implementation#1201

Open
qianxichen233 wants to merge 19 commits into
mainfrom
remote-calls
Open

initial inter-process/inter-machine library interposition implementation#1201
qianxichen233 wants to merge 19 commits into
mainfrom
remote-calls

Conversation

@qianxichen233

Copy link
Copy Markdown
Contributor

initial library interposition design/implementaiton for inter-process and inter-machine scenario via remote RPC protocol

attached a bunch of examples, might be messy though

implementation details under docs/internal/remote-library-calls.md

qianxichen233 and others added 18 commits April 26, 2026 05:37
Wrap each library export in instance_dylink with a host closure so
every call from the main module passes through an interception point.
This is the foundation for future remote-call delegation: the wrapper
currently forwards transparently to the original library function, but
provides the hook where local-vs-remote scheduling will be inserted.

Add Func::call_nested / call_unchecked_raw_nested to call a WASM
function without processing the store's on_called asyncify callback.
The standard Func::call loop would steal fork/exec/exit callbacks set
inside the library before the outer _start invocation could process
them, resetting __asyncify_state to 0 and corrupting the asyncify
unwind. call_nested leaves the callback in the store for the top-level
call_unchecked_raw loop to handle, keeping asyncify correct across the
host-function boundary introduced by the wrapper.

Add remote-lib feature gate to wasmtime, lind-dylink, and lind-boot
Cargo manifests.
# Conflicts:
#	Makefile
#	src/lind-boot/Cargo.toml
#	src/wasmtime/crates/wasmtime/src/runtime/linker.rs
…e change

Co-Authored-By: Qianxi Chen <qianxi@example.com>
…ker.rs

- Resolve merge conflicts in Cargo.toml, runtime.rs, linker.rs
- Update call_nested/call_unchecked_raw_nested to v44 API:
  call_impl_check_args now returns Result<()>; invoke_wasm_and_catch_traps
  closure takes (NonNull<VMContext>, Option<InterpreterRef>) -> bool;
  VMFuncRef::array_call is now a static method
- Replace anyhow! with format_err! and use Error::from_anyhow for
  dispatch_remote_call result conversion in remote-lib linker code
- Fix ExportMemory::data_ptr -> .unshared().data_ptr() for v44 API
… names

examples/remote-calls          → test/library-interposition-examples/basic
examples/remote-calls-percage  → test/library-interposition-examples/per-cage-routing
examples/remote-calls-ptr      → test/library-interposition-examples/pointer-marshaling
examples/remote-calls-rand     → test/library-interposition-examples/rand-library
examples/remote-calls-zlib     → test/library-interposition-examples/zlib-compression

Update all internal path references in run scripts and JSON configs.
Remove now-empty examples/ directory.
Update all internal path references in run scripts and JSON configs.
@github-actions

Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

grate harness

Grate Test Report

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

Cases

TestStatusError TypeOutput
concurrent-request/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 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:

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

STDERR:

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

STDERR:

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

STDERR:

interposing-calls/interpose-exec_grate.cSuccess
STDOUT:
[Grate|interpose-exec] Registering exec handler for cage 2 in grate 1 with fn ptr addr: 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: 4
[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: 4 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/copy-handler-table_grate.cSuccess
STDOUT:
[Grate|copy-handler-table] Registering geteuid handler for cage 2 in grate 1
[Grate|copy-handler-table] geteuid handler invoked for cage 1
[Grate|copy-handler-table] geteuid handler invoked for cage 1
[Cage|copy-handler-table] PASS: child inherited handler, then overwrite changed geteuid to 0
[Cage|copy-handler-table] PASS: parent=123 child_exit=0
[Grate|copy-handler-table] PASS

STDERR:

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

STDERR:

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

STDERR:

static harness

Test Report

Deterministic Tests

Summary

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

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Static Tests
fork_simple.cSuccessNone0.070752s3.884738s
Success
thread.cSuccessNone0.048844s3.954541s
Success
tls_test.cSuccessNone0.054170s3.975250s
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 Cases220
Number of Successes220
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.048545s0.145837s
Success
chdir_getcwd.cSuccessNone0.052098s0.116633s
Success
chmod.cSuccessNone0.058567s0.129075s
Success
clock_gettime_highlevel.cSuccessNone0.120859s0.163314s
Success
clock_gettime_simple.cSuccessNone0.043828s0.105733s
Success
cloexec.cSuccessNone0.052949s0.142322s
Success
close.cSuccessNone0.061080s0.142578s
Success
creat_access.cSuccessNone0.051832s0.119250s
Success
doubleclose.cSuccessNone0.044362s0.100159s
Success
dup.cSuccessNone0.046687s0.115908s
Success
dup2.cSuccessNone0.050803s0.116352s
Success
dup3.cSuccessNone0.049195s0.117044s
Success
dupwrite.cSuccessNone0.052140s0.117903s
Success
etc_conf.cSuccessNone0.046933s0.121864s
Success
faccessat.cSuccessNone0.048069s0.118237s
Success
fchdir.cSuccessNone0.055875s0.128794s
Success
fchmod.cSuccessNone0.053728s0.128243s
Success
fchmodat.cSuccessNone0.047907s0.116976s
Success
fcntl.cSuccessNone0.051260s0.132266s
Success
fcntl_dupfd.cSuccessNone0.046123s0.110464s
Success
fdatasync.cSuccessNone0.050252s0.114943s
Success
filetest.cSuccessNone0.052111s0.113470s
Success
filetest1000.cSuccessNone0.063277s0.127738s
Success
flock.cSuccessNone0.062306s0.166490s
Success
fstat.cSuccessNone0.054538s0.131937s
Success
fstatfs.cSuccessNone0.049050s0.111010s
Success
fsync.cSuccessNone0.050906s0.113991s
Success
ftruncate.cSuccessNone0.059323s0.211924s
Success
getcwd.cSuccessNone0.048517s0.106933s
Success
getcwd_null.cSuccessNone0.052964s0.122112s
Success
getpgid.cSuccessNone0.046003s0.105303s
Success
getrandom.cSuccessNone0.051684s0.129969s
Success
ioctl.cSuccessNone0.055413s0.122040s
Success
link.cSuccessNone0.057487s0.162041s
Success
locale_test.cSuccessNone0.065796s0.310404s
Success
lseek.cSuccessNone0.057049s0.189584s
Success
lstat.cSuccessNone0.055099s0.140845s
Success
mkdir_rmdir.cSuccessNone0.052780s0.121007s
Success
mkfifo_test.cSuccessNone0.059726s0.171692s
Success
mknod.cSuccessNone0.053256s0.128540s
Success
nocancel_io.cSuccessNone0.055792s0.141074s
Success
open.cSuccessNone0.047059s0.105204s
Success
openat.cSuccessNone0.049280s0.113678s
Success
path_conversion_safety.cSuccessNone0.057278s0.139118s
Success
ppoll.cSuccessNone0.058757s0.132052s
Success
pread_pwrite.cSuccessNone0.050075s0.120772s
Success
preadv_pwritev.cSuccessNone0.054598s0.133348s
Success
printf.cSuccessNone0.043718s0.099807s
Success
prlimit64.cSuccessNone0.045874s0.107159s
Success
read.cSuccessNone0.056679s0.130003s
Success
readbytes.cSuccessNone0.048578s0.110333s
Success
readdir_basic.cSuccessNone0.055643s0.150000s
Success
readlink.cSuccessNone0.052911s0.127073s
Success
readlinkat.cSuccessNone0.054073s0.126948s
Success
readv_writev_test.cSuccessNone0.054855s0.131605s
Success
rename.cSuccessNone0.055820s0.123561s
Success
renameat.cSuccessNone0.057882s0.135878s
Success
sc-writev.cSuccessNone0.050754s0.118963s
Success
stat.cSuccessNone0.053662s0.130644s
Success
statfs.cSuccessNone0.048233s0.109860s
Success
symlink.cSuccessNone0.054786s0.148222s
Success
sync_file_range.cSuccessNone0.050747s0.113768s
Success
timespec_time_t_compat.cSuccessNone0.050298s0.109610s
Success
trailing_slash.cSuccessNone0.050960s0.122495s
Success
truncate.cSuccessNone0.054875s0.142859s
Success
unlink.cSuccessNone0.055395s0.153795s
Success
unlinkat.cSuccessNone0.054829s0.135535s
Success
utimensat.cSuccessNone0.053398s0.136645s
Success
write.cSuccessNone0.045932s0.102436s
Success
writeloop.cSuccessNone0.055216s0.117639s
Success
writepartial.cSuccessNone0.053487s0.109569s
Success
writev.cSuccessNone0.054303s0.125536s
Success
Math Tests
math_link_smoke.cSuccessNone0.058792s0.110074s
Success
math_tests.cSuccessNone0.060065s0.138434s
Success
printf_float.cSuccessNone0.059703s0.133892s
Success
Memory Tests
brk.cSuccessNone0.056694s0.119569s
Success
fork_large_memory.cSuccessNone0.098731s0.506380s
Success
malloc.cSuccessNone0.051686s0.114944s
Success
malloc_large.cSuccessNone0.049386s0.112861s
Success
memcpy.cSuccessNone0.057326s0.134567s
Success
memory_error_test.cSuccessNone0.058019s0.157950s
Success
mmap.cSuccessNone0.047875s0.112508s
Success
mmap_aligned.cSuccessNone0.049001s0.130400s
Success
mmap_complicated.cSuccessNone0.053706s0.153160s
Success
mmap_file.cSuccessNone0.056355s0.125239s
Success
mmap_shared.cSuccessNone0.069803s0.207905s
Success
mmaptest.cSuccessNone0.054694s0.131108s
Success
mprotect.cSuccessNone0.048231s0.114326s
Success
mprotect_boundary.cSuccessNone0.060401s0.145511s
Success
mprotect_end_region.cSuccessNone0.048520s0.130664s
Success
mprotect_middle_region.cSuccessNone0.047776s0.121177s
Success
mprotect_multiple_times.cSuccessNone0.045644s0.119414s
Success
mprotect_same_value.cSuccessNone0.050855s0.123820s
Success
mprotect_spanning_regions.cSuccessNone0.048506s0.159868s
Success
munmap_adjacent_shm.cSuccessNone0.055272s0.132844s
Success
sbrk.cSuccessNone0.061404s0.135800s
Success
segfault.cSuccessNone0.056226s0.164348s
Success
shm.cSuccessNone0.055771s0.146212s
Success
shmtest.cSuccessNone0.047264s0.116141s
Success
thread_malloc_sequential.cSuccessNone0.055155s0.214709s
Success
vtable.cSuccessNone0.077986s0.164897s
Success
Networking Tests
accept4.cSuccessNone0.059693s0.137886s
Success
dns_resolve_test.cSuccessNone0.051628s0.121147s
Success
dnstest.cSuccessNone0.054903s0.124224s
Success
epoll_badfd.cSuccessNone0.049196s0.109009s
Success
epoll_edge_triggered.cSuccessNone0.212122s0.380026s
Success
epollcreate1.cSuccessNone0.056939s0.131524s
Success
error_handling_net.cSuccessNone0.063584s0.195556s
Success
getaddrinfo_test.cSuccessNone0.059337s0.158551s
Success
getaddrinfo_unspec.cSuccessNone0.062193s0.141226s
Success
gethostname.cSuccessNone0.048205s0.104780s
Success
getifaddrs.cSuccessNone0.056680s0.126527s
Success
getsockname.cSuccessNone0.056706s0.122109s
Success
getsockopt.cSuccessNone0.060631s0.163360s
Success
ipv6_basic.cSuccessNone0.060795s0.156729s
Success
makepipe.cSuccessNone0.048284s0.104126s
Success
nonblocking_eagain.cSuccessNone0.057962s0.165672s
Success
pipe.cSuccessNone0.057373s0.130514s
Success
pipe2.cSuccessNone0.056845s0.124654s
Success
pipeinput.cSuccessNone0.057643s0.158731s
Success
pipeinput2.cSuccessNone0.056403s0.158412s
Success
pipeonestring.cSuccessNone0.057369s0.154188s
Success
pipepong.cSuccessNone0.056660s0.162828s
Success
pipewrite.cSuccessNone0.051113s0.121543s
Success
poll.cSuccessNone0.054950s0.118436s
Success
recvfrom-sendto.cSuccessNone0.056084s0.135044s
Success
sendmsg_recvmsg_test.cSuccessNone0.056472s0.134713s
Success
serverclient.cSuccessNone0.056243s0.138338s
Success
shutdown.cSuccessNone0.059065s0.133781s
Success
shutdown_fork.cSuccessNone0.058685s0.143800s
Success
simple-select.cSuccessNone0.057952s0.159125s
Success
simple_epoll.cSuccessNone0.053800s0.124222s
Success
socket.cSuccessNone0.053254s0.118072s
Success
socket_cloexec.cSuccessNone0.051932s0.117109s
Success
socket_options_advanced.cSuccessNone0.060247s0.172304s
Success
socketepoll.cSuccessNone0.052728s0.119150s
Success
socketpair.cSuccessNone0.052884s0.140855s
Success
socketselect.cSuccessNone0.052869s0.124774s
Success
udp_send_recv.cSuccessNone0.163087s0.278479s
Success
uds-getsockname.cSuccessNone0.055593s0.120223s
Success
uds-nb-select.cSuccessNone2.066494s2.199570s
Success
uds-serverclient.cSuccessNone0.058876s0.163216s
Success
uds-socketselect.cSuccessNone0.055037s0.129411s
Success
uds_listen_poll.cSuccessNone1.062132s1.174507s
Success
writev_socket.cSuccessNone0.059615s0.155737s
Success
Process Tests
barrier_test.cSuccessNone0.053361s0.138327s
Success
chain_thread.cSuccessNone1.054232s1.155738s
Success
ctor_syscall_test.cSuccessNone0.042900s0.102298s
Success
cxa_atexit_test.cSuccessNone0.049942s0.109901s
Success
exec_non_utf8.cSuccessNone0.052434s0.116028s
Success
execve_shebang.cSuccessNone0.054130s0.117365s
Success
exit.cSuccessNone0.050858s0.110044s
Success
exit_failure.cSuccessNone0.072413s0.131625s
Success
exit_group_thread.cSuccessNone0.056046s0.154661s
Success
exit_status_first_wins.cSuccessNone0.057178s0.156373s
Success
flockfile_test.cSuccessNone0.053675s0.150310s
Success
fork2malloc.cSuccessNone0.055088s0.138135s
Success
fork_select.cSuccessNone0.053484s0.144362s
Success
fork_simple.cSuccessNone0.051185s0.128066s
Success
fork_syscall.cSuccessNone0.057740s0.617334s
Success
fork_tls_ctype.cSuccessNone0.055404s0.157193s
Success
forkandopen.cSuccessNone0.064796s0.164660s
Success
forkdup.cSuccessNone0.055332s0.142858s
Success
forkexecuid.cSuccessNone0.050842s0.150830s
Success
forkexecv-arg.cSuccessNone0.051065s0.142594s
Success
forkexecv.cSuccessNone0.049056s0.137570s
Success
forkfiles.cSuccessNone0.054238s0.141775s
Success
forkmalloc.cSuccessNone0.054191s0.133409s
Success
forknodup.cSuccessNone0.054140s0.143043s
Success
function-ptr.cSuccessNone0.049841s0.107045s
Success
getegid_syscall.cSuccessNone0.053092s0.462165s
Success
getgid_syscall.cSuccessNone0.053845s0.473215s
Success
getpid.cSuccessNone0.048121s0.102867s
Success
getpid_syscall.cSuccessNone0.056734s0.492895s
Success
getppid.cSuccessNone0.053186s0.134871s
Success
getppid_syscall.cSuccessNone0.056455s0.392185s
Success
getuid.cSuccessNone0.053883s0.114170s
Success
getuid_syscall.cSuccessNone0.054630s0.239123s
Success
hello-arg.cSuccessNone0.044345s0.108345s
Success
hello.cSuccessNone0.044444s0.100344s
Success
longjmp.cSuccessNone0.047317s0.112770s
Success
mutex.cSuccessNone2.057440s2.135971s
Success
printf_deadlock_smoke.cSuccessNone0.062127s0.169343s
Success
printf_thread_test.cSuccessNone0.052090s0.144383s
Success
sem_forks.cSuccessNone0.055824s0.175434s
Success
setsid.cSuccessNone0.045847s0.104583s
Success
template.cSuccessNone0.053724s0.177470s
Success
test_exec_nofork.cSuccessNone0.051688s0.132145s
Success
test_unlink_open_file.cSuccessNone0.048250s0.106163s
Success
thread-guard.cSuccessNone0.050933s0.135082s
Success
thread-test.cSuccessNone0.048397s0.123494s
Success
thread.cSuccessNone0.048708s0.122154s
Success
thread_cageid_race.cSuccessNone0.049408s0.306590s
Success
tls_test.cSuccessNone0.050932s0.162593s
Success
uname.cSuccessNone0.046066s0.103935s
Success
wait.cSuccessNone0.049895s0.147763s
Success
waitpid_anychild.cSuccessNone0.053755s0.135069s
Success
waitpid_syscall.cSuccessNone1.053704s1.230752s
Success
waitpid_wnohang.cSuccessNone0.053988s0.138168s
Success
Signal Tests
alarm.cSuccessNone7.052745s7.155359s
Success
eintr_fork_signal.cSuccessNone1.055222s1.153377s
Success
kill.cSuccessNone1.053631s1.144233s
Success
setitimer.cSuccessNone7.053644s7.150249s
Success
sigalrm.cSuccessNone2.053469s2.138431s
Success
sigaltstack.cSuccessNone0.055080s0.127911s
Success
sigchld.cSuccessNone1.055681s1.138237s
Success
signal-fork.cSuccessNone4.060279s4.135218s
Success
signal-simple.cSuccessNone0.054183s0.121357s
Success
signal_SIGCHLD.cSuccessNone0.053398s0.142552s
Success
signal_fork.cSuccessNone0.051433s0.139739s
Success
signal_int_ignored.cSuccessNone2.054404s2.139131s
Success
signal_kill_cleanup.cSuccessNone1.054572s1.137393s
Success
signal_procmask.cSuccessNone0.051351s0.122716s
Success
signal_read_interrupt.cSuccessNone0.558319s0.647730s
Success
signal_recursive.cSuccessNone0.049617s0.124852s
Success
signal_sa_mask.cSuccessNone0.047405s0.112423s
Success
signal_select_interrupt.cSuccessNone0.558524s0.650747s
Success
signal_write_interrupt.cSuccessNone1.058618s1.136653s
Success
sigpipe.cSuccessNone1.056186s1.149261s
Success
sigprocmask.cSuccessNone1.053204s1.127094s
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.045169s0.107021s
Success
Memory Tests
mmap-negative1.cSuccessNone0.120230s0.116484s
Success
mmap-negative2.cSuccessNone0.109628s0.121921s
Success
Signal Tests
signal_resethand.cSuccessNone1.055345s1.136134s
Success

C++ harness

Summary

MetricValue
Total1
Success1
Failures0
Compile failures0
Runtime failures0
Output mismatch0
Timeouts0

Cases

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

@vidyalakshmir vidyalakshmir changed the title initial inter-process/inter-machine library interposition implementaiton initial inter-process/inter-machine library interposition implementation May 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant