Skip to content

Adding support for unified rust cage/grate compilation through cargo#627

Merged
rennergade merged 9 commits intomainfrom
cargo-lind-compile
Jan 26, 2026
Merged

Adding support for unified rust cage/grate compilation through cargo#627
rennergade merged 9 commits intomainfrom
cargo-lind-compile

Conversation

@stupendoussuperpowers
Copy link
Contributor

Basic Changes

From the Rust book https://doc.rust-lang.org/book/ch14-05-extending-cargo.html:

Cargo is designed so that you can extend it with new subcommands without having to modify it. If a binary in your $PATH is named cargo-something, you can run it as if it were a Cargo subcommand by running cargo something

This PR adds the cargo-lind_compile script which compiles the crate using all the settings detailed in #577, runs wasm-opt on the output binary, and places this script in PATH for the docker images. This lets us compile a rust crate into a lind-compatible binary just using cargo lind_compile, without requiring any extra configurations such as .cargo/config.toml.

Non deterministic --epoch-injection with Rust

Depending on what functions/libraries already exist in the pre-optimized wasm binary, the wasm-opt --epoch-injection step injects either wasi_snapshot_preview1.epoch_callback or lind.epoch_callback to the final binary.

This issue does not exist with C code.

The linker in lind-common only exports wasi_snapshot_preview1.epoch_callback and therefore, the binaries that have lind.epoch_callback trigger runtime errors.

Delineating two examples,

  1. Basic Hello World

     fn main() {
         println!("Hello, world!");
     }

    Compiles to give:

    Import[8]:
     - memory[0] pages: initial=19 max=1024 shared <- env.memory
     - func[0] sig=4 <__imported_wasi_lind_setjmp> <- lind.lind-setjmp
     - func[1] sig=2 <__imported_wasi_lind_longjmp> <- lind.lind-longjmp
     - func[2] sig=13 <__lind_make_syscall_trampoline> <- lind.make-syscall
     - func[3] sig=14 <__imported_lind_get_memory_base> <- lind.lind-get-memory-base
     - func[4] sig=14 <__imported_lind_get_cage_id> <- lind.lind-get-cage-id
     - func[5] sig=2 <__imported_wasi_snapshot_preview1_environ_get> <- wasi_snapshot_preview1.environ_get
     - func[6] sig=2 <__imported_wasi_snapshot_preview1_environ_sizes_get> <- wasi_snapshot_preview1.environ_sizes_get
    

    wasm-opts into:

     - func[7] sig=8 <lind.epoch_callback> <- lind.epoch_callback
     - global[3] i64 mutable=1 <epoch> - init i64=0
     - global[3] -> "epoch"
    
  2. Using std::env

    use std::env;
    
    fn main() {
        // Force WASI args imports to remain in the binary.
        // (We intentionally do not use the values, just force the import.)
        let _ = env::args().count();
    
        println!("Hello, world!");
    }

    Compiles into:

    Import[10]:
     - memory[0] pages: initial=19 max=1024 shared <- env.memory
     - func[0] sig=2 <wasi::lib_generated::wasi_snapshot_preview1::args_sizes_get> <-  wasi_snapshot_preview1.args_sizes_get
     - func[1] sig=2 <wasi::lib_generated::wasi_snapshot_preview1::args_get> <- wasi_snapshot_preview1.args_get
     - func[2] sig=4 <__imported_wasi_lind_setjmp> <- lind.lind-setjmp
     - func[3] sig=2 <__imported_wasi_lind_longjmp> <- lind.lind-longjmp
     - func[4] sig=13 <__lind_make_syscall_trampoline> <- lind.make-syscall
     - func[5] sig=14 <__imported_lind_get_memory_base> <- lind.lind-get-memory-base
     - func[6] sig=14 <__imported_lind_get_cage_id> <- lind.lind-get-cage-id
    

    wasm-opts into:

     - func[9] sig=8 <wasi_snapshot_preview1.epoch_callback> <- wasi_snapshot_preview1.epoch_callback
     - global[3] i64 mutable=1 <epoch> - init i64=0
     - global[3] -> "epoch"
    

To fix this, I added an export to lind.epoch_callback which does the same thing as the wasi_snapshot_preview1.epoch_callback, and this seems to solve the issue.

I could not find any documentation or source on how the --epoch-injection flags works, specifically on how it picks the namespace to use, so I wasn't able to investigate this discrepancy further. Tagging @qianxichen233 to help with this.

- Add cargo-lind_compile global binary
- Add lind::epoch_callback in the linker
@github-actions
Copy link
Contributor

End-to-End Test Report

Test Preview

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases87
Number of Successes87
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 TypeOutput
File Tests
chartests.cSuccessNone
Success
chdir_getcwd.cSuccessNone
Success
chmod.cSuccessNone
Success
close.cSuccessNone
Success
doubleclose.cSuccessNone
Success
dupwrite.cSuccessNone
Success
fchmod.cSuccessNone
Success
fcntl.cSuccessNone
Success
fdatasync.cSuccessNone
Success
filetest.cSuccessNone
Success
filetest1000.cSuccessNone
Success
fstat.cSuccessNone
Success
fsync.cSuccessNone
Success
ftruncate.cSuccessNone
Success
getcwd.cSuccessNone
Success
getrandom.cSuccessNone
Success
ioctl.cSuccessNone
Success
link.cSuccessNone
Success
lseek.cSuccessNone
Success
mkdir_rmdir.cSuccessNone
Success
open.cSuccessNone
Success
pread_pwrite.cSuccessNone
Success
printf.cSuccessNone
Success
readbytes.cSuccessNone
Success
readlink.cSuccessNone
Success
rename.cSuccessNone
Success
stat.cSuccessNone
Success
sync_file_range.cSuccessNone
Success
truncate.cSuccessNone
Success
unlink.cSuccessNone
Success
unlinkat.cSuccessNone
Success
write.cSuccessNone
Success
writeloop.cSuccessNone
Success
writepartial.cSuccessNone
Success
writev.cSuccessNone
Success
Memory Tests
brk.cSuccessNone
Success
malloc.cSuccessNone
Success
memcpy.cSuccessNone
Success
memory_error_test.cSuccessNone
Success
mmap.cSuccessNone
Success
mmap_aligned.cSuccessNone
Success
mmap_file.cSuccessNone
Success
mprotect.cSuccessNone
Success
mprotect_boundary.cSuccessNone
Success
mprotect_end_region.cSuccessNone
Success
mprotect_middle_region.cSuccessNone
Success
mprotect_multiple_times.cSuccessNone
Success
mprotect_same_value.cSuccessNone
Success
mprotect_spanning_regions.cSuccessNone
Success
sbrk.cSuccessNone
Success
shmtest.cSuccessNone
Success
Networking Tests
gethostname.cSuccessNone
Success
makepipe.cSuccessNone
Success
pipepong.cSuccessNone
Success
poll.cSuccessNone
Success
recvfrom-sendto.cSuccessNone
Success
simple_epoll.cSuccessNone
Success
socket.cSuccessNone
Success
socket_cloexec.cSuccessNone
Success
socketpair.cSuccessNone
Success
tcp_connect_single.cSuccessNone
Success
Process Tests
chain_thread.cSuccessNone
Success
exit.cSuccessNone
Success
forkexecv-arg.cSuccessNone
Success
forkexecv.cSuccessNone
Success
function-ptr.cSuccessNone
Success
getppid.cSuccessNone
Success
getuid.cSuccessNone
Success
hello-arg.cSuccessNone
Success
hello.cSuccessNone
Success
longjmp.cSuccessNone
Success
mutex.cSuccessNone
Success
noforkfiles.cSuccessNone
Success
sem_forks.cSuccessNone
Success
setsid.cSuccessNone
Success
thread-test.cSuccessNone
Success
thread.cSuccessNone
Success
wait.cSuccessNone
Success
waitpid_anychild.cSuccessNone
Success
waitpid_wnohang.cSuccessNone
Success
Signal Tests
alarm.cSuccessNone
Success
setitimer.cSuccessNone
Success
sigalrm.cSuccessNone
Success
sigchld.cSuccessNone
Success
signal-fork.cSuccessNone
Success
signal-simple.cSuccessNone
Success
sigprocmask.cSuccessNone
Success
Non Deterministic Tests

Summary

MetricCount
Total Test Cases37
Number of Successes36
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 run1
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 TypeOutput
File Tests
clock_gettime_highlevel.cSuccessNone
Success
clock_gettime_simple.cSuccessNone
Success
dup.cSuccessNone
Success
fstatfs.cSuccessNone
Success
read.cSuccessNone
Success
statfs.cSuccessNone
Success
Memory Tests
malloc_large.cSuccessNone
Success
mmap_complicated.cSuccessNone
Success
mmap_shared.cSuccessNone
Success
segfault.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
shm.cSuccessNone
Success
vtable.cSuccessNone
Success
Networking Tests
dnstest.cSuccessNone
Success
getifaddrs.cSuccessNone
Success
pipe.cSuccessNone
Success
pipe2.cSuccessNone
Success
pipeinput.cSuccessNone
Success
pipeinput2.cSuccessNone
Success
pipeonestring.cSuccessNone
Success
pipewrite.cSuccessNone
Success
shutdown_fork.cSuccessNone
Success
simple-select.cSuccessNone
Success
Process Tests
fork2malloc.cSuccessNone
Success
fork_simple.cSuccessNone
Success
forkandopen.cSuccessNone
Success
forkfiles.cSuccessNone
Success
forkmalloc.cSuccessNone
Success
forknodup.cSuccessNone
Success
getpid.cSuccessNone
Success
Signal Tests
signal.cSuccessNone
Success
signal_SIGCHLD.cSuccessNone
Success
signal_fork.cSuccessNone
Success
signal_int_thread.cSuccessNone
Success
signal_longjmp.cSuccessNone
Success
signal_nodefer.cSuccessNone
Success
signal_procmask.cSuccessNone
Success
signal_sa_mask.cSuccessNone
Success
Fail Tests

Summary

MetricCount
Total Test Cases1
Number of Successes1
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 TypeOutput
Memory Tests
mmap-negative1.cSuccessNone
Success

@stupendoussuperpowers stupendoussuperpowers changed the title Adding unified support for cargo cage/grate compilation Adding support for unified rust cage/grate compilation through cargo Jan 24, 2026
@rennergade
Copy link
Contributor

This is really helpful thanks for putting this up. Would like @qianxichen233 opinions on the callbacks.

@qianxichen233
Copy link
Contributor

See PR#631 for the fix

@stupendoussuperpowers
Copy link
Contributor Author

Removed the epoch_callback change from this PR since yours handles that now.

@github-actions
Copy link
Contributor

End-to-End Test Report

Test Preview

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases87
Number of Successes86
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 run1
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 TypeOutput
File Tests
chartests.cSuccessNone
Success
chdir_getcwd.cSuccessNone
Success
chmod.cSuccessNone
Success
close.cSuccessNone
Success
doubleclose.cSuccessNone
Success
dupwrite.cSuccessNone
Success
fchmod.cSuccessNone
Success
fcntl.cSuccessNone
Success
fdatasync.cSuccessNone
Success
filetest.cSuccessNone
Success
filetest1000.cSuccessNone
Success
fstat.cSuccessNone
Success
fsync.cSuccessNone
Success
ftruncate.cSuccessNone
Success
getcwd.cSuccessNone
Success
getrandom.cSuccessNone
Success
ioctl.cSuccessNone
Success
link.cSuccessNone
Success
lseek.cSuccessNone
Success
mkdir_rmdir.cSuccessNone
Success
open.cSuccessNone
Success
pread_pwrite.cSuccessNone
Success
printf.cSuccessNone
Success
readbytes.cSuccessNone
Success
readlink.cSuccessNone
Success
rename.cSuccessNone
Success
stat.cSuccessNone
Success
sync_file_range.cSuccessNone
Success
truncate.cSuccessNone
Success
unlink.cSuccessNone
Success
unlinkat.cSuccessNone
Success
write.cSuccessNone
Success
writeloop.cSuccessNone
Success
writepartial.cSuccessNone
Success
writev.cSuccessNone
Success
Memory Tests
brk.cSuccessNone
Success
malloc.cSuccessNone
Success
memcpy.cSuccessNone
Success
memory_error_test.cSuccessNone
Success
mmap.cSuccessNone
Success
mmap_aligned.cSuccessNone
Success
mmap_file.cSuccessNone
Success
mprotect.cSuccessNone
Success
mprotect_boundary.cSuccessNone
Success
mprotect_end_region.cSuccessNone
Success
mprotect_middle_region.cSuccessNone
Success
mprotect_multiple_times.cSuccessNone
Success
mprotect_same_value.cSuccessNone
Success
mprotect_spanning_regions.cSuccessNone
Success
sbrk.cSuccessNone
Success
shmtest.cSuccessNone
Success
Networking Tests
gethostname.cSuccessNone
Success
makepipe.cSuccessNone
Success
pipepong.cSuccessNone
Success
poll.cSuccessNone
Success
recvfrom-sendto.cSuccessNone
Success
simple_epoll.cSuccessNone
Success
socket.cSuccessNone
Success
socket_cloexec.cSuccessNone
Success
socketpair.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
tcp_connect_single.cSuccessNone
Success
Process Tests
chain_thread.cSuccessNone
Success
exit.cSuccessNone
Success
forkexecv-arg.cSuccessNone
Success
forkexecv.cSuccessNone
Success
function-ptr.cSuccessNone
Success
getppid.cSuccessNone
Success
getuid.cSuccessNone
Success
hello-arg.cSuccessNone
Success
hello.cSuccessNone
Success
longjmp.cSuccessNone
Success
mutex.cSuccessNone
Success
noforkfiles.cSuccessNone
Success
sem_forks.cSuccessNone
Success
setsid.cSuccessNone
Success
thread-test.cSuccessNone
Success
thread.cSuccessNone
Success
wait.cSuccessNone
Success
waitpid_anychild.cSuccessNone
Success
waitpid_wnohang.cSuccessNone
Success
Signal Tests
alarm.cSuccessNone
Success
setitimer.cSuccessNone
Success
sigalrm.cSuccessNone
Success
sigchld.cSuccessNone
Success
signal-fork.cSuccessNone
Success
signal-simple.cSuccessNone
Success
sigprocmask.cSuccessNone
Success
Non Deterministic Tests

Summary

MetricCount
Total Test Cases37
Number of Successes37
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 TypeOutput
File Tests
clock_gettime_highlevel.cSuccessNone
Success
clock_gettime_simple.cSuccessNone
Success
dup.cSuccessNone
Success
fstatfs.cSuccessNone
Success
read.cSuccessNone
Success
statfs.cSuccessNone
Success
Memory Tests
malloc_large.cSuccessNone
Success
mmap_complicated.cSuccessNone
Success
mmap_shared.cSuccessNone
Success
segfault.cSuccessNone
Success
shm.cSuccessNone
Success
vtable.cSuccessNone
Success
Networking Tests
dnstest.cSuccessNone
Success
getifaddrs.cSuccessNone
Success
pipe.cSuccessNone
Success
pipe2.cSuccessNone
Success
pipeinput.cSuccessNone
Success
pipeinput2.cSuccessNone
Success
pipeonestring.cSuccessNone
Success
pipewrite.cSuccessNone
Success
shutdown_fork.cSuccessNone
Success
simple-select.cSuccessNone
Success
Process Tests
fork2malloc.cSuccessNone
Success
fork_simple.cSuccessNone
Success
forkandopen.cSuccessNone
Success
forkfiles.cSuccessNone
Success
forkmalloc.cSuccessNone
Success
forknodup.cSuccessNone
Success
getpid.cSuccessNone
Success
Signal Tests
signal.cSuccessNone
Success
signal_SIGCHLD.cSuccessNone
Success
signal_fork.cSuccessNone
Success
signal_int_thread.cSuccessNone
Success
signal_longjmp.cSuccessNone
Success
signal_nodefer.cSuccessNone
Success
signal_procmask.cSuccessNone
Success
signal_sa_mask.cSuccessNone
Success
Fail Tests

Summary

MetricCount
Total Test Cases1
Number of Successes1
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 TypeOutput
Memory Tests
mmap-negative1.cSuccessNone
Success

@rennergade
Copy link
Contributor

This should be good to merge but we should update this doc first: https://github.com/Lind-Project/lind-wasm/blob/main/docs/contribute/compile-with-rust.md

Can you make it so it is just an easy how to on using your script at the top but still keeps the details after for people who want to learn more. Also lets link to this from getting-started.md

@stupendoussuperpowers
Copy link
Contributor Author

Updated the docs.

@github-actions
Copy link
Contributor

End-to-End Test Report

Test Preview

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases98
Number of Successes95
Number of Failures3
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 Failure3
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 TypeOutput
File Tests
chartests.cSuccessNone
Success
chdir_getcwd.cSuccessNone
Success
chmod.cSuccessNone
Success
clock_gettime_simple.cSuccessNone
Success
close.cSuccessNone
Success
doubleclose.cSuccessNone
Success
dupwrite.cSuccessNone
Success
fchmod.cSuccessNone
Success
fcntl.cSuccessNone
Success
fdatasync.cSuccessNone
Success
filetest.cSuccessNone
Success
filetest1000.cSuccessNone
Success
fstat.cSuccessNone
Success
fstatfs.cSuccessNone
Success
fsync.cSuccessNone
Success
ftruncate.cSuccessNone
Success
getcwd.cSuccessNone
Success
getrandom.cSuccessNone
Success
ioctl.cSuccessNone
Success
link.cSuccessNone
Success
lseek.cSuccessNone
Success
mkdir_rmdir.cSuccessNone
Success
open.cSuccessNone
Success
pread_pwrite.cSuccessNone
Success
printf.cSuccessNone
Success
readbytes.cSuccessNone
Success
readlink.cSuccessNone
Success
rename.cSuccessNone
Success
stat.cSuccessNone
Success
statfs.cSuccessNone
Success
sync_file_range.cSuccessNone
Success
truncate.cSuccessNone
Success
unlink.cSuccessNone
Success
unlinkat.cSuccessNone
Success
write.cSuccessNone
Success
writeloop.cSuccessNone
Success
writepartial.cSuccessNone
Success
writev.cSuccessNone
Success
Memory Tests
brk.cSuccessNone
Success
malloc.cSuccessNone
Success
malloc_large.cSuccessNone
Success
memcpy.cSuccessNone
Success
memory_error_test.cSuccessNone
Success
mmap.cSuccessNone
Success
mmap_aligned.cSuccessNone
Success
mmap_file.cSuccessNone
Success
mmap_shared.cSuccessNone
Success
mprotect.cSuccessNone
Success
mprotect_boundary.cSuccessNone
Success
mprotect_end_region.cSuccessNone
Success
mprotect_middle_region.cSuccessNone
Success
mprotect_multiple_times.cSuccessNone
Success
mprotect_same_value.cSuccessNone
Success
mprotect_spanning_regions.cSuccessNone
Success
sbrk.cSuccessNone
Success
shmtest.cSuccessNone
Success
Networking Tests
gethostname.cSuccessNone
Success
makepipe.cSuccessNone
Success
pipepong.cSuccessNone
Success
poll.cSuccessNone
Success
recvfrom-sendto.cSuccessNone
Success
simple-select.cSuccessNone
Success
simple_epoll.cSuccessNone
Success
socket.cSuccessNone
Success
socket_cloexec.cSuccessNone
Success
socketpair.cSuccessNone
Success
tcp_connect_single.cSuccessNone
Success
Process Tests
chain_thread.cSuccessNone
Success
exit.cSuccessNone
Success
fork2malloc.cFailureLind_wasm_Segmentation_Fault
/tmp/wasmtest_artifacts_mad733nb/process_tests/deterministic/fork2malloc.c:32: int main(void): Assertion `waited_pid >= 0' failed.
Error: failed to run main module `/tmp/wasmtest_artifacts_mad733nb/process_tests/deterministic/fork2malloc.cwasm`

Caused by:
0: failed to invoke command default
1: error while executing at wasm backtrace:
0: 0x3846c - fork2malloc.wasm!abort
1: 0x29c5 - fork2malloc.wasm!__assert_fail_base
2: 0x2b9a - fork2malloc.wasm!__assert_fail
3: 0x119f - fork2malloc.wasm!__original_main
4: 0xd87 - fork2malloc.wasm!_start
5: 0x9d3af - fork2malloc.wasm!_start.command_export
note: using the WASMTIME_BACKTRACE_DETAILS=1 environment variable may show more debugging information
2: wasm trap: wasm unreachable instruction executed

forkexecv-arg.cSuccessNone
Success
forkexecv.cSuccessNone
Success
forkmalloc.cSuccessNone
Success
function-ptr.cSuccessNone
Success
getpid.cSuccessNone
Success
getppid.cSuccessNone
Success
getuid.cSuccessNone
Success
hello-arg.cSuccessNone
Success
hello.cSuccessNone
Success
longjmp.cSuccessNone
Success
mutex.cSuccessNone
Success
noforkfiles.cSuccessNone
Success
sem_forks.cSuccessNone
Success
setsid.cSuccessNone
Success
template.cFailureLind_wasm_Segmentation_Fault
/tmp/wasmtest_artifacts_mad733nb/process_tests/deterministic/template.c:40: int main(void): Assertion `waited1 >= 0' failed.
Error: failed to run main module `/tmp/wasmtest_artifacts_mad733nb/process_tests/deterministic/template.cwasm`

Caused by:
0: failed to invoke command default
1: error while executing at wasm backtrace:
0: 0x386a3 - template.wasm!abort
1: 0x1ea3 - template.wasm!__assert_fail_base
2: 0x2078 - template.wasm!__assert_fail
3: 0x1272 - template.wasm!__original_main
4: 0xd88 - template.wasm!_start
5: 0x9d793 - template.wasm!_start.command_export
note: using the WASMTIME_BACKTRACE_DETAILS=1 environment variable may show more debugging information
2: wasm trap: wasm unreachable instruction executed

thread-test.cSuccessNone
Success
thread.cSuccessNone
Success
wait.cSuccessNone
Success
waitpid_anychild.cSuccessNone
Success
waitpid_wnohang.cSuccessNone
Success
Signal Tests
alarm.cSuccessNone
Success
setitimer.cSuccessNone
Success
sigalrm.cSuccessNone
Success
sigchld.cSuccessNone
Success
signal-fork.cSuccessNone
Success
signal-simple.cSuccessNone
Success
signal_SIGCHLD.cFailureLind_wasm_Segmentation_Fault
/tmp/wasmtest_artifacts_mad733nb/signal_tests/deterministic/signal_SIGCHLD.c:36: int main(): Assertion `waited_pid >= 0' failed.
Error: failed to run main module `/tmp/wasmtest_artifacts_mad733nb/signal_tests/deterministic/signal_SIGCHLD.cwasm`

Caused by:
0: failed to invoke command default
1: error while executing at wasm backtrace:
0: 0x384d5 - signal_SIGCHLD.wasm!abort
1: 0x1cd4 - signal_SIGCHLD.wasm!__assert_fail_base
2: 0x1ea9 - signal_SIGCHLD.wasm!__assert_fail
3: 0x11d3 - signal_SIGCHLD.wasm!__original_main
4: 0xd8c - signal_SIGCHLD.wasm!_start
5: 0x9d8c3 - signal_SIGCHLD.wasm!_start.command_export
note: using the WASMTIME_BACKTRACE_DETAILS=1 environment variable may show more debugging information
2: wasm trap: wasm unreachable instruction executed

sigprocmask.cSuccessNone
Success
Non Deterministic Tests

Summary

MetricCount
Total Test Cases27
Number of Successes26
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 run1
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 TypeOutput
File Tests
clock_gettime_highlevel.cSuccessNone
Success
dup.cSuccessNone
Success
read.cSuccessNone
Success
Memory Tests
mmap_complicated.cSuccessNone
Success
segfault.cSuccessNone
Success
shm.cSuccessNone
Success
vtable.cSuccessNone
Success
Networking Tests
dnstest.cSuccessNone
Success
getifaddrs.cSuccessNone
Success
pipe.cSuccessNone
Success
pipe2.cSuccessNone
Success
pipeinput.cSuccessNone
Success
pipeinput2.cSuccessNone
Success
pipeonestring.cSuccessNone
Success
pipewrite.cSuccessNone
Success
shutdown_fork.cSuccessNone
Success
Process Tests
fork_simple.cSuccessNone
Success
forkandopen.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
forkfiles.cSuccessNone
Success
forknodup.cSuccessNone
Success
Signal Tests
signal.cSuccessNone
Success
signal_fork.cSuccessNone
Success
signal_int_thread.cSuccessNone
Success
signal_longjmp.cSuccessNone
Success
signal_nodefer.cSuccessNone
Success
signal_procmask.cSuccessNone
Success
signal_sa_mask.cSuccessNone
Success
Fail Tests

Summary

MetricCount
Total Test Cases1
Number of Successes1
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 TypeOutput
Memory Tests
mmap-negative1.cSuccessNone
Success

@github-actions
Copy link
Contributor

End-to-End Test Report

Test Preview

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases98
Number of Successes93
Number of Failures5
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 Failure4
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch1
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
chartests.cSuccessNone
Success
chdir_getcwd.cSuccessNone
Success
chmod.cSuccessNone
Success
clock_gettime_simple.cSuccessNone
Success
close.cSuccessNone
Success
doubleclose.cSuccessNone
Success
dupwrite.cSuccessNone
Success
fchmod.cSuccessNone
Success
fcntl.cSuccessNone
Success
fdatasync.cSuccessNone
Success
filetest.cSuccessNone
Success
filetest1000.cSuccessNone
Success
fstat.cSuccessNone
Success
fstatfs.cSuccessNone
Success
fsync.cSuccessNone
Success
ftruncate.cSuccessNone
Success
getcwd.cSuccessNone
Success
getrandom.cSuccessNone
Success
ioctl.cSuccessNone
Success
link.cSuccessNone
Success
lseek.cSuccessNone
Success
mkdir_rmdir.cSuccessNone
Success
open.cSuccessNone
Success
pread_pwrite.cSuccessNone
Success
printf.cSuccessNone
Success
readbytes.cSuccessNone
Success
readlink.cSuccessNone
Success
rename.cSuccessNone
Success
stat.cSuccessNone
Success
statfs.cSuccessNone
Success
sync_file_range.cSuccessNone
Success
truncate.cSuccessNone
Success
unlink.cSuccessNone
Success
unlinkat.cSuccessNone
Success
write.cSuccessNone
Success
writeloop.cSuccessNone
Success
writepartial.cSuccessNone
Success
writev.cSuccessNone
Success
Memory Tests
brk.cSuccessNone
Success
malloc.cSuccessNone
Success
malloc_large.cSuccessNone
Success
memcpy.cSuccessNone
Success
memory_error_test.cSuccessNone
Success
mmap.cSuccessNone
Success
mmap_aligned.cSuccessNone
Success
mmap_file.cSuccessNone
Success
mmap_shared.cSuccessNone
Success
mprotect.cSuccessNone
Success
mprotect_boundary.cSuccessNone
Success
mprotect_end_region.cSuccessNone
Success
mprotect_middle_region.cSuccessNone
Success
mprotect_multiple_times.cSuccessNone
Success
mprotect_same_value.cSuccessNone
Success
mprotect_spanning_regions.cSuccessNone
Success
sbrk.cSuccessNone
Success
shmtest.cSuccessNone
Success
Networking Tests
gethostname.cSuccessNone
Success
makepipe.cSuccessNone
Success
pipepong.cSuccessNone
Success
poll.cSuccessNone
Success
recvfrom-sendto.cSuccessNone
Success
simple-select.cFailureLind_wasm_Segmentation_Fault
/tmp/wasmtest_artifacts_ehwt2pwy/networking_tests/deterministic/simple-select.c:65: int main(void): Assertion `waited_pid >= 0' failed.
Error: failed to run main module `/tmp/wasmtest_artifacts_ehwt2pwy/networking_tests/deterministic/simple-select.cwasm`

Caused by:
0: failed to invoke command default
1: error while executing at wasm backtrace:
0: 0x388da - simple-select.wasm!abort
1: 0x2fff - simple-select.wasm!__assert_fail_base
2: 0x31d4 - simple-select.wasm!__assert_fail
3: 0x16bb - simple-select.wasm!__original_main
4: 0xd89 - simple-select.wasm!_start
5: 0x9dc5f - simple-select.wasm!_start.command_export
note: using the WASMTIME_BACKTRACE_DETAILS=1 environment variable may show more debugging information
2: wasm trap: wasm unreachable instruction executed

simple_epoll.cSuccessNone
Success
socket.cSuccessNone
Success
socket_cloexec.cSuccessNone
Success
socketpair.cSuccessNone
Success
tcp_connect_single.cSuccessNone
Success
Process Tests
chain_thread.cSuccessNone
Success
exit.cSuccessNone
Success
fork2malloc.cFailureLind_wasm_Segmentation_Fault
/tmp/wasmtest_artifacts_ehwt2pwy/process_tests/deterministic/fork2malloc.c:32: int main(void): Assertion `waited_pid >= 0' failed.
Error: failed to run main module `/tmp/wasmtest_artifacts_ehwt2pwy/process_tests/deterministic/fork2malloc.cwasm`

Caused by:
0: failed to invoke command default
1: error while executing at wasm backtrace:
0: 0x3846c - fork2malloc.wasm!abort
1: 0x29c5 - fork2malloc.wasm!__assert_fail_base
2: 0x2b9a - fork2malloc.wasm!__assert_fail
3: 0x119f - fork2malloc.wasm!__original_main
4: 0xd87 - fork2malloc.wasm!_start
5: 0x9d3af - fork2malloc.wasm!_start.command_export
note: using the WASMTIME_BACKTRACE_DETAILS=1 environment variable may show more debugging information
2: wasm trap: wasm unreachable instruction executed

forkexecv-arg.cSuccessNone
Success
forkexecv.cSuccessNone
Success
forkmalloc.cSuccessNone
Success
function-ptr.cSuccessNone
Success
getpid.cSuccessNone
Success
getppid.cSuccessNone
Success
getuid.cSuccessNone
Success
hello-arg.cSuccessNone
Success
hello.cSuccessNone
Success
longjmp.cSuccessNone
Success
mutex.cSuccessNone
Success
noforkfiles.cSuccessNone
Success
sem_forks.cSuccessNone
Success
setsid.cSuccessNone
Success
template.cFailureLind_wasm_Segmentation_Fault
/tmp/wasmtest_artifacts_ehwt2pwy/process_tests/deterministic/template.c:40: int main(void): Assertion `waited1 >= 0' failed.
Error: failed to run main module `/tmp/wasmtest_artifacts_ehwt2pwy/process_tests/deterministic/template.cwasm`

Caused by:
0: failed to invoke command default
1: error while executing at wasm backtrace:
0: 0x386a3 - template.wasm!abort
1: 0x1ea3 - template.wasm!__assert_fail_base
2: 0x2078 - template.wasm!__assert_fail
3: 0x1272 - template.wasm!__original_main
4: 0xd88 - template.wasm!_start
5: 0x9d793 - template.wasm!_start.command_export
note: using the WASMTIME_BACKTRACE_DETAILS=1 environment variable may show more debugging information
2: wasm trap: wasm unreachable instruction executed

thread-test.cSuccessNone
Success
thread.cSuccessNone
Success
wait.cSuccessNone
Success
waitpid_anychild.cFailureOutput_mismatch
=== Expected Output ===
Test Passed: waitpid(-1) correctly waited for child

=== WASM Output ===
waitpid return -1, errono=4

waitpid_wnohang.cSuccessNone
Success
Signal Tests
alarm.cSuccessNone
Success
setitimer.cSuccessNone
Success
sigalrm.cSuccessNone
Success
sigchld.cSuccessNone
Success
signal-fork.cSuccessNone
Success
signal-simple.cSuccessNone
Success
signal_SIGCHLD.cFailureLind_wasm_Segmentation_Fault
/tmp/wasmtest_artifacts_ehwt2pwy/signal_tests/deterministic/signal_SIGCHLD.c:36: int main(): Assertion `waited_pid >= 0' failed.
Error: failed to run main module `/tmp/wasmtest_artifacts_ehwt2pwy/signal_tests/deterministic/signal_SIGCHLD.cwasm`

Caused by:
0: failed to invoke command default
1: error while executing at wasm backtrace:
0: 0x384d5 - signal_SIGCHLD.wasm!abort
1: 0x1cd4 - signal_SIGCHLD.wasm!__assert_fail_base
2: 0x1ea9 - signal_SIGCHLD.wasm!__assert_fail
3: 0x11d3 - signal_SIGCHLD.wasm!__original_main
4: 0xd8c - signal_SIGCHLD.wasm!_start
5: 0x9d8c3 - signal_SIGCHLD.wasm!_start.command_export
note: using the WASMTIME_BACKTRACE_DETAILS=1 environment variable may show more debugging information
2: wasm trap: wasm unreachable instruction executed

sigprocmask.cSuccessNone
Success
Non Deterministic Tests

Summary

MetricCount
Total Test Cases27
Number of Successes26
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 run1
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 TypeOutput
File Tests
clock_gettime_highlevel.cSuccessNone
Success
dup.cSuccessNone
Success
read.cSuccessNone
Success
Memory Tests
mmap_complicated.cSuccessNone
Success
segfault.cSuccessNone
Success
shm.cSuccessNone
Success
vtable.cSuccessNone
Success
Networking Tests
dnstest.cSuccessNone
Success
getifaddrs.cSuccessNone
Success
pipe.cSuccessNone
Success
pipe2.cSuccessNone
Success
pipeinput.cSuccessNone
Success
pipeinput2.cSuccessNone
Success
pipeonestring.cSuccessNone
Success
pipewrite.cSuccessNone
Success
shutdown_fork.cSuccessNone
Success
Process Tests
fork_simple.cSuccessNone
Success
forkandopen.cSuccessNone
Success
forkfiles.cSuccessNone
Success
forknodup.cSuccessNone
Success
Signal Tests
signal.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
signal_fork.cSuccessNone
Success
signal_int_thread.cSuccessNone
Success
signal_longjmp.cSuccessNone
Success
signal_nodefer.cSuccessNone
Success
signal_procmask.cSuccessNone
Success
signal_sa_mask.cSuccessNone
Success
Fail Tests

Summary

MetricCount
Total Test Cases1
Number of Successes1
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 TypeOutput
Memory Tests
mmap-negative1.cSuccessNone
Success

@github-actions
Copy link
Contributor

End-to-End Test Report

Test Preview

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases98
Number of Successes93
Number of Failures5
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 Failure4
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch1
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
chartests.cSuccessNone
Success
chdir_getcwd.cSuccessNone
Success
chmod.cSuccessNone
Success
clock_gettime_simple.cSuccessNone
Success
close.cSuccessNone
Success
doubleclose.cSuccessNone
Success
dupwrite.cSuccessNone
Success
fchmod.cSuccessNone
Success
fcntl.cSuccessNone
Success
fdatasync.cSuccessNone
Success
filetest.cSuccessNone
Success
filetest1000.cSuccessNone
Success
fstat.cSuccessNone
Success
fstatfs.cSuccessNone
Success
fsync.cSuccessNone
Success
ftruncate.cSuccessNone
Success
getcwd.cSuccessNone
Success
getrandom.cSuccessNone
Success
ioctl.cSuccessNone
Success
link.cSuccessNone
Success
lseek.cSuccessNone
Success
mkdir_rmdir.cSuccessNone
Success
open.cSuccessNone
Success
pread_pwrite.cSuccessNone
Success
printf.cSuccessNone
Success
readbytes.cSuccessNone
Success
readlink.cSuccessNone
Success
rename.cSuccessNone
Success
stat.cSuccessNone
Success
statfs.cSuccessNone
Success
sync_file_range.cSuccessNone
Success
truncate.cSuccessNone
Success
unlink.cSuccessNone
Success
unlinkat.cSuccessNone
Success
write.cSuccessNone
Success
writeloop.cSuccessNone
Success
writepartial.cSuccessNone
Success
writev.cSuccessNone
Success
Memory Tests
brk.cSuccessNone
Success
malloc.cSuccessNone
Success
malloc_large.cSuccessNone
Success
memcpy.cSuccessNone
Success
memory_error_test.cSuccessNone
Success
mmap.cSuccessNone
Success
mmap_aligned.cSuccessNone
Success
mmap_file.cSuccessNone
Success
mmap_shared.cSuccessNone
Success
mprotect.cSuccessNone
Success
mprotect_boundary.cSuccessNone
Success
mprotect_end_region.cSuccessNone
Success
mprotect_middle_region.cSuccessNone
Success
mprotect_multiple_times.cSuccessNone
Success
mprotect_same_value.cSuccessNone
Success
mprotect_spanning_regions.cSuccessNone
Success
sbrk.cSuccessNone
Success
shmtest.cSuccessNone
Success
Networking Tests
gethostname.cSuccessNone
Success
makepipe.cSuccessNone
Success
pipepong.cSuccessNone
Success
poll.cSuccessNone
Success
recvfrom-sendto.cSuccessNone
Success
simple-select.cFailureLind_wasm_Segmentation_Fault
/tmp/wasmtest_artifacts_ehwt2pwy/networking_tests/deterministic/simple-select.c:65: int main(void): Assertion `waited_pid >= 0' failed.
Error: failed to run main module `/tmp/wasmtest_artifacts_ehwt2pwy/networking_tests/deterministic/simple-select.cwasm`

Caused by:
0: failed to invoke command default
1: error while executing at wasm backtrace:
0: 0x388da - simple-select.wasm!abort
1: 0x2fff - simple-select.wasm!__assert_fail_base
2: 0x31d4 - simple-select.wasm!__assert_fail
3: 0x16bb - simple-select.wasm!__original_main
4: 0xd89 - simple-select.wasm!_start
5: 0x9dc5f - simple-select.wasm!_start.command_export
note: using the WASMTIME_BACKTRACE_DETAILS=1 environment variable may show more debugging information
2: wasm trap: wasm unreachable instruction executed

simple_epoll.cSuccessNone
Success
socket.cSuccessNone
Success
socket_cloexec.cSuccessNone
Success
socketpair.cSuccessNone
Success
tcp_connect_single.cSuccessNone
Success
Process Tests
chain_thread.cSuccessNone
Success
exit.cSuccessNone
Success
fork2malloc.cFailureLind_wasm_Segmentation_Fault
/tmp/wasmtest_artifacts_ehwt2pwy/process_tests/deterministic/fork2malloc.c:32: int main(void): Assertion `waited_pid >= 0' failed.
Error: failed to run main module `/tmp/wasmtest_artifacts_ehwt2pwy/process_tests/deterministic/fork2malloc.cwasm`

Caused by:
0: failed to invoke command default
1: error while executing at wasm backtrace:
0: 0x3846c - fork2malloc.wasm!abort
1: 0x29c5 - fork2malloc.wasm!__assert_fail_base
2: 0x2b9a - fork2malloc.wasm!__assert_fail
3: 0x119f - fork2malloc.wasm!__original_main
4: 0xd87 - fork2malloc.wasm!_start
5: 0x9d3af - fork2malloc.wasm!_start.command_export
note: using the WASMTIME_BACKTRACE_DETAILS=1 environment variable may show more debugging information
2: wasm trap: wasm unreachable instruction executed

forkexecv-arg.cSuccessNone
Success
forkexecv.cSuccessNone
Success
forkmalloc.cSuccessNone
Success
function-ptr.cSuccessNone
Success
getpid.cSuccessNone
Success
getppid.cSuccessNone
Success
getuid.cSuccessNone
Success
hello-arg.cSuccessNone
Success
hello.cSuccessNone
Success
longjmp.cSuccessNone
Success
mutex.cSuccessNone
Success
noforkfiles.cSuccessNone
Success
sem_forks.cSuccessNone
Success
setsid.cSuccessNone
Success
template.cFailureLind_wasm_Segmentation_Fault
/tmp/wasmtest_artifacts_ehwt2pwy/process_tests/deterministic/template.c:40: int main(void): Assertion `waited1 >= 0' failed.
Error: failed to run main module `/tmp/wasmtest_artifacts_ehwt2pwy/process_tests/deterministic/template.cwasm`

Caused by:
0: failed to invoke command default
1: error while executing at wasm backtrace:
0: 0x386a3 - template.wasm!abort
1: 0x1ea3 - template.wasm!__assert_fail_base
2: 0x2078 - template.wasm!__assert_fail
3: 0x1272 - template.wasm!__original_main
4: 0xd88 - template.wasm!_start
5: 0x9d793 - template.wasm!_start.command_export
note: using the WASMTIME_BACKTRACE_DETAILS=1 environment variable may show more debugging information
2: wasm trap: wasm unreachable instruction executed

thread-test.cSuccessNone
Success
thread.cSuccessNone
Success
wait.cSuccessNone
Success
waitpid_anychild.cFailureOutput_mismatch
=== Expected Output ===
Test Passed: waitpid(-1) correctly waited for child

=== WASM Output ===
waitpid return -1, errono=4

waitpid_wnohang.cSuccessNone
Success
Signal Tests
alarm.cSuccessNone
Success
setitimer.cSuccessNone
Success
sigalrm.cSuccessNone
Success
sigchld.cSuccessNone
Success
signal-fork.cSuccessNone
Success
signal-simple.cSuccessNone
Success
signal_SIGCHLD.cFailureLind_wasm_Segmentation_Fault
/tmp/wasmtest_artifacts_ehwt2pwy/signal_tests/deterministic/signal_SIGCHLD.c:36: int main(): Assertion `waited_pid >= 0' failed.
Error: failed to run main module `/tmp/wasmtest_artifacts_ehwt2pwy/signal_tests/deterministic/signal_SIGCHLD.cwasm`

Caused by:
0: failed to invoke command default
1: error while executing at wasm backtrace:
0: 0x384d5 - signal_SIGCHLD.wasm!abort
1: 0x1cd4 - signal_SIGCHLD.wasm!__assert_fail_base
2: 0x1ea9 - signal_SIGCHLD.wasm!__assert_fail
3: 0x11d3 - signal_SIGCHLD.wasm!__original_main
4: 0xd8c - signal_SIGCHLD.wasm!_start
5: 0x9d8c3 - signal_SIGCHLD.wasm!_start.command_export
note: using the WASMTIME_BACKTRACE_DETAILS=1 environment variable may show more debugging information
2: wasm trap: wasm unreachable instruction executed

sigprocmask.cSuccessNone
Success
Non Deterministic Tests

Summary

MetricCount
Total Test Cases27
Number of Successes26
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 run1
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 TypeOutput
File Tests
clock_gettime_highlevel.cSuccessNone
Success
dup.cSuccessNone
Success
read.cSuccessNone
Success
Memory Tests
mmap_complicated.cSuccessNone
Success
segfault.cSuccessNone
Success
shm.cSuccessNone
Success
vtable.cSuccessNone
Success
Networking Tests
dnstest.cSuccessNone
Success
getifaddrs.cSuccessNone
Success
pipe.cSuccessNone
Success
pipe2.cSuccessNone
Success
pipeinput.cSuccessNone
Success
pipeinput2.cSuccessNone
Success
pipeonestring.cSuccessNone
Success
pipewrite.cSuccessNone
Success
shutdown_fork.cSuccessNone
Success
Process Tests
fork_simple.cSuccessNone
Success
forkandopen.cSuccessNone
Success
forkfiles.cSuccessNone
Success
forknodup.cSuccessNone
Success
Signal Tests
signal.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
signal_fork.cSuccessNone
Success
signal_int_thread.cSuccessNone
Success
signal_longjmp.cSuccessNone
Success
signal_nodefer.cSuccessNone
Success
signal_procmask.cSuccessNone
Success
signal_sa_mask.cSuccessNone
Success
Fail Tests

Summary

MetricCount
Total Test Cases1
Number of Successes1
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 TypeOutput
Memory Tests
mmap-negative1.cSuccessNone
Success

Copy link
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.

Looks great now. Approved.

@rennergade rennergade merged commit 588d608 into main Jan 26, 2026
2 of 3 checks passed
celinehoang177 pushed a commit that referenced this pull request Feb 2, 2026
…627)

* Add unified cargo compilation support.

- Add cargo-lind_compile global binary
- Add lind::epoch_callback in the linker

* Remove trailing escape sequence

* Add symlink to lind-cargo

* Handle epoch_callback change in #631

* wasip1-clang.sh: Fix the REPO_ROOT, chmod +x

* Update docs: compiling rust, getting started

* Remove .DS_Store

* Alias => lind-cargo-build

* More detailed contrib docs
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.

3 participants