Skip to content

Conversation

@DyanB
Copy link
Contributor

@DyanB DyanB commented Oct 14, 2025

Purpose:
Adding test harness support for forkexecv, forkexecv-arg, open and hello-arg tests

Issues:
Fixes #415 - Executable tests fix

Note:

  • Enhanced test harness can now scan for test files for exec calls and automatically compiles required helper binaries
  • Added hello-arg.c and forkexecv-arg.c test cases from this PR to validate file/executable paths
  • The new test harness worked for forkexecv test, so removed it from the skip_test_cases.txt

@github-actions
Copy link
Contributor

End-to-End Test Report

Test Preview

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases37
Number of Successes34
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 Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of GCC and Wasm Output mismatch3

Test Results by Category

Test CaseStatusError TypeOutput
Config Tests
dnstest.cSuccessNone
is sockfd valid? yes
37 is the length sent
53 is the length recieved
the dns lookup yields the ip address: 35.172.89.115
File Tests
doubleclose.cSuccessNone
dupwrite.cSuccessNone
write succeeded
ioctl.cSuccessNone
[For 0 = False and  = True]
[The answers should be F, T, F]

(0) Is the socket set for non-blocking I/O?: 0
[Setting socket for non_blocking I/O]
(1) Is the socket set for non-blocking I/O?: 2048
[Clearing socket for non-blocking I/O]
(2) Is the socket set for non-blocking I/O?: 0

open.cFailureOutput_mismatch
=== Expected Output ===
File opened successfully with fd = 3

=== WASM Output ===
open failed: No such file or directory

printf.cSuccessNone
Hello, World!
write.cSuccessNone
Hello world from Coulson's WASM
writeloop.cSuccessNone
write succeeded
writepartial.cSuccessNone
write
Memory Tests
brk.cSuccessNone
PASS
malloc.cSuccessNone
memcpy.cSuccessNone
Hello, World!
mmap_shared.cSuccessNone
parent value: 1234, 4321
parent value after fork: 1234, 4321
child value after fork: 1234, 4321
parent value after modification: 2333, 3332
child value after modification: 2333, 4321
mprotect.cSuccessNone
Mprotect write test text
sbrk.cSuccessNone
Content in allocated memory: Hello, sbrk memory!
shmtest.cSuccessNone
Networking Tests
makepipe.cSuccessNone
poll.cSuccessNone
stdout is ready for writing.
recvfrom-sendto.cSuccessNone
Client sent: Hello recvfrom!
simple_epoll.cSuccessNone
waiting for epoll event...
got data: hello epoll!

socket.cSuccessNone
Socket opened succesfully.
socket_cloexec.cSuccessNone
SOCK_CLOEXEC is set.
socketpair.cSuccessNone
-->In Xanadu, did Kublai Khan . . .
-->A stately pleasure dome decree . . .
tcp_connect_single.cSuccessNone
Process Tests
chain_thread.cSuccessNone
Outer thread running...
Inner thread running...
Inner thread done.
Outer thread done.
Main thread done.
exit.cSuccessNone
Exiting...

forkexecv-arg.cFailureOutput_mismatch
=== Expected Output ===
Received argument: hello-arg

=== WASM Output ===
execv failed: No such file or directory

forkexecv.cFailureOutput_mismatch
=== Expected Output ===
wark

=== WASM Output ===

function-ptr.cSuccessNone
Hello, World!
hello-arg.cSuccessNone
Received argument: hello-arg
hello.cSuccessNone
wark
noforkfiles.cSuccessNone
signal-fork.cSuccessNone
Successfully changed the signal handler for Signal 12
Killing Child
Signal Handler Test!
Exiting Child
thread-test.cSuccessNone
Hello from the thread!
Thread has finished execution
thread.cSuccessNone
Hello from thread
wait.cSuccessNone
Parent detected child finished.
Child exited with status 0
waitpid_wnohang.cSuccessNone
Non Deterministic Tests

Summary

MetricCount
Total Test Cases20
Number of Successes20
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 GCC and Wasm Output mismatch0

Test Results by Category

Test CaseStatusError TypeOutput
Config Tests
gethostname.cSuccessNone
Hostname: buildkitsandbox
sysconf.cSuccessNone
calling sysconf(sysconf())
File Tests
chdir_getcwd.cSuccessNone
getcwd() error: Success
getcwd() error: Success
clock_gettime_highlevel.cSuccessNone
Running 1,000,000 iterations...

Start time: 4295 clock ticks
End time: 6598 clock ticks
Elapsed CPU time: 0.002303 seconds

clock_gettime_simple.cSuccessNone
Current time: 1760464568 seconds and 847673514 nanoseconds
dup.cSuccessNone
duped fd: 3
attempting to write to dup() fd

write to dup() fd succeeded
write to old fd succeeded

fchdir.cSuccessNone
getcwd() error: Success
fstatfs.cSuccessNone
Error in open()
: No such file or directory
getcwd.cSuccessNone
getcwd() error: Success
read.cSuccessNone
open(): No such file or directory
statfs.cSuccessNone
Error in statfs
: No such file or directory
Memory Tests
mmap_complicated.cSuccessNone
Parent: Waiting for child to write.
Child: Writing to shared memory.
Parent: Reading from shared memory: 'Hello from the child process!'
Child: Reading from shared memory: 'Hello from the parent process!'
Child: Exiting.
Parent: Reading modified shared memory: 'Hello from the parent process!'
Parent: Exiting.
shm.cSuccessNone
Shared memory segment created with id: 1
Parent attached to shared memory at 0xffffe000
Parent wrote: 'Hello from parent'
Child attached to shared memory at 0xffffe000
Child reads: 'Hello from parent'
Child detached from shared memory
Parent reads: 'Hello from child'
Parent detached from shared memory
Shared memory segment removed
Networking Tests
pipe.cSuccessNone
pipe() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipe2.cSuccessNone
pipe2() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipewrite.cSuccessNone
Made pipe with write end 3 and read end 4
wrote 16
write 16
wrote 16
wrote three messages to the pipe
msg 0, length 16: hello, world #1
msg 1, length 16: hello, world #2
msg 2, length 16: hello, world #3
simple-select.cSuccessNone
[child] waiting for data...
[parent] writing message
[child] got data: hello select!

[child] waiting for data...
[child] pipe closed

Process Tests
getpid.cSuccessNone
printing pidSuccess
Signal Tests
signal.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
parent in loop, pid=1
Terminated
signal_int_thread.cSuccessNone
main starts!
Hello from thread
thread sleep
thread sleep
child ready to kill
child done kill
Terminated
child in loop, pid=2
Terminated
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2

@github-actions
Copy link
Contributor

End-to-End Test Report

Test Preview

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases37
Number of Successes34
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 Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of GCC and Wasm Output mismatch3

Test Results by Category

Test CaseStatusError TypeOutput
Config Tests
dnstest.cSuccessNone
is sockfd valid? yes
37 is the length sent
53 is the length recieved
the dns lookup yields the ip address: 35.172.89.115
File Tests
doubleclose.cSuccessNone
dupwrite.cSuccessNone
write succeeded
ioctl.cSuccessNone
[For 0 = False and  = True]
[The answers should be F, T, F]

(0) Is the socket set for non-blocking I/O?: 0
[Setting socket for non_blocking I/O]
(1) Is the socket set for non-blocking I/O?: 2048
[Clearing socket for non-blocking I/O]
(2) Is the socket set for non-blocking I/O?: 0

open.cFailureOutput_mismatch
=== Expected Output ===
File opened successfully with fd = 3

=== WASM Output ===
open failed: No such file or directory

printf.cSuccessNone
Hello, World!
write.cSuccessNone
Hello world from Coulson's WASM
writeloop.cSuccessNone
write succeeded
writepartial.cSuccessNone
write
Memory Tests
brk.cSuccessNone
PASS
malloc.cSuccessNone
memcpy.cSuccessNone
Hello, World!
mmap_shared.cSuccessNone
parent value: 1234, 4321
parent value after fork: 1234, 4321
child value after fork: 1234, 4321
parent value after modification: 2333, 3332
child value after modification: 2333, 4321
mprotect.cSuccessNone
Mprotect write test text
sbrk.cSuccessNone
Content in allocated memory: Hello, sbrk memory!
shmtest.cSuccessNone
Networking Tests
makepipe.cSuccessNone
poll.cSuccessNone
stdout is ready for writing.
recvfrom-sendto.cSuccessNone
Client sent: Hello recvfrom!
simple_epoll.cSuccessNone
waiting for epoll event...
got data: hello epoll!

socket.cSuccessNone
Socket opened succesfully.
socket_cloexec.cSuccessNone
SOCK_CLOEXEC is set.
socketpair.cSuccessNone
-->In Xanadu, did Kublai Khan . . .
-->A stately pleasure dome decree . . .
tcp_connect_single.cSuccessNone
Process Tests
chain_thread.cSuccessNone
Outer thread running...
Inner thread running...
Inner thread done.
Outer thread done.
Main thread done.
exit.cSuccessNone
Exiting...

forkexecv-arg.cFailureOutput_mismatch
=== Expected Output ===
Received argument: hello-arg

=== WASM Output ===
execv failed: No such file or directory

forkexecv.cFailureOutput_mismatch
=== Expected Output ===
wark

=== WASM Output ===

function-ptr.cSuccessNone
Hello, World!
hello-arg.cSuccessNone
Received argument: hello-arg
hello.cSuccessNone
wark
noforkfiles.cSuccessNone
signal-fork.cSuccessNone
Successfully changed the signal handler for Signal 12
Killing Child
Signal Handler Test!
Exiting Child
thread-test.cSuccessNone
Hello from the thread!
Thread has finished execution
thread.cSuccessNone
Hello from thread
wait.cSuccessNone
Parent detected child finished.
Child exited with status 0
waitpid_wnohang.cSuccessNone
Non Deterministic Tests

Summary

MetricCount
Total Test Cases20
Number of Successes20
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 GCC and Wasm Output mismatch0

Test Results by Category

Test CaseStatusError TypeOutput
Config Tests
gethostname.cSuccessNone
Hostname: buildkitsandbox
sysconf.cSuccessNone
calling sysconf(sysconf())
File Tests
chdir_getcwd.cSuccessNone
getcwd() error: Success
getcwd() error: Success
clock_gettime_highlevel.cSuccessNone
Running 1,000,000 iterations...

Start time: 4217 clock ticks
End time: 6475 clock ticks
Elapsed CPU time: 0.002258 seconds

clock_gettime_simple.cSuccessNone
Current time: 1760467309 seconds and 404942677 nanoseconds
dup.cSuccessNone
duped fd: 3
attempting to write to dup() fd

write to dup() fd succeeded
write to old fd succeeded

fchdir.cSuccessNone
getcwd() error: Success
fstatfs.cSuccessNone
Error in open()
: No such file or directory
getcwd.cSuccessNone
getcwd() error: Success
read.cSuccessNone
open(): No such file or directory
statfs.cSuccessNone
Error in statfs
: No such file or directory
Memory Tests
mmap_complicated.cSuccessNone
Parent: Waiting for child to write.
Child: Writing to shared memory.
Parent: Reading from shared memory: 'Hello from the child process!'
Child: Reading from shared memory: 'Hello from the parent process!'
Child: Exiting.
Parent: Reading modified shared memory: 'Hello from the parent process!'
Parent: Exiting.
shm.cSuccessNone
Shared memory segment created with id: 1
Parent attached to shared memory at 0xffffe000
Parent wrote: 'Hello from parent'
Child attached to shared memory at 0xffffe000
Child reads: 'Hello from parent'
Child detached from shared memory
Parent reads: 'Hello from child'
Parent detached from shared memory
Shared memory segment removed
Networking Tests
pipe.cSuccessNone
pipe() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipe2.cSuccessNone
pipe2() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipewrite.cSuccessNone
Made pipe with write end 3 and read end 4
wrote 16
write 16
wrote 16
wrote three messages to the pipe
msg 0, length 16: hello, world #1
msg 1, length 16: hello, world #2
msg 2, length 16: hello, world #3
simple-select.cSuccessNone
[child] waiting for data...
[parent] writing message
[child] got data: hello select!

[child] waiting for data...
[child] pipe closed

Process Tests
getpid.cSuccessNone
printing pidSuccess
Signal Tests
signal.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
parent in loop, pid=1
Terminated
signal_int_thread.cSuccessNone
main starts!
Hello from thread
thread sleep
thread sleep
child ready to kill
child done kill
Terminated
child in loop, pid=2
Terminated
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2

@github-actions
Copy link
Contributor

End-to-End Test Report

Test Preview

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases37
Number of Successes34
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 Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of GCC and Wasm Output mismatch3

Test Results by Category

Test CaseStatusError TypeOutput
Config Tests
dnstest.cSuccessNone
is sockfd valid? yes
37 is the length sent
53 is the length recieved
the dns lookup yields the ip address: 35.172.89.115
File Tests
doubleclose.cSuccessNone
dupwrite.cSuccessNone
write succeeded
ioctl.cSuccessNone
[For 0 = False and  = True]
[The answers should be F, T, F]

(0) Is the socket set for non-blocking I/O?: 0
[Setting socket for non_blocking I/O]
(1) Is the socket set for non-blocking I/O?: 2048
[Clearing socket for non-blocking I/O]
(2) Is the socket set for non-blocking I/O?: 0

open.cFailureOutput_mismatch
=== Expected Output ===
File opened successfully with fd = 3

=== WASM Output ===
open failed: No such file or directory

printf.cSuccessNone
Hello, World!
write.cSuccessNone
Hello world from Coulson's WASM
writeloop.cSuccessNone
write succeeded
writepartial.cSuccessNone
write
Memory Tests
brk.cSuccessNone
PASS
malloc.cSuccessNone
memcpy.cSuccessNone
Hello, World!
mmap_shared.cSuccessNone
parent value: 1234, 4321
parent value after fork: 1234, 4321
child value after fork: 1234, 4321
parent value after modification: 2333, 3332
child value after modification: 2333, 4321
mprotect.cSuccessNone
Mprotect write test text
sbrk.cSuccessNone
Content in allocated memory: Hello, sbrk memory!
shmtest.cSuccessNone
Networking Tests
makepipe.cSuccessNone
poll.cSuccessNone
stdout is ready for writing.
recvfrom-sendto.cSuccessNone
Client sent: Hello recvfrom!
simple_epoll.cSuccessNone
waiting for epoll event...
got data: hello epoll!

socket.cSuccessNone
Socket opened succesfully.
socket_cloexec.cSuccessNone
SOCK_CLOEXEC is set.
socketpair.cSuccessNone
-->In Xanadu, did Kublai Khan . . .
-->A stately pleasure dome decree . . .
tcp_connect_single.cSuccessNone
Process Tests
chain_thread.cSuccessNone
Outer thread running...
Inner thread running...
Inner thread done.
Outer thread done.
Main thread done.
exit.cSuccessNone
Exiting...

forkexecv-arg.cFailureOutput_mismatch
=== Expected Output ===
Received argument: hello-arg

=== WASM Output ===
execv failed: No such file or directory

forkexecv.cFailureOutput_mismatch
=== Expected Output ===
wark

=== WASM Output ===

function-ptr.cSuccessNone
Hello, World!
hello-arg.cSuccessNone
Received argument: hello-arg
hello.cSuccessNone
wark
noforkfiles.cSuccessNone
signal-fork.cSuccessNone
Successfully changed the signal handler for Signal 12
Killing Child
Signal Handler Test!
Exiting Child
thread-test.cSuccessNone
Hello from the thread!
Thread has finished execution
thread.cSuccessNone
Hello from thread
wait.cSuccessNone
Parent detected child finished.
Child exited with status 0
waitpid_wnohang.cSuccessNone
Non Deterministic Tests

Summary

MetricCount
Total Test Cases20
Number of Successes20
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 GCC and Wasm Output mismatch0

Test Results by Category

Test CaseStatusError TypeOutput
Config Tests
gethostname.cSuccessNone
Hostname: buildkitsandbox
sysconf.cSuccessNone
calling sysconf(sysconf())
File Tests
chdir_getcwd.cSuccessNone
getcwd() error: Success
getcwd() error: Success
clock_gettime_highlevel.cSuccessNone
Running 1,000,000 iterations...

Start time: 4348 clock ticks
End time: 6826 clock ticks
Elapsed CPU time: 0.002478 seconds

clock_gettime_simple.cSuccessNone
Current time: 1760469559 seconds and 931037398 nanoseconds
dup.cSuccessNone
duped fd: 3
attempting to write to dup() fd

write to dup() fd succeeded
write to old fd succeeded

fchdir.cSuccessNone
getcwd() error: Success
fstatfs.cSuccessNone
Error in open()
: No such file or directory
getcwd.cSuccessNone
getcwd() error: Success
read.cSuccessNone
open(): No such file or directory
statfs.cSuccessNone
Error in statfs
: No such file or directory
Memory Tests
mmap_complicated.cSuccessNone
Parent: Waiting for child to write.
Child: Writing to shared memory.
Parent: Reading from shared memory: 'Hello from the child process!'
Child: Reading from shared memory: 'Hello from the parent process!'
Child: Exiting.
Parent: Reading modified shared memory: 'Hello from the parent process!'
Parent: Exiting.
shm.cSuccessNone
Shared memory segment created with id: 1
Parent attached to shared memory at 0xffffe000
Parent wrote: 'Hello from parent'
Child attached to shared memory at 0xffffe000
Child reads: 'Hello from parent'
Child detached from shared memory
Parent reads: 'Hello from child'
Parent detached from shared memory
Shared memory segment removed
Networking Tests
pipe.cSuccessNone
pipe() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipe2.cSuccessNone
pipe2() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipewrite.cSuccessNone
Made pipe with write end 3 and read end 4
wrote 16
write 16
wrote 16
wrote three messages to the pipe
msg 0, length 16: hello, world #1
msg 1, length 16: hello, world #2
msg 2, length 16: hello, world #3
simple-select.cSuccessNone
[child] waiting for data...
[parent] writing message
[child] got data: hello select!

[child] waiting for data...
[child] pipe closed

Process Tests
getpid.cSuccessNone
printing pidSuccess
Signal Tests
signal.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
parent in loop, pid=1
Terminated
signal_int_thread.cSuccessNone
main starts!
Hello from thread
thread sleep
thread sleep
child ready to kill
child done kill
Terminated
child in loop, pid=2
Terminated
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2

@DyanB DyanB force-pushed the 415-executable-tests-fix branch from 65ec631 to 1b9ebac Compare October 14, 2025 22:32
@github-actions
Copy link
Contributor

End-to-End Test Report

Test Preview

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases37
Number of Successes34
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 Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of GCC and Wasm Output mismatch3

Test Results by Category

Test CaseStatusError TypeOutput
Config Tests
dnstest.cSuccessNone
is sockfd valid? yes
37 is the length sent
53 is the length recieved
the dns lookup yields the ip address: 35.172.89.115
File Tests
doubleclose.cSuccessNone
dupwrite.cSuccessNone
write succeeded
ioctl.cSuccessNone
[For 0 = False and  = True]
[The answers should be F, T, F]

(0) Is the socket set for non-blocking I/O?: 0
[Setting socket for non_blocking I/O]
(1) Is the socket set for non-blocking I/O?: 2048
[Clearing socket for non-blocking I/O]
(2) Is the socket set for non-blocking I/O?: 0

open.cFailureOutput_mismatch
=== Expected Output ===
File opened successfully with fd = 3

=== WASM Output ===
open failed: No such file or directory

printf.cSuccessNone
Hello, World!
write.cSuccessNone
Hello world from Coulson's WASM
writeloop.cSuccessNone
write succeeded
writepartial.cSuccessNone
write
Memory Tests
brk.cSuccessNone
PASS
malloc.cSuccessNone
memcpy.cSuccessNone
Hello, World!
mmap_shared.cSuccessNone
parent value: 1234, 4321
parent value after fork: 1234, 4321
child value after fork: 1234, 4321
parent value after modification: 2333, 3332
child value after modification: 2333, 4321
mprotect.cSuccessNone
Mprotect write test text
sbrk.cSuccessNone
Content in allocated memory: Hello, sbrk memory!
shmtest.cSuccessNone
Networking Tests
makepipe.cSuccessNone
poll.cSuccessNone
stdout is ready for writing.
recvfrom-sendto.cSuccessNone
Client sent: Hello recvfrom!
simple_epoll.cSuccessNone
waiting for epoll event...
got data: hello epoll!

socket.cSuccessNone
Socket opened succesfully.
socket_cloexec.cSuccessNone
SOCK_CLOEXEC is set.
socketpair.cSuccessNone
-->In Xanadu, did Kublai Khan . . .
-->A stately pleasure dome decree . . .
tcp_connect_single.cSuccessNone
Process Tests
chain_thread.cSuccessNone
Outer thread running...
Inner thread running...
Inner thread done.
Outer thread done.
Main thread done.
exit.cSuccessNone
Exiting...

forkexecv-arg.cFailureOutput_mismatch
=== Expected Output ===
Received argument: hello-arg

=== WASM Output ===
execv failed: No such file or directory

forkexecv.cFailureOutput_mismatch
=== Expected Output ===
wark

=== WASM Output ===

function-ptr.cSuccessNone
Hello, World!
hello-arg.cSuccessNone
Received argument: hello-arg
hello.cSuccessNone
wark
noforkfiles.cSuccessNone
signal-fork.cSuccessNone
Successfully changed the signal handler for Signal 12
Killing Child
Signal Handler Test!
Exiting Child
thread-test.cSuccessNone
Hello from the thread!
Thread has finished execution
thread.cSuccessNone
Hello from thread
wait.cSuccessNone
Parent detected child finished.
Child exited with status 0
waitpid_wnohang.cSuccessNone
Non Deterministic Tests

Summary

MetricCount
Total Test Cases20
Number of Successes20
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 GCC and Wasm Output mismatch0

Test Results by Category

Test CaseStatusError TypeOutput
Config Tests
gethostname.cSuccessNone
Hostname: buildkitsandbox
sysconf.cSuccessNone
calling sysconf(sysconf())
File Tests
chdir_getcwd.cSuccessNone
getcwd() error: Success
getcwd() error: Success
clock_gettime_highlevel.cSuccessNone
Running 1,000,000 iterations...

Start time: 4212 clock ticks
End time: 6474 clock ticks
Elapsed CPU time: 0.002262 seconds

clock_gettime_simple.cSuccessNone
Current time: 1760490008 seconds and 749702827 nanoseconds
dup.cSuccessNone
duped fd: 3
attempting to write to dup() fd

write to dup() fd succeeded
write to old fd succeeded

fchdir.cSuccessNone
getcwd() error: Success
fstatfs.cSuccessNone
Error in open()
: No such file or directory
getcwd.cSuccessNone
getcwd() error: Success
read.cSuccessNone
open(): No such file or directory
statfs.cSuccessNone
Error in statfs
: No such file or directory
Memory Tests
mmap_complicated.cSuccessNone
Parent: Waiting for child to write.
Child: Writing to shared memory.
Parent: Reading from shared memory: 'Hello from the child process!'
Child: Reading from shared memory: 'Hello from the parent process!'
Child: Exiting.
Parent: Reading modified shared memory: 'Hello from the parent process!'
Parent: Exiting.
shm.cSuccessNone
Shared memory segment created with id: 1
Parent attached to shared memory at 0xffffe000
Parent wrote: 'Hello from parent'
Child attached to shared memory at 0xffffe000
Child reads: 'Hello from parent'
Child detached from shared memory
Parent reads: 'Hello from child'
Parent detached from shared memory
Shared memory segment removed
Networking Tests
pipe.cSuccessNone
pipe() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipe2.cSuccessNone
pipe2() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipewrite.cSuccessNone
Made pipe with write end 3 and read end 4
wrote 16
write 16
wrote 16
wrote three messages to the pipe
msg 0, length 16: hello, world #1
msg 1, length 16: hello, world #2
msg 2, length 16: hello, world #3
simple-select.cSuccessNone
[child] waiting for data...
[parent] writing message
[child] got data: hello select!

[child] waiting for data...
[child] pipe closed

Process Tests
getpid.cSuccessNone
printing pidSuccess
Signal Tests
signal.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
parent in loop, pid=1
Terminated
signal_int_thread.cSuccessNone
main starts!
Hello from thread
thread sleep
thread sleep
child ready to kill
child done kill
Terminated
child in loop, pid=2
Terminated
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2

@github-actions
Copy link
Contributor

End-to-End Test Report

Test Preview

Test Report

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 run0
Number of Unknown Failure0
Number of GCC and Wasm Output mismatch1

Test Results by Category

Test CaseStatusError TypeOutput
Config Tests
dnstest.cSuccessNone
is sockfd valid? yes
37 is the length sent
53 is the length recieved
the dns lookup yields the ip address: 35.172.89.115
File Tests
doubleclose.cSuccessNone
dupwrite.cSuccessNone
write succeeded
ioctl.cSuccessNone
[For 0 = False and  = True]
[The answers should be F, T, F]

(0) Is the socket set for non-blocking I/O?: 0
[Setting socket for non_blocking I/O]
(1) Is the socket set for non-blocking I/O?: 2048
[Clearing socket for non-blocking I/O]
(2) Is the socket set for non-blocking I/O?: 0

open.cSuccessNone
File opened successfully with fd = 3
printf.cSuccessNone
Hello, World!
write.cSuccessNone
Hello world from Coulson's WASM
writeloop.cSuccessNone
write succeeded
writepartial.cSuccessNone
write
Memory Tests
brk.cSuccessNone
PASS
malloc.cSuccessNone
memcpy.cSuccessNone
Hello, World!
mmap_shared.cFailureOutput_mismatch
=== Expected Output ===
parent value: 1234, 4321
parent value after fork: 1234, 4321
child value after fork: 1234, 4321
parent value after modification: 2333, 3332
child value after modification: 2333, 4321

=== WASM Output ===
parent value: 1234, 4321
child value after fork: 1234, 4321
parent value after fork: 1234, 4321
parent value after modification: 2333, 3332
child value after modification: 2333, 4321

mprotect.cSuccessNone
Mprotect write test text
sbrk.cSuccessNone
Content in allocated memory: Hello, sbrk memory!
shmtest.cSuccessNone
Networking Tests
makepipe.cSuccessNone
poll.cSuccessNone
stdout is ready for writing.
recvfrom-sendto.cSuccessNone
Client sent: Hello recvfrom!
simple_epoll.cSuccessNone
waiting for epoll event...
got data: hello epoll!

socket.cSuccessNone
Socket opened succesfully.
socket_cloexec.cSuccessNone
SOCK_CLOEXEC is set.
socketpair.cSuccessNone
-->In Xanadu, did Kublai Khan . . .
-->A stately pleasure dome decree . . .
tcp_connect_single.cSuccessNone
Process Tests
chain_thread.cSuccessNone
Outer thread running...
Inner thread running...
Inner thread done.
Outer thread done.
Main thread done.
exit.cSuccessNone
Exiting...

forkexecv-arg.cSuccessNone
Received argument: hello-arg
forkexecv.cSuccessNone
wark
function-ptr.cSuccessNone
Hello, World!
hello-arg.cSuccessNone
Received argument: hello-arg
hello.cSuccessNone
wark
noforkfiles.cSuccessNone
signal-fork.cSuccessNone
Successfully changed the signal handler for Signal 12
Killing Child
Signal Handler Test!
Exiting Child
thread-test.cSuccessNone
Hello from the thread!
Thread has finished execution
thread.cSuccessNone
Hello from thread
wait.cSuccessNone
Parent detected child finished.
Child exited with status 0
waitpid_wnohang.cSuccessNone
Non Deterministic Tests

Summary

MetricCount
Total Test Cases20
Number of Successes20
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 GCC and Wasm Output mismatch0

Test Results by Category

Test CaseStatusError TypeOutput
Config Tests
gethostname.cSuccessNone
Hostname: buildkitsandbox
sysconf.cSuccessNone
calling sysconf(sysconf())
File Tests
chdir_getcwd.cSuccessNone
getcwd() error: Success
getcwd() error: Success
clock_gettime_highlevel.cSuccessNone
Running 1,000,000 iterations...

Start time: 3773 clock ticks
End time: 6156 clock ticks
Elapsed CPU time: 0.002383 seconds

clock_gettime_simple.cSuccessNone
Current time: 1760492775 seconds and 538532549 nanoseconds
dup.cSuccessNone
duped fd: 3
attempting to write to dup() fd

write to dup() fd succeeded
write to old fd succeeded

fchdir.cSuccessNone
getcwd() error: Success
fstatfs.cSuccessNone
Filesystem type: 794c7630
getcwd.cSuccessNone
getcwd() error: Success
read.cSuccessNone
open(): No such file or directory
statfs.cSuccessNone
Error in statfs
: No such file or directory
Memory Tests
mmap_complicated.cSuccessNone
Parent: Waiting for child to write.
Child: Writing to shared memory.
Parent: Reading from shared memory: 'Hello from the child process!'
Child: Reading from shared memory: 'Hello from the parent process!'
Child: Exiting.
Parent: Reading modified shared memory: 'Hello from the parent process!'
Parent: Exiting.
shm.cSuccessNone
Shared memory segment created with id: 1
Parent attached to shared memory at 0xffffe000
Parent wrote: 'Hello from parent'
Child attached to shared memory at 0xffffe000
Child reads: 'Hello from parent'
Child detached from shared memory
Parent reads: 'Hello from child'
Parent detached from shared memory
Shared memory segment removed
Networking Tests
pipe.cSuccessNone
pipe() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipe2.cSuccessNone
pipe2() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipewrite.cSuccessNone
Made pipe with write end 3 and read end 4
wrote 16
write 16
wrote 16
wrote three messages to the pipe
msg 0, length 16: hello, world #1
msg 1, length 16: hello, world #2
msg 2, length 16: hello, world #3
simple-select.cSuccessNone
[child] waiting for data...
[parent] writing message
[child] got data: hello select!

[child] waiting for data...
[child] pipe closed

Process Tests
getpid.cSuccessNone
printing pidSuccess
Signal Tests
signal.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
parent in loop, pid=1
Terminated
signal_int_thread.cSuccessNone
main starts!
Hello from thread
thread sleep
thread sleep
child ready to kill
child done kill
Terminated
child in loop, pid=2
Terminated
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2

2 similar comments
@github-actions
Copy link
Contributor

End-to-End Test Report

Test Preview

Test Report

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 run0
Number of Unknown Failure0
Number of GCC and Wasm Output mismatch1

Test Results by Category

Test CaseStatusError TypeOutput
Config Tests
dnstest.cSuccessNone
is sockfd valid? yes
37 is the length sent
53 is the length recieved
the dns lookup yields the ip address: 35.172.89.115
File Tests
doubleclose.cSuccessNone
dupwrite.cSuccessNone
write succeeded
ioctl.cSuccessNone
[For 0 = False and  = True]
[The answers should be F, T, F]

(0) Is the socket set for non-blocking I/O?: 0
[Setting socket for non_blocking I/O]
(1) Is the socket set for non-blocking I/O?: 2048
[Clearing socket for non-blocking I/O]
(2) Is the socket set for non-blocking I/O?: 0

open.cSuccessNone
File opened successfully with fd = 3
printf.cSuccessNone
Hello, World!
write.cSuccessNone
Hello world from Coulson's WASM
writeloop.cSuccessNone
write succeeded
writepartial.cSuccessNone
write
Memory Tests
brk.cSuccessNone
PASS
malloc.cSuccessNone
memcpy.cSuccessNone
Hello, World!
mmap_shared.cFailureOutput_mismatch
=== Expected Output ===
parent value: 1234, 4321
parent value after fork: 1234, 4321
child value after fork: 1234, 4321
parent value after modification: 2333, 3332
child value after modification: 2333, 4321

=== WASM Output ===
parent value: 1234, 4321
child value after fork: 1234, 4321
parent value after fork: 1234, 4321
parent value after modification: 2333, 3332
child value after modification: 2333, 4321

mprotect.cSuccessNone
Mprotect write test text
sbrk.cSuccessNone
Content in allocated memory: Hello, sbrk memory!
shmtest.cSuccessNone
Networking Tests
makepipe.cSuccessNone
poll.cSuccessNone
stdout is ready for writing.
recvfrom-sendto.cSuccessNone
Client sent: Hello recvfrom!
simple_epoll.cSuccessNone
waiting for epoll event...
got data: hello epoll!

socket.cSuccessNone
Socket opened succesfully.
socket_cloexec.cSuccessNone
SOCK_CLOEXEC is set.
socketpair.cSuccessNone
-->In Xanadu, did Kublai Khan . . .
-->A stately pleasure dome decree . . .
tcp_connect_single.cSuccessNone
Process Tests
chain_thread.cSuccessNone
Outer thread running...
Inner thread running...
Inner thread done.
Outer thread done.
Main thread done.
exit.cSuccessNone
Exiting...

forkexecv-arg.cSuccessNone
Received argument: hello-arg
forkexecv.cSuccessNone
wark
function-ptr.cSuccessNone
Hello, World!
hello-arg.cSuccessNone
Received argument: hello-arg
hello.cSuccessNone
wark
noforkfiles.cSuccessNone
signal-fork.cSuccessNone
Successfully changed the signal handler for Signal 12
Killing Child
Signal Handler Test!
Exiting Child
thread-test.cSuccessNone
Hello from the thread!
Thread has finished execution
thread.cSuccessNone
Hello from thread
wait.cSuccessNone
Parent detected child finished.
Child exited with status 0
waitpid_wnohang.cSuccessNone
Non Deterministic Tests

Summary

MetricCount
Total Test Cases20
Number of Successes20
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 GCC and Wasm Output mismatch0

Test Results by Category

Test CaseStatusError TypeOutput
Config Tests
gethostname.cSuccessNone
Hostname: buildkitsandbox
sysconf.cSuccessNone
calling sysconf(sysconf())
File Tests
chdir_getcwd.cSuccessNone
getcwd() error: Success
getcwd() error: Success
clock_gettime_highlevel.cSuccessNone
Running 1,000,000 iterations...

Start time: 3773 clock ticks
End time: 6156 clock ticks
Elapsed CPU time: 0.002383 seconds

clock_gettime_simple.cSuccessNone
Current time: 1760492775 seconds and 538532549 nanoseconds
dup.cSuccessNone
duped fd: 3
attempting to write to dup() fd

write to dup() fd succeeded
write to old fd succeeded

fchdir.cSuccessNone
getcwd() error: Success
fstatfs.cSuccessNone
Filesystem type: 794c7630
getcwd.cSuccessNone
getcwd() error: Success
read.cSuccessNone
open(): No such file or directory
statfs.cSuccessNone
Error in statfs
: No such file or directory
Memory Tests
mmap_complicated.cSuccessNone
Parent: Waiting for child to write.
Child: Writing to shared memory.
Parent: Reading from shared memory: 'Hello from the child process!'
Child: Reading from shared memory: 'Hello from the parent process!'
Child: Exiting.
Parent: Reading modified shared memory: 'Hello from the parent process!'
Parent: Exiting.
shm.cSuccessNone
Shared memory segment created with id: 1
Parent attached to shared memory at 0xffffe000
Parent wrote: 'Hello from parent'
Child attached to shared memory at 0xffffe000
Child reads: 'Hello from parent'
Child detached from shared memory
Parent reads: 'Hello from child'
Parent detached from shared memory
Shared memory segment removed
Networking Tests
pipe.cSuccessNone
pipe() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipe2.cSuccessNone
pipe2() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipewrite.cSuccessNone
Made pipe with write end 3 and read end 4
wrote 16
write 16
wrote 16
wrote three messages to the pipe
msg 0, length 16: hello, world #1
msg 1, length 16: hello, world #2
msg 2, length 16: hello, world #3
simple-select.cSuccessNone
[child] waiting for data...
[parent] writing message
[child] got data: hello select!

[child] waiting for data...
[child] pipe closed

Process Tests
getpid.cSuccessNone
printing pidSuccess
Signal Tests
signal.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
parent in loop, pid=1
Terminated
signal_int_thread.cSuccessNone
main starts!
Hello from thread
thread sleep
thread sleep
child ready to kill
child done kill
Terminated
child in loop, pid=2
Terminated
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2

@github-actions
Copy link
Contributor

End-to-End Test Report

Test Preview

Test Report

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 run0
Number of Unknown Failure0
Number of GCC and Wasm Output mismatch1

Test Results by Category

Test CaseStatusError TypeOutput
Config Tests
dnstest.cSuccessNone
is sockfd valid? yes
37 is the length sent
53 is the length recieved
the dns lookup yields the ip address: 35.172.89.115
File Tests
doubleclose.cSuccessNone
dupwrite.cSuccessNone
write succeeded
ioctl.cSuccessNone
[For 0 = False and  = True]
[The answers should be F, T, F]

(0) Is the socket set for non-blocking I/O?: 0
[Setting socket for non_blocking I/O]
(1) Is the socket set for non-blocking I/O?: 2048
[Clearing socket for non-blocking I/O]
(2) Is the socket set for non-blocking I/O?: 0

open.cSuccessNone
File opened successfully with fd = 3
printf.cSuccessNone
Hello, World!
write.cSuccessNone
Hello world from Coulson's WASM
writeloop.cSuccessNone
write succeeded
writepartial.cSuccessNone
write
Memory Tests
brk.cSuccessNone
PASS
malloc.cSuccessNone
memcpy.cSuccessNone
Hello, World!
mmap_shared.cFailureOutput_mismatch
=== Expected Output ===
parent value: 1234, 4321
parent value after fork: 1234, 4321
child value after fork: 1234, 4321
parent value after modification: 2333, 3332
child value after modification: 2333, 4321

=== WASM Output ===
parent value: 1234, 4321
child value after fork: 1234, 4321
parent value after fork: 1234, 4321
parent value after modification: 2333, 3332
child value after modification: 2333, 4321

mprotect.cSuccessNone
Mprotect write test text
sbrk.cSuccessNone
Content in allocated memory: Hello, sbrk memory!
shmtest.cSuccessNone
Networking Tests
makepipe.cSuccessNone
poll.cSuccessNone
stdout is ready for writing.
recvfrom-sendto.cSuccessNone
Client sent: Hello recvfrom!
simple_epoll.cSuccessNone
waiting for epoll event...
got data: hello epoll!

socket.cSuccessNone
Socket opened succesfully.
socket_cloexec.cSuccessNone
SOCK_CLOEXEC is set.
socketpair.cSuccessNone
-->In Xanadu, did Kublai Khan . . .
-->A stately pleasure dome decree . . .
tcp_connect_single.cSuccessNone
Process Tests
chain_thread.cSuccessNone
Outer thread running...
Inner thread running...
Inner thread done.
Outer thread done.
Main thread done.
exit.cSuccessNone
Exiting...

forkexecv-arg.cSuccessNone
Received argument: hello-arg
forkexecv.cSuccessNone
wark
function-ptr.cSuccessNone
Hello, World!
hello-arg.cSuccessNone
Received argument: hello-arg
hello.cSuccessNone
wark
noforkfiles.cSuccessNone
signal-fork.cSuccessNone
Successfully changed the signal handler for Signal 12
Killing Child
Signal Handler Test!
Exiting Child
thread-test.cSuccessNone
Hello from the thread!
Thread has finished execution
thread.cSuccessNone
Hello from thread
wait.cSuccessNone
Parent detected child finished.
Child exited with status 0
waitpid_wnohang.cSuccessNone
Non Deterministic Tests

Summary

MetricCount
Total Test Cases20
Number of Successes20
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 GCC and Wasm Output mismatch0

Test Results by Category

Test CaseStatusError TypeOutput
Config Tests
gethostname.cSuccessNone
Hostname: buildkitsandbox
sysconf.cSuccessNone
calling sysconf(sysconf())
File Tests
chdir_getcwd.cSuccessNone
getcwd() error: Success
getcwd() error: Success
clock_gettime_highlevel.cSuccessNone
Running 1,000,000 iterations...

Start time: 3773 clock ticks
End time: 6156 clock ticks
Elapsed CPU time: 0.002383 seconds

clock_gettime_simple.cSuccessNone
Current time: 1760492775 seconds and 538532549 nanoseconds
dup.cSuccessNone
duped fd: 3
attempting to write to dup() fd

write to dup() fd succeeded
write to old fd succeeded

fchdir.cSuccessNone
getcwd() error: Success
fstatfs.cSuccessNone
Filesystem type: 794c7630
getcwd.cSuccessNone
getcwd() error: Success
read.cSuccessNone
open(): No such file or directory
statfs.cSuccessNone
Error in statfs
: No such file or directory
Memory Tests
mmap_complicated.cSuccessNone
Parent: Waiting for child to write.
Child: Writing to shared memory.
Parent: Reading from shared memory: 'Hello from the child process!'
Child: Reading from shared memory: 'Hello from the parent process!'
Child: Exiting.
Parent: Reading modified shared memory: 'Hello from the parent process!'
Parent: Exiting.
shm.cSuccessNone
Shared memory segment created with id: 1
Parent attached to shared memory at 0xffffe000
Parent wrote: 'Hello from parent'
Child attached to shared memory at 0xffffe000
Child reads: 'Hello from parent'
Child detached from shared memory
Parent reads: 'Hello from child'
Parent detached from shared memory
Shared memory segment removed
Networking Tests
pipe.cSuccessNone
pipe() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipe2.cSuccessNone
pipe2() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipewrite.cSuccessNone
Made pipe with write end 3 and read end 4
wrote 16
write 16
wrote 16
wrote three messages to the pipe
msg 0, length 16: hello, world #1
msg 1, length 16: hello, world #2
msg 2, length 16: hello, world #3
simple-select.cSuccessNone
[child] waiting for data...
[parent] writing message
[child] got data: hello select!

[child] waiting for data...
[child] pipe closed

Process Tests
getpid.cSuccessNone
printing pidSuccess
Signal Tests
signal.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
parent in loop, pid=1
Terminated
signal_int_thread.cSuccessNone
main starts!
Hello from thread
thread sleep
thread sleep
child ready to kill
child done kill
Terminated
child in loop, pid=2
Terminated
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2

@DyanB DyanB requested a review from m-hemmings October 15, 2025 16:22
@DyanB DyanB force-pushed the 415-executable-tests-fix branch from e1160a2 to 7b59c6f Compare October 16, 2025 17:19
@github-actions
Copy link
Contributor

End-to-End Test Report

Test Preview

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases48
Number of Successes48
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 GCC and Wasm Output mismatch0

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
doubleclose.cSuccessNone
dupwrite.cSuccessNone
write succeeded
filetest.cSuccessNone
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
filetest1000.cSuccessNone
ioctl.cSuccessNone
[For 0 = False and  = True]
[The answers should be F, T, F]

(0) Is the socket set for non-blocking I/O?: 0
[Setting socket for non_blocking I/O]
(1) Is the socket set for non-blocking I/O?: 2048
[Clearing socket for non-blocking I/O]
(2) Is the socket set for non-blocking I/O?: 0

open.cSuccessNone
File opened successfully with fd = 3
printf.cSuccessNone
Hello, World!
write.cSuccessNone
Hello world from Coulson's WASM
writeloop.cSuccessNone
write succeeded
writepartial.cSuccessNone
write
Memory Tests
brk.cSuccessNone
PASS
malloc.cSuccessNone
memcpy.cSuccessNone
Hello, World!
mmap_shared.cSuccessNone
parent value: 1234, 4321
parent value after fork: 1234, 4321
child value after fork: 1234, 4321
parent value after modification: 2333, 3332
child value after modification: 2333, 4321
mprotect.cSuccessNone
Mprotect write test text
sbrk.cSuccessNone
Content in allocated memory: Hello, sbrk memory!
shmtest.cSuccessNone
Networking Tests
gethostname.cSuccessNone
Hostname: buildkitsandbox
makepipe.cSuccessNone
pipepong.cSuccessNone
Parent sending 1
Child received 1
Child sends 2
Parent received 2
Parent sending 3
Child received 3
Child sends 4
Parent received 4
Parent sending 5
Child received 5
Child sends 6
Parent received 6
Parent sending 7
Child received 7
Child sends 8
Parent received 8
Parent sending 9
Child received 9
Child sends 10
Parent received 10
Parent sending 11
Child received 11
Child sends 12
Parent received 12
Parent sending 13
Child received 13
Child sends 14
Parent received 14
Parent sending 15
Child received 15
Child sends 16
Parent received 16
Parent sending 17
Child received 17
Child sends 18
Parent received 18
Parent sending 19
Child received 19
Child sends 20
Parent received 20
Parent sending 21
Child received 21
Child sends 22
Parent received 22
Parent sending 23
Child received 23
Child sends 24
Parent received 24
Parent sending 25
Child received 25
Child sends 26
Parent received 26
Parent sending 27
Child received 27
Child sends 28
Parent received 28
Parent sending 29
Child received 29
Child sends 30
Parent received 30
Parent sending 31
Child received 31
Child sends 32
Parent received 32
Parent sending 33
Child received 33
Child sends 34
Parent received 34
Parent sending 35
Child received 35
Child sends 36
Parent received 36
Parent sending 37
Child received 37
Child sends 38
Parent received 38
Parent sending 39
Child received 39
Child sends 40
Parent received 40
Parent sending 41
Child received 41
Child sends 42
Parent received 42
Parent sending 43
Child received 43
Child sends 44
Parent received 44
Parent sending 45
Child received 45
Child sends 46
Parent received 46
Parent sending 47
Child received 47
Child sends 48
Parent received 48
Parent sending 49
Child received 49
Child sends 50
Parent received 50
Parent sending 51
Child received 51
Child sends 52
Parent received 52
Parent sending 53
Child received 53
Child sends 54
Parent received 54
Parent sending 55
Child received 55
Child sends 56
Parent received 56
Parent sending 57
Child received 57
Child sends 58
Parent received 58
Parent sending 59
Child received 59
Child sends 60
Parent received 60
Parent sending 61
Child received 61
Child sends 62
Parent received 62
Parent sending 63
Child received 63
Child sends 64
Parent received 64
Parent sending 65
Child received 65
Child sends 66
Parent received 66
Parent sending 67
Child received 67
Child sends 68
Parent received 68
Parent sending 69
Child received 69
Child sends 70
Parent received 70
Parent sending 71
Child received 71
Child sends 72
Parent received 72
Parent sending 73
Child received 73
Child sends 74
Parent received 74
Parent sending 75
Child received 75
Child sends 76
Parent received 76
Parent sending 77
Child received 77
Child sends 78
Parent received 78
Parent sending 79
Child received 79
Child sends 80
Parent received 80
Parent sending 81
Child received 81
Child sends 82
Parent received 82
Parent sending 83
Child received 83
Child sends 84
Parent received 84
Parent sending 85
Child received 85
Child sends 86
Parent received 86
Parent sending 87
Child received 87
Child sends 88
Parent received 88
Parent sending 89
Child received 89
Child sends 90
Parent received 90
Parent sending 91
Child received 91
Child sends 92
Parent received 92
Parent sending 93
Child received 93
Child sends 94
Parent received 94
Parent sending 95
Child received 95
Child sends 96
Parent received 96
Parent sending 97
Child received 97
Child sends 98
Parent received 98
Parent sending 99
Child received 99
Child sends 100
Parent received 100
Pipe Pong complete.
Final value: 100
poll.cSuccessNone
stdout is ready for writing.
recvfrom-sendto.cSuccessNone
Client sent: Hello recvfrom!
simple_epoll.cSuccessNone
waiting for epoll event...
got data: hello epoll!

socket.cSuccessNone
Socket opened succesfully.
socket_cloexec.cSuccessNone
SOCK_CLOEXEC is set.
socketpair.cSuccessNone
-->In Xanadu, did Kublai Khan . . .
-->A stately pleasure dome decree . . .
tcp_connect_single.cSuccessNone
Process Tests
chain_thread.cSuccessNone
Outer thread running...
Inner thread running...
Inner thread done.
Outer thread done.
Main thread done.
exit.cSuccessNone
Exiting...

forkexecv-arg.cSuccessNone
Received argument: hello-arg
forkexecv.cSuccessNone
wark
function-ptr.cSuccessNone
Hello, World!
getppid.cSuccessNone
getppid() succeeded
hello-arg.cSuccessNone
Received argument: hello-arg
hello.cSuccessNone
wark
longjmp.cSuccessNone
In main: Calling first_function...
In first_function: Calling second_function...
In second_function: Performing a long jump...
Back in main: long jump returned with value = 42
noforkfiles.cSuccessNone
sem_forks.cSuccessNone
sigalrm.cSuccessNone
SIGALRM signals blocked
Alarm Handled. Exiting
sigchld.cSuccessNone
Signal Child Test!
signal-fork.cSuccessNone
Successfully changed the signal handler for Signal 12
Killing Child
Signal Handler Test!
Exiting Child
signal-simple.cSuccessNone
Successfully changed the signal handler for Signal 12
Signal Handler Test!
thread-test.cSuccessNone
Hello from the thread!
Thread has finished execution
thread.cSuccessNone
Hello from thread
wait.cSuccessNone
Parent detected child finished.
Child exited with status 0
waitpid_wnohang.cSuccessNone
Signal Tests
alarm.cSuccessNone
Setting an alarm to trigger in 1 seconds...
Alarm triggered! Signal received: 14
Alarm triggered! Signal received: 14
Alarm triggered! Signal received: 14
setitimer.cSuccessNone
Timer started! SIGALRM will fire every 3 seconds.
Timer expired! Signal received: 14
Timer expired! Signal received: 14
Timer expired! Signal received: 14
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 GCC and Wasm Output mismatch0

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
chdir_getcwd.cSuccessNone
getcwd() error: Success
getcwd() error: Success
clock_gettime_highlevel.cSuccessNone
Running 1,000,000 iterations...

Start time: 4415 clock ticks
End time: 6996 clock ticks
Elapsed CPU time: 0.002581 seconds

clock_gettime_simple.cSuccessNone
Current time: 1760635485 seconds and 652549278 nanoseconds
dup.cSuccessNone
duped fd: 3
attempting to write to dup() fd

write to dup() fd succeeded
write to old fd succeeded

fchdir.cSuccessNone
getcwd() error: Success
fstatfs.cSuccessNone
Filesystem type: 794c7630
getcwd.cSuccessNone
getcwd() error: Success
read.cSuccessNone
open(): No such file or directory
statfs.cSuccessNone
Error in statfs
: No such file or directory
Memory Tests
mmap_complicated.cSuccessNone
Parent: Waiting for child to write.
Child: Writing to shared memory.
Parent: Reading from shared memory: 'Hello from the child process!'
Child: Reading from shared memory: 'Hello from the parent process!'
Child: Exiting.
Parent: Reading modified shared memory: 'Hello from the parent process!'
Parent: Exiting.
segfault.cSuccessNone
pipe() ret: [3, 4]
read() ret: 3
hi
shm.cSuccessNone
Shared memory segment created with id: 1
Parent attached to shared memory at 0xffffe000
Parent wrote: 'Hello from parent'
Child attached to shared memory at 0xffffe000
Child reads: 'Hello from parent'
Child detached from shared memory
Parent reads: 'Hello from child'
Parent detached from shared memory
Shared memory segment removed
Networking Tests
dnstest.cSuccessNone
is sockfd valid? yes
37 is the length sent
53 is the length recieved
the dns lookup yields the ip address: 35.172.89.115
getifaddrs.cSuccessNone
getifaddrs: Bad address
pipe.cSuccessNone
pipe() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipe2.cSuccessNone
pipe2() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipeinput.cSuccessNone
about to write to pipe in parent
I'm parent with pid: 2
Hey Nick!

pipeinput2.cSuccessNone
about to write to pipe in parent
I'm parent with pid: 2
Hey Nick!

pipeonestring.cSuccessNone
about to write to pipe in parent
I'm child with pid: 0
I'm parent with pid: 2
Hey Nick!
������
pipewrite.cSuccessNone
Made pipe with write end 3 and read end 4
wrote 16
write 16
wrote 16
wrote three messages to the pipe
msg 0, length 16: hello, world #1
msg 1, length 16: hello, world #2
msg 2, length 16: hello, world #3
shutdown_fork.cSuccessNone
3�2d-05
simple-select.cSuccessNone
[child] waiting for data...
[parent] writing message
[child] got data: hello select!

[child] waiting for data...
[child] pipe closed

socketepoll.cSuccessNone
SERVER: New socket bound and listen
SERVER: NEW CONNECTION
CLIENT: Hello message sent
Hello from client
Message Received
CLIENT: sending followup
Did you get my message?
CLIENT: Closed connection
Closed connection on descriptor 6
read error: Connection reset by peer
Process Tests
fork2malloc.cSuccessNone
first malloc
Address of mptr1 0x30010
Contents of mptr1 deadbeef
pre-fork
in child
Address of mptr1 0x30fc0
done
fork_simple.cSuccessNone
Parent pid = 1
Child pid = 2
forkandopen.cSuccessNone
Child: Testing open in child: pid 0!
Parent: Testing open in parent: pid 2!
Child: Pid 0 opened fd 3
Parent: Pid 2 opened fd 3
forkfiles.cSuccessNone
This is a test of the wonderful fork call in lind.
read 51 chars
forkmalloc.cSuccessNone
in child
pointer address is 0x30010
done
getpid.cSuccessNone
printing pidSuccess
Signal Tests
signal.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
parent in loop, pid=1
Terminated
signal_SIGCHLD.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 17
Caught signal 10
signal_fork.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 2
after fork inside signal handler, pid=3
after fork inside signal handler, pid=1
parent in loop, pid=3
parent in loop, pid=1
parent in loop, pid=3
parent in loop, pid=1
parent in loop, pid=3
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=3
signal_int_thread.cSuccessNone
main starts!
Hello from thread
thread sleep
thread sleep
child ready to kill
child done kill
child in loop, pid=2
Terminated
Terminated
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
signal_longjmp.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
after fork inside signal handler, pid=3
after fork inside signal handler, pid=1
after child longjmp (should only be printed once by parent)
parent in loop, pid=1
back from setjmp: 42! pid=3
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
signal_nodefer.cSuccessNone
main starts!
parent in loop, pid=1
*child ready to kill
*child sent SIGUSR1
*child ready to send SIGUSR1 again
*child done kill
Caught signal 10
Caught signal 10
start of signal handler
end of signal handler
start of signal handler
end of signal handler
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
signal_procmask.cSuccessNone
Parent: Blocking SIGINT...
Signal 2 is BLOCKED
Parent: SIGINT is blocked. Child will send SIGINT soon...
Child: Sending SIGINT to parent (PID: 1)
Parent: Unblocking SIGINT now.
SIGINT received! (Handled in Parent Process)
Signal 2 is UNBLOCKED
Parent: Waiting for SIGINT...
signal_sa_mask.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
signal 10 done
Caught signal 12
signal 12 done
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1

@rennergade
Copy link
Contributor

@DyanB can you please enable tests from the skip list that this would fix as well ie any file related tests

@DyanB DyanB force-pushed the 415-executable-tests-fix branch from 7b59c6f to b355f37 Compare October 17, 2025 06:45
@github-actions
Copy link
Contributor

End-to-End Test Report

Test Preview

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases48
Number of Successes48
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 GCC and Wasm Output mismatch0

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
doubleclose.cSuccessNone
dupwrite.cSuccessNone
write succeeded
filetest.cSuccessNone
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
filetest1000.cSuccessNone
ioctl.cSuccessNone
[For 0 = False and  = True]
[The answers should be F, T, F]

(0) Is the socket set for non-blocking I/O?: 0
[Setting socket for non_blocking I/O]
(1) Is the socket set for non-blocking I/O?: 2048
[Clearing socket for non-blocking I/O]
(2) Is the socket set for non-blocking I/O?: 0

open.cSuccessNone
File opened successfully with fd = 3
printf.cSuccessNone
Hello, World!
write.cSuccessNone
Hello world from Coulson's WASM
writeloop.cSuccessNone
write succeeded
writepartial.cSuccessNone
write
Memory Tests
brk.cSuccessNone
PASS
malloc.cSuccessNone
memcpy.cSuccessNone
Hello, World!
mmap_shared.cSuccessNone
parent value: 1234, 4321
parent value after fork: 1234, 4321
child value after fork: 1234, 4321
parent value after modification: 2333, 3332
child value after modification: 2333, 4321
mprotect.cSuccessNone
Mprotect write test text
sbrk.cSuccessNone
Content in allocated memory: Hello, sbrk memory!
shmtest.cSuccessNone
Networking Tests
gethostname.cSuccessNone
Hostname: buildkitsandbox
makepipe.cSuccessNone
pipepong.cSuccessNone
Parent sending 1
Child received 1
Child sends 2
Parent received 2
Parent sending 3
Child received 3
Child sends 4
Parent received 4
Parent sending 5
Child received 5
Child sends 6
Parent received 6
Parent sending 7
Child received 7
Child sends 8
Parent received 8
Parent sending 9
Child received 9
Child sends 10
Parent received 10
Parent sending 11
Child received 11
Child sends 12
Parent received 12
Parent sending 13
Child received 13
Child sends 14
Parent received 14
Parent sending 15
Child received 15
Child sends 16
Parent received 16
Parent sending 17
Child received 17
Child sends 18
Parent received 18
Parent sending 19
Child received 19
Child sends 20
Parent received 20
Parent sending 21
Child received 21
Child sends 22
Parent received 22
Parent sending 23
Child received 23
Child sends 24
Parent received 24
Parent sending 25
Child received 25
Child sends 26
Parent received 26
Parent sending 27
Child received 27
Child sends 28
Parent received 28
Parent sending 29
Child received 29
Child sends 30
Parent received 30
Parent sending 31
Child received 31
Child sends 32
Parent received 32
Parent sending 33
Child received 33
Child sends 34
Parent received 34
Parent sending 35
Child received 35
Child sends 36
Parent received 36
Parent sending 37
Child received 37
Child sends 38
Parent received 38
Parent sending 39
Child received 39
Child sends 40
Parent received 40
Parent sending 41
Child received 41
Child sends 42
Parent received 42
Parent sending 43
Child received 43
Child sends 44
Parent received 44
Parent sending 45
Child received 45
Child sends 46
Parent received 46
Parent sending 47
Child received 47
Child sends 48
Parent received 48
Parent sending 49
Child received 49
Child sends 50
Parent received 50
Parent sending 51
Child received 51
Child sends 52
Parent received 52
Parent sending 53
Child received 53
Child sends 54
Parent received 54
Parent sending 55
Child received 55
Child sends 56
Parent received 56
Parent sending 57
Child received 57
Child sends 58
Parent received 58
Parent sending 59
Child received 59
Child sends 60
Parent received 60
Parent sending 61
Child received 61
Child sends 62
Parent received 62
Parent sending 63
Child received 63
Child sends 64
Parent received 64
Parent sending 65
Child received 65
Child sends 66
Parent received 66
Parent sending 67
Child received 67
Child sends 68
Parent received 68
Parent sending 69
Child received 69
Child sends 70
Parent received 70
Parent sending 71
Child received 71
Child sends 72
Parent received 72
Parent sending 73
Child received 73
Child sends 74
Parent received 74
Parent sending 75
Child received 75
Child sends 76
Parent received 76
Parent sending 77
Child received 77
Child sends 78
Parent received 78
Parent sending 79
Child received 79
Child sends 80
Parent received 80
Parent sending 81
Child received 81
Child sends 82
Parent received 82
Parent sending 83
Child received 83
Child sends 84
Parent received 84
Parent sending 85
Child received 85
Child sends 86
Parent received 86
Parent sending 87
Child received 87
Child sends 88
Parent received 88
Parent sending 89
Child received 89
Child sends 90
Parent received 90
Parent sending 91
Child received 91
Child sends 92
Parent received 92
Parent sending 93
Child received 93
Child sends 94
Parent received 94
Parent sending 95
Child received 95
Child sends 96
Parent received 96
Parent sending 97
Child received 97
Child sends 98
Parent received 98
Parent sending 99
Child received 99
Child sends 100
Parent received 100
Pipe Pong complete.
Final value: 100
poll.cSuccessNone
stdout is ready for writing.
recvfrom-sendto.cSuccessNone
Client sent: Hello recvfrom!
simple_epoll.cSuccessNone
waiting for epoll event...
got data: hello epoll!

socket.cSuccessNone
Socket opened succesfully.
socket_cloexec.cSuccessNone
SOCK_CLOEXEC is set.
socketpair.cSuccessNone
-->In Xanadu, did Kublai Khan . . .
-->A stately pleasure dome decree . . .
tcp_connect_single.cSuccessNone
Process Tests
chain_thread.cSuccessNone
Outer thread running...
Inner thread running...
Inner thread done.
Outer thread done.
Main thread done.
exit.cSuccessNone
Exiting...

forkexecv-arg.cSuccessNone
Received argument: hello-arg
forkexecv.cSuccessNone
wark
function-ptr.cSuccessNone
Hello, World!
getppid.cSuccessNone
getppid() succeeded
hello-arg.cSuccessNone
Received argument: hello-arg
hello.cSuccessNone
wark
longjmp.cSuccessNone
In main: Calling first_function...
In first_function: Calling second_function...
In second_function: Performing a long jump...
Back in main: long jump returned with value = 42
noforkfiles.cSuccessNone
sem_forks.cSuccessNone
sigalrm.cSuccessNone
SIGALRM signals blocked
Alarm Handled. Exiting
sigchld.cSuccessNone
Signal Child Test!
signal-fork.cSuccessNone
Successfully changed the signal handler for Signal 12
Killing Child
Signal Handler Test!
Exiting Child
signal-simple.cSuccessNone
Successfully changed the signal handler for Signal 12
Signal Handler Test!
thread-test.cSuccessNone
Hello from the thread!
Thread has finished execution
thread.cSuccessNone
Hello from thread
wait.cSuccessNone
Parent detected child finished.
Child exited with status 0
waitpid_wnohang.cSuccessNone
Signal Tests
alarm.cSuccessNone
Setting an alarm to trigger in 1 seconds...
Alarm triggered! Signal received: 14
Alarm triggered! Signal received: 14
Alarm triggered! Signal received: 14
setitimer.cSuccessNone
Timer started! SIGALRM will fire every 3 seconds.
Timer expired! Signal received: 14
Timer expired! Signal received: 14
Timer expired! Signal received: 14
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 GCC and Wasm Output mismatch0

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
chdir_getcwd.cSuccessNone
getcwd() error: Success
getcwd() error: Success
clock_gettime_highlevel.cSuccessNone
Running 1,000,000 iterations...

Start time: 6660 clock ticks
End time: 8969 clock ticks
Elapsed CPU time: 0.002309 seconds

clock_gettime_simple.cSuccessNone
Current time: 1760684026 seconds and 526644657 nanoseconds
dup.cSuccessNone
duped fd: 3
attempting to write to dup() fd

write to dup() fd succeeded
write to old fd succeeded

fchdir.cSuccessNone
getcwd() error: Success
fstatfs.cSuccessNone
Filesystem type: 794c7630
getcwd.cSuccessNone
getcwd() error: Success
read.cSuccessNone
open(): No such file or directory
statfs.cSuccessNone
Error in statfs
: No such file or directory
Memory Tests
mmap_complicated.cSuccessNone
Parent: Waiting for child to write.
Child: Writing to shared memory.
Parent: Reading from shared memory: 'Hello from the child process!'
Child: Reading from shared memory: 'Hello from the parent process!'
Child: Exiting.
Parent: Reading modified shared memory: 'Hello from the parent process!'
Parent: Exiting.
segfault.cSuccessNone
pipe() ret: [3, 4]
read() ret: 3
hi
shm.cSuccessNone
Shared memory segment created with id: 1
Parent attached to shared memory at 0xffffe000
Parent wrote: 'Hello from parent'
Child attached to shared memory at 0xffffe000
Child reads: 'Hello from parent'
Child detached from shared memory
Parent reads: 'Hello from child'
Parent detached from shared memory
Shared memory segment removed
Networking Tests
dnstest.cSuccessNone
is sockfd valid? yes
37 is the length sent
53 is the length recieved
the dns lookup yields the ip address: 35.172.89.115
getifaddrs.cSuccessNone
getifaddrs: Bad address
pipe.cSuccessNone
pipe() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipe2.cSuccessNone
pipe2() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipeinput.cSuccessNone
about to write to pipe in parent
I'm parent with pid: 2
Hey Nick!

pipeinput2.cSuccessNone
about to write to pipe in parent
I'm parent with pid: 2
Hey Nick!

pipeonestring.cSuccessNone
I'm child with pid: 0
about to write to pipe in parent
I'm parent with pid: 2
Hey Nick!
������
pipewrite.cSuccessNone
Made pipe with write end 3 and read end 4
wrote 16
write 16
wrote 16
wrote three messages to the pipe
msg 0, length 16: hello, world #1
msg 1, length 16: hello, world #2
msg 2, length 16: hello, world #3
shutdown_fork.cSuccessNone
2�8d-05
simple-select.cSuccessNone
[child] waiting for data...
[parent] writing message
[child] got data: hello select!

[child] waiting for data...
[child] pipe closed

socketepoll.cSuccessNone
SERVER: New socket bound and listen
SERVER: NEW CONNECTION
CLIENT: Hello message sent
Hello from client
Message Received
CLIENT: sending followup
Did you get my message?
CLIENT: Closed connection
Closed connection on descriptor 6
read error: Connection reset by peer
Process Tests
fork2malloc.cSuccessNone
first malloc
Address of mptr1 0x30010
Contents of mptr1 deadbeef
pre-fork
in child
Address of mptr1 0x30fc0
done
fork_simple.cSuccessNone
Parent pid = 1
Child pid = 2
forkandopen.cSuccessNone
Parent: Testing open in parent: pid 2!
Child: Testing open in child: pid 0!
Parent: Pid 2 opened fd 3
Child: Pid 0 opened fd 3
forkfiles.cSuccessNone
This is a test of the wonderful fork call in lind.
read 51 chars
forkmalloc.cSuccessNone
in child
pointer address is 0x30010
done
getpid.cSuccessNone
printing pidSuccess
Signal Tests
signal.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
parent in loop, pid=1
Terminated
signal_SIGCHLD.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 17
Caught signal 10
signal_fork.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 2
after fork inside signal handler, pid=3
after fork inside signal handler, pid=1
parent in loop, pid=3
parent in loop, pid=1
parent in loop, pid=3
parent in loop, pid=1
parent in loop, pid=3
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=3
signal_int_thread.cSuccessNone
main starts!
Hello from thread
thread sleep
thread sleep
child ready to kill
child done kill
child in loop, pid=2
Terminated
Terminated
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
signal_longjmp.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
after fork inside signal handler, pid=3
after fork inside signal handler, pid=1
after child longjmp (should only be printed once by parent)
parent in loop, pid=1
back from setjmp: 42! pid=3
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
signal_nodefer.cSuccessNone
main starts!
parent in loop, pid=1
*child ready to kill
*child sent SIGUSR1
*child ready to send SIGUSR1 again
Caught signal 10
*child done kill
Caught signal 10
start of signal handler
end of signal handler
start of signal handler
end of signal handler
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
signal_procmask.cSuccessNone
Parent: Blocking SIGINT...
Signal 2 is BLOCKED
Parent: SIGINT is blocked. Child will send SIGINT soon...
Child: Sending SIGINT to parent (PID: 1)
Parent: Unblocking SIGINT now.
SIGINT received! (Handled in Parent Process)
Signal 2 is UNBLOCKED
Parent: Waiting for SIGINT...
signal_sa_mask.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
signal 10 done
Caught signal 12
signal 12 done
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1

@github-actions
Copy link
Contributor

End-to-End Test Report

Test Preview

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases58
Number of Successes44
Number of Failures14
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 Failure2
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch12

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
close.cFailureOutput_mismatch
=== Expected Output ===
File opened and closed 2000 times successfully.

=== WASM Output ===
Failed to create test file: No such file or directory

doubleclose.cSuccessNone
dup2.cFailureOutput_mismatch
=== Expected Output ===
Testing dup2
I should be printed before the file contents!
I will be printed in the file dup2test.txt

=== WASM Output ===
Testing dup2
I will be printed in the file dup2test.txt
I should be printed before the file contents!

dup3.cFailureLind_wasm_Segmentation_Fault
/tmp/wasmtest_artifacts_asfhavgh/file_tests/deterministic/dup3.c:11: int main(): Assertion `fd1 >= 0' failed.
Error: failed to run main module `/tmp/wasmtest_artifacts_asfhavgh/file_tests/deterministic/dup3.cwasm`

Caused by:
0: failed to invoke command default
1: error while executing at wasm backtrace:
0: 0x381c1 - dup3.wasm!abort
1: 0x1bb7 - dup3.wasm!__assert_fail_base
2: 0x1d8c - dup3.wasm!__assert_fail
3: 0xece - dup3.wasm!__original_main
4: 0xd43 - dup3.wasm!_start
5: 0x9bb9f - dup3.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

dupwrite.cSuccessNone
write succeeded
fcntl.cFailureOutput_mismatch
=== Expected Output ===
Original FD: 3
F_DUPFD duplicated FD: 100
F_DUPFD_CLOEXEC duplicated FD: 101
Original FD flags: FD flags = 0x0
F_DUPFD duplicated FD flags: FD flags = 0x0
F_DUPFD_CLOEXEC duplicated FD flags: FD flags = 0x1
After F_SETFD on F_DUPFD duplicated FD: FD flags = 0x1
Test completed successfully.

=== WASM Output ===
open: No such file or directory

filetest.cFailureOutput_mismatch
=== Expected Output ===
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

=== WASM Output ===

filetest1000.cSuccessNone
ioctl.cSuccessNone
[For 0 = False and  = True]
[The answers should be F, T, F]

(0) Is the socket set for non-blocking I/O?: 0
[Setting socket for non_blocking I/O]
(1) Is the socket set for non-blocking I/O?: 2048
[Clearing socket for non-blocking I/O]
(2) Is the socket set for non-blocking I/O?: 0

mkdir_rmdir.cFailureOutput_mismatch
=== Expected Output ===
Created directory successfully
Removed directory successfully

=== WASM Output ===
mkdir: No such file or directory

open.cFailureOutput_mismatch
=== Expected Output ===
File opened successfully with fd = 3

=== WASM Output ===
open failed: No such file or directory

pread_pwrite.cFailureLind_wasm_Segmentation_Fault
Error: failed to run main module `/tmp/wasmtest_artifacts_asfhavgh/file_tests/deterministic/pread_pwrite.cwasm`

Caused by:
0: failed to invoke command default
1: error while executing at wasm backtrace:
0: 0x6adb2 - pread_pwrite.wasm!_IO_new_fclose
1: 0xf0f - pread_pwrite.wasm!__original_main
2: 0xd43 - pread_pwrite.wasm!_start
3: 0x9bd80 - pread_pwrite.wasm!_start.command_export
note: using the WASMTIME_BACKTRACE_DETAILS=1 environment variable may show more debugging information
2: wasm trap: uninitialized element

printf.cSuccessNone
Hello, World!
readbytes.cFailureOutput_mismatch
=== Expected Output ===
This is a test of the wonderful fork call in lind.�

=== WASM Output ===

unlinkat.cFailureOutput_mismatch
=== Expected Output ===
=== Test Case 1: Remove valid file ===
Test Case 1: Successfully removed testfiles/unlinkatfile.txt

=== Test Case 2: Remove non-existent file ===
Test Case 2: Expected failure: No such file or directory

=== Test Case 3: Remove file in a subdirectory ===
Test Case 3: Successfully removed file in subdirectory

=== Test Case 4: Remove a directory with AT_REMOVEDIR ===
Test Case 4: Successfully removed directory testfiles/unlinkatsubdir

=== Test Case 5: Remove a directory without AT_REMOVEDIR ===
Test Case 5: Expected failure: Is a directory

=== WASM Output ===
Failed to create test file: No such file or directory

write.cSuccessNone
Hello world from Coulson's WASM
writeloop.cSuccessNone
write succeeded
writepartial.cSuccessNone
write
Memory Tests
brk.cSuccessNone
PASS
malloc.cSuccessNone
memcpy.cSuccessNone
Hello, World!
mmap_file.cFailureOutput_mismatch
=== Expected Output ===
Data written to memory-mapped file: Hello, mmap!
Data read back from memory-mapped file: Hello, mmap!

=== WASM Output ===
open: No such file or directory

mmap_shared.cSuccessNone
parent value: 1234, 4321
parent value after fork: 1234, 4321
child value after fork: 1234, 4321
parent value after modification: 2333, 3332
child value after modification: 2333, 4321
mprotect.cSuccessNone
Mprotect write test text
sbrk.cSuccessNone
Content in allocated memory: Hello, sbrk memory!
shmtest.cSuccessNone
Networking Tests
gethostname.cSuccessNone
Hostname: buildkitsandbox
makepipe.cSuccessNone
pipepong.cSuccessNone
Parent sending 1
Child received 1
Child sends 2
Parent received 2
Parent sending 3
Child received 3
Child sends 4
Parent received 4
Parent sending 5
Child received 5
Child sends 6
Parent received 6
Parent sending 7
Child received 7
Child sends 8
Parent received 8
Parent sending 9
Child received 9
Child sends 10
Parent received 10
Parent sending 11
Child received 11
Child sends 12
Parent received 12
Parent sending 13
Child received 13
Child sends 14
Parent received 14
Parent sending 15
Child received 15
Child sends 16
Parent received 16
Parent sending 17
Child received 17
Child sends 18
Parent received 18
Parent sending 19
Child received 19
Child sends 20
Parent received 20
Parent sending 21
Child received 21
Child sends 22
Parent received 22
Parent sending 23
Child received 23
Child sends 24
Parent received 24
Parent sending 25
Child received 25
Child sends 26
Parent received 26
Parent sending 27
Child received 27
Child sends 28
Parent received 28
Parent sending 29
Child received 29
Child sends 30
Parent received 30
Parent sending 31
Child received 31
Child sends 32
Parent received 32
Parent sending 33
Child received 33
Child sends 34
Parent received 34
Parent sending 35
Child received 35
Child sends 36
Parent received 36
Parent sending 37
Child received 37
Child sends 38
Parent received 38
Parent sending 39
Child received 39
Child sends 40
Parent received 40
Parent sending 41
Child received 41
Child sends 42
Parent received 42
Parent sending 43
Child received 43
Child sends 44
Parent received 44
Parent sending 45
Child received 45
Child sends 46
Parent received 46
Parent sending 47
Child received 47
Child sends 48
Parent received 48
Parent sending 49
Child received 49
Child sends 50
Parent received 50
Parent sending 51
Child received 51
Child sends 52
Parent received 52
Parent sending 53
Child received 53
Child sends 54
Parent received 54
Parent sending 55
Child received 55
Child sends 56
Parent received 56
Parent sending 57
Child received 57
Child sends 58
Parent received 58
Parent sending 59
Child received 59
Child sends 60
Parent received 60
Parent sending 61
Child received 61
Child sends 62
Parent received 62
Parent sending 63
Child received 63
Child sends 64
Parent received 64
Parent sending 65
Child received 65
Child sends 66
Parent received 66
Parent sending 67
Child received 67
Child sends 68
Parent received 68
Parent sending 69
Child received 69
Child sends 70
Parent received 70
Parent sending 71
Child received 71
Child sends 72
Parent received 72
Parent sending 73
Child received 73
Child sends 74
Parent received 74
Parent sending 75
Child received 75
Child sends 76
Parent received 76
Parent sending 77
Child received 77
Child sends 78
Parent received 78
Parent sending 79
Child received 79
Child sends 80
Parent received 80
Parent sending 81
Child received 81
Child sends 82
Parent received 82
Parent sending 83
Child received 83
Child sends 84
Parent received 84
Parent sending 85
Child received 85
Child sends 86
Parent received 86
Parent sending 87
Child received 87
Child sends 88
Parent received 88
Parent sending 89
Child received 89
Child sends 90
Parent received 90
Parent sending 91
Child received 91
Child sends 92
Parent received 92
Parent sending 93
Child received 93
Child sends 94
Parent received 94
Parent sending 95
Child received 95
Child sends 96
Parent received 96
Parent sending 97
Child received 97
Child sends 98
Parent received 98
Parent sending 99
Child received 99
Child sends 100
Parent received 100
Pipe Pong complete.
Final value: 100
poll.cSuccessNone
stdout is ready for writing.
recvfrom-sendto.cSuccessNone
Client sent: Hello recvfrom!
simple_epoll.cSuccessNone
waiting for epoll event...
got data: hello epoll!

socket.cSuccessNone
Socket opened succesfully.
socket_cloexec.cSuccessNone
SOCK_CLOEXEC is set.
socketpair.cSuccessNone
-->In Xanadu, did Kublai Khan . . .
-->A stately pleasure dome decree . . .
tcp_connect_single.cSuccessNone
Process Tests
chain_thread.cSuccessNone
Outer thread running...
Inner thread running...
Inner thread done.
Outer thread done.
Main thread done.
exit.cSuccessNone
Exiting...

forkdup.cFailureOutput_mismatch
=== Expected Output ===
I'm the parent
back to stdout
all done

=== WASM Output ===
I'm the parent
I'm the child
back to stdout
all done

forkexecv-arg.cFailureOutput_mismatch
=== Expected Output ===
Received argument: hello-arg

=== WASM Output ===
execv failed: No such file or directory

forkexecv.cFailureOutput_mismatch
=== Expected Output ===
wark

=== WASM Output ===

function-ptr.cSuccessNone
Hello, World!
getppid.cSuccessNone
getppid() succeeded
hello-arg.cSuccessNone
Received argument: hello-arg
hello.cSuccessNone
wark
longjmp.cSuccessNone
In main: Calling first_function...
In first_function: Calling second_function...
In second_function: Performing a long jump...
Back in main: long jump returned with value = 42
noforkfiles.cSuccessNone
sem_forks.cSuccessNone
sigalrm.cSuccessNone
SIGALRM signals blocked
Alarm Handled. Exiting
sigchld.cSuccessNone
Signal Child Test!
signal-fork.cSuccessNone
Successfully changed the signal handler for Signal 12
Killing Child
Signal Handler Test!
Exiting Child
signal-simple.cSuccessNone
Successfully changed the signal handler for Signal 12
Signal Handler Test!
thread-test.cSuccessNone
Hello from the thread!
Thread has finished execution
thread.cSuccessNone
Hello from thread
wait.cSuccessNone
Parent detected child finished.
Child exited with status 0
waitpid_wnohang.cSuccessNone
Signal Tests
alarm.cSuccessNone
Setting an alarm to trigger in 1 seconds...
Alarm triggered! Signal received: 14
Alarm triggered! Signal received: 14
Alarm triggered! Signal received: 14
setitimer.cSuccessNone
Timer started! SIGALRM will fire every 3 seconds.
Timer expired! Signal received: 14
Timer expired! Signal received: 14
Timer expired! Signal received: 14
Non Deterministic Tests

Summary

MetricCount
Total Test Cases38
Number of Successes38
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

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
chdir_getcwd.cSuccessNone
getcwd() error: Success
getcwd() error: Success
clock_gettime_highlevel.cSuccessNone
Running 1,000,000 iterations...

Start time: 6361 clock ticks
End time: 8625 clock ticks
Elapsed CPU time: 0.002264 seconds

clock_gettime_simple.cSuccessNone
Current time: 1760690495 seconds and 481763410 nanoseconds
dup.cSuccessNone
duped fd: 3
attempting to write to dup() fd

write to dup() fd succeeded
write to old fd succeeded

fchdir.cSuccessNone
getcwd() error: Success
fstatfs.cSuccessNone
Error in open()
: No such file or directory
getcwd.cSuccessNone
getcwd() error: Success
read.cSuccessNone
open(): No such file or directory
statfs.cSuccessNone
Error in statfs
: No such file or directory
Memory Tests
mmap_complicated.cSuccessNone
Parent: Waiting for child to write.
Child: Writing to shared memory.
Parent: Reading from shared memory: 'Hello from the child process!'
Child: Reading from shared memory: 'Hello from the parent process!'
Child: Exiting.
Parent: Reading modified shared memory: 'Hello from the parent process!'
Parent: Exiting.
segfault.cSuccessNone
pipe() ret: [3, 4]
read() ret: 3
hi
shm.cSuccessNone
Shared memory segment created with id: 1
Parent attached to shared memory at 0xffffe000
Parent wrote: 'Hello from parent'
Child attached to shared memory at 0xffffe000
Child reads: 'Hello from parent'
Child detached from shared memory
Parent reads: 'Hello from child'
Parent detached from shared memory
Shared memory segment removed
Networking Tests
dnstest.cSuccessNone
is sockfd valid? yes
37 is the length sent
53 is the length recieved
the dns lookup yields the ip address: 35.172.89.115
getifaddrs.cSuccessNone
getifaddrs: Bad address
pipe.cSuccessNone
pipe() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipe2.cSuccessNone
pipe2() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipeinput.cSuccessNone
about to write to pipe in parent
I'm parent with pid: 2
Hey Nick!

pipeinput2.cSuccessNone
about to write to pipe in parent
I'm parent with pid: 2
Hey Nick!

pipeonestring.cSuccessNone
about to write to pipe in parent
I'm child with pid: 0
I'm parent with pid: 2
Hey Nick!
������
pipewrite.cSuccessNone
Made pipe with write end 3 and read end 4
wrote 16
write 16
wrote 16
wrote three messages to the pipe
msg 0, length 16: hello, world #1
msg 1, length 16: hello, world #2
msg 2, length 16: hello, world #3
shutdown_fork.cSuccessNone
2�6d-05
simple-select.cSuccessNone
[child] waiting for data...
[parent] writing message
[child] got data: hello select!

[child] waiting for data...
[child] pipe closed

socketepoll.cSuccessNone
SERVER: New socket bound and listen
SERVER: NEW CONNECTION
CLIENT: Hello message sent
Hello from client
Message Received
CLIENT: sending followup
Did you get my message?
CLIENT: Closed connection
Closed connection on descriptor 6
read error: Connection reset by peer
Process Tests
fork2malloc.cSuccessNone
first malloc
Address of mptr1 0x30010
Contents of mptr1 deadbeef
pre-fork
in child
Address of mptr1 0x30fc0
done
fork_simple.cSuccessNone
Parent pid = 1
Child pid = 2
forkandopen.cSuccessNone
Parent: Testing open in parent: pid 2!
Child: Testing open in child: pid 0!
Parent: Pid 2 opened fd -1
Child: Pid 0 opened fd -1
forkfiles.cSuccessNone
read -1 chars
forkmalloc.cSuccessNone
in child
pointer address is 0x30010
done
getpid.cSuccessNone
printing pidSuccess
tls_test.cSuccessNone
Thread 1: initial tls_var(4294960704) = 233
Thread 2: initial tls_var(4294825536) = 233
Thread 3: initial tls_var(4294690368) = 233
Thread 4: initial tls_var(4294555200) = 233
Thread 5: initial tls_var(4294420032) = 233
Thread 1 (after sleep): tls_var(4294960704) = 10
Thread 2 (after sleep): tls_var(4294825536) = 20
Thread 3 (after sleep): tls_var(4294690368) = 30
Thread 4 (after sleep): tls_var(4294555200) = 40
Thread 5 (after sleep): tls_var(4294420032) = 50
Signal Tests
signal.cSuccessNone
main starts!
child ready to kill
child done kill
parent in loop, pid=1
Caught signal 10
parent in loop, pid=1
Terminated
signal_SIGCHLD.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 17
Caught signal 10
signal_fork.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 2
after fork inside signal handler, pid=3
after fork inside signal handler, pid=1
parent in loop, pid=1
parent in loop, pid=3
parent in loop, pid=3
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=3
parent in loop, pid=1
parent in loop, pid=3
signal_int_thread.cSuccessNone
main starts!
Hello from thread
thread sleep
thread sleep
child ready to kill
child done kill
child in loop, pid=2
Terminated
Terminated
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
signal_longjmp.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
after fork inside signal handler, pid=3
after fork inside signal handler, pid=1
after child longjmp (should only be printed once by parent)
parent in loop, pid=1
back from setjmp: 42! pid=3
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
signal_nodefer.cSuccessNone
main starts!
*child ready to kill
parent in loop, pid=1
*child sent SIGUSR1
*child ready to send SIGUSR1 again
*child done kill
Caught signal 10
Caught signal 10
start of signal handler
end of signal handler
start of signal handler
end of signal handler
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
signal_procmask.cSuccessNone
Parent: Blocking SIGINT...
Signal 2 is BLOCKED
Parent: SIGINT is blocked. Child will send SIGINT soon...
Child: Sending SIGINT to parent (PID: 1)
Parent: Unblocking SIGINT now.
SIGINT received! (Handled in Parent Process)
Signal 2 is UNBLOCKED
Parent: Waiting for SIGINT...
signal_sa_mask.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
signal 10 done
Caught signal 12
signal 12 done
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1

@github-actions
Copy link
Contributor

End-to-End Test Report

Test Preview

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases58
Number of Successes58
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

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
close.cSuccessNone
File opened and closed 2000 times successfully.
doubleclose.cSuccessNone
dup2.cSuccessNone
Testing dup2
I should be printed before the file contents!
I will be printed in the file dup2test.txt
dup3.cSuccessNone
dup3 basic test passed.
dupwrite.cSuccessNone
write succeeded
fcntl.cSuccessNone
Original FD: 3
F_DUPFD duplicated FD: 100
F_DUPFD_CLOEXEC duplicated FD: 101
Original FD flags: FD flags = 0x0
F_DUPFD duplicated FD flags: FD flags = 0x0
F_DUPFD_CLOEXEC duplicated FD flags: FD flags = 0x1
After F_SETFD on F_DUPFD duplicated FD: FD flags = 0x1
Test completed successfully.
filetest.cSuccessNone
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
filetest1000.cSuccessNone
ioctl.cSuccessNone
[For 0 = False and  = True]
[The answers should be F, T, F]

(0) Is the socket set for non-blocking I/O?: 0
[Setting socket for non_blocking I/O]
(1) Is the socket set for non-blocking I/O?: 2048
[Clearing socket for non-blocking I/O]
(2) Is the socket set for non-blocking I/O?: 0

mkdir_rmdir.cSuccessNone
Created directory successfully
Removed directory successfully
open.cSuccessNone
File opened successfully with fd = 3
pread_pwrite.cSuccessNone
[file is opened]
[succeeded write(1) process]
[reading(1) data] from pwrite.txt
[Lind is amazing!]
-----------------------------------
[succeeded write(2) process]
[reading(2) data] from pwrite.txt
[NYU is amazing!]
[succeeded in close]
printf.cSuccessNone
Hello, World!
readbytes.cSuccessNone
This is a test of the wonderful fork call in lind.�
unlinkat.cSuccessNone
=== Test Case 1: Remove valid file ===
Test Case 1: Successfully removed testfiles/unlinkatfile.txt

=== Test Case 2: Remove non-existent file ===
Test Case 2: Expected failure: No such file or directory

=== Test Case 3: Remove file in a subdirectory ===
Test Case 3: Successfully removed file in subdirectory

=== Test Case 4: Remove a directory with AT_REMOVEDIR ===
Test Case 4: Successfully removed directory testfiles/unlinkatsubdir

=== Test Case 5: Remove a directory without AT_REMOVEDIR ===
Test Case 5: Expected failure: Is a directory

write.cSuccessNone
Hello world from Coulson's WASM
writeloop.cSuccessNone
write succeeded
writepartial.cSuccessNone
write
Memory Tests
brk.cSuccessNone
PASS
malloc.cSuccessNone
memcpy.cSuccessNone
Hello, World!
mmap_file.cSuccessNone
Data written to memory-mapped file: Hello, mmap!
Data read back from memory-mapped file: Hello, mmap!
mmap_shared.cSuccessNone
parent value: 1234, 4321
parent value after fork: 1234, 4321
child value after fork: 1234, 4321
parent value after modification: 2333, 3332
child value after modification: 2333, 4321
mprotect.cSuccessNone
Mprotect write test text
sbrk.cSuccessNone
Content in allocated memory: Hello, sbrk memory!
shmtest.cSuccessNone
Networking Tests
gethostname.cSuccessNone
Hostname: buildkitsandbox
makepipe.cSuccessNone
pipepong.cSuccessNone
Parent sending 1
Child received 1
Child sends 2
Parent received 2
Parent sending 3
Child received 3
Child sends 4
Parent received 4
Parent sending 5
Child received 5
Child sends 6
Parent received 6
Parent sending 7
Child received 7
Child sends 8
Parent received 8
Parent sending 9
Child received 9
Child sends 10
Parent received 10
Parent sending 11
Child received 11
Child sends 12
Parent received 12
Parent sending 13
Child received 13
Child sends 14
Parent received 14
Parent sending 15
Child received 15
Child sends 16
Parent received 16
Parent sending 17
Child received 17
Child sends 18
Parent received 18
Parent sending 19
Child received 19
Child sends 20
Parent received 20
Parent sending 21
Child received 21
Child sends 22
Parent received 22
Parent sending 23
Child received 23
Child sends 24
Parent received 24
Parent sending 25
Child received 25
Child sends 26
Parent received 26
Parent sending 27
Child received 27
Child sends 28
Parent received 28
Parent sending 29
Child received 29
Child sends 30
Parent received 30
Parent sending 31
Child received 31
Child sends 32
Parent received 32
Parent sending 33
Child received 33
Child sends 34
Parent received 34
Parent sending 35
Child received 35
Child sends 36
Parent received 36
Parent sending 37
Child received 37
Child sends 38
Parent received 38
Parent sending 39
Child received 39
Child sends 40
Parent received 40
Parent sending 41
Child received 41
Child sends 42
Parent received 42
Parent sending 43
Child received 43
Child sends 44
Parent received 44
Parent sending 45
Child received 45
Child sends 46
Parent received 46
Parent sending 47
Child received 47
Child sends 48
Parent received 48
Parent sending 49
Child received 49
Child sends 50
Parent received 50
Parent sending 51
Child received 51
Child sends 52
Parent received 52
Parent sending 53
Child received 53
Child sends 54
Parent received 54
Parent sending 55
Child received 55
Child sends 56
Parent received 56
Parent sending 57
Child received 57
Child sends 58
Parent received 58
Parent sending 59
Child received 59
Child sends 60
Parent received 60
Parent sending 61
Child received 61
Child sends 62
Parent received 62
Parent sending 63
Child received 63
Child sends 64
Parent received 64
Parent sending 65
Child received 65
Child sends 66
Parent received 66
Parent sending 67
Child received 67
Child sends 68
Parent received 68
Parent sending 69
Child received 69
Child sends 70
Parent received 70
Parent sending 71
Child received 71
Child sends 72
Parent received 72
Parent sending 73
Child received 73
Child sends 74
Parent received 74
Parent sending 75
Child received 75
Child sends 76
Parent received 76
Parent sending 77
Child received 77
Child sends 78
Parent received 78
Parent sending 79
Child received 79
Child sends 80
Parent received 80
Parent sending 81
Child received 81
Child sends 82
Parent received 82
Parent sending 83
Child received 83
Child sends 84
Parent received 84
Parent sending 85
Child received 85
Child sends 86
Parent received 86
Parent sending 87
Child received 87
Child sends 88
Parent received 88
Parent sending 89
Child received 89
Child sends 90
Parent received 90
Parent sending 91
Child received 91
Child sends 92
Parent received 92
Parent sending 93
Child received 93
Child sends 94
Parent received 94
Parent sending 95
Child received 95
Child sends 96
Parent received 96
Parent sending 97
Child received 97
Child sends 98
Parent received 98
Parent sending 99
Child received 99
Child sends 100
Parent received 100
Pipe Pong complete.
Final value: 100
poll.cSuccessNone
stdout is ready for writing.
recvfrom-sendto.cSuccessNone
Client sent: Hello recvfrom!
simple_epoll.cSuccessNone
waiting for epoll event...
got data: hello epoll!

socket.cSuccessNone
Socket opened succesfully.
socket_cloexec.cSuccessNone
SOCK_CLOEXEC is set.
socketpair.cSuccessNone
-->In Xanadu, did Kublai Khan . . .
-->A stately pleasure dome decree . . .
tcp_connect_single.cSuccessNone
Process Tests
chain_thread.cSuccessNone
Outer thread running...
Inner thread running...
Inner thread done.
Outer thread done.
Main thread done.
exit.cSuccessNone
Exiting...

forkdup.cSuccessNone
I'm the parent
back to stdout
all done
forkexecv-arg.cSuccessNone
Received argument: hello-arg
forkexecv.cSuccessNone
wark
function-ptr.cSuccessNone
Hello, World!
getppid.cSuccessNone
getppid() succeeded
hello-arg.cSuccessNone
Received argument: hello-arg
hello.cSuccessNone
wark
longjmp.cSuccessNone
In main: Calling first_function...
In first_function: Calling second_function...
In second_function: Performing a long jump...
Back in main: long jump returned with value = 42
noforkfiles.cSuccessNone
sem_forks.cSuccessNone
sigalrm.cSuccessNone
SIGALRM signals blocked
Alarm Handled. Exiting
sigchld.cSuccessNone
Signal Child Test!
signal-fork.cSuccessNone
Successfully changed the signal handler for Signal 12
Killing Child
Signal Handler Test!
Exiting Child
signal-simple.cSuccessNone
Successfully changed the signal handler for Signal 12
Signal Handler Test!
thread-test.cSuccessNone
Hello from the thread!
Thread has finished execution
thread.cSuccessNone
Hello from thread
wait.cSuccessNone
Parent detected child finished.
Child exited with status 0
waitpid_wnohang.cSuccessNone
Signal Tests
alarm.cSuccessNone
Setting an alarm to trigger in 1 seconds...
Alarm triggered! Signal received: 14
Alarm triggered! Signal received: 14
Alarm triggered! Signal received: 14
setitimer.cSuccessNone
Timer started! SIGALRM will fire every 3 seconds.
Timer expired! Signal received: 14
Timer expired! Signal received: 14
Timer expired! Signal received: 14
Non Deterministic Tests

Summary

MetricCount
Total Test Cases38
Number of Successes38
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

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
chdir_getcwd.cSuccessNone
getcwd() error: Success
getcwd() error: Success
clock_gettime_highlevel.cSuccessNone
Running 1,000,000 iterations...

Start time: 6394 clock ticks
End time: 8749 clock ticks
Elapsed CPU time: 0.002355 seconds

clock_gettime_simple.cSuccessNone
Current time: 1760691023 seconds and 937755334 nanoseconds
dup.cSuccessNone
duped fd: 3
attempting to write to dup() fd

write to dup() fd succeeded
write to old fd succeeded

fchdir.cSuccessNone
getcwd() error: Success
fstatfs.cSuccessNone
Filesystem type: 794c7630
getcwd.cSuccessNone
getcwd() error: Success
read.cSuccessNone
open(): No such file or directory
statfs.cSuccessNone
Error in statfs
: No such file or directory
Memory Tests
mmap_complicated.cSuccessNone
Parent: Waiting for child to write.
Child: Writing to shared memory.
Parent: Reading from shared memory: 'Hello from the child process!'
Child: Reading from shared memory: 'Hello from the parent process!'
Child: Exiting.
Parent: Reading modified shared memory: 'Hello from the parent process!'
Parent: Exiting.
segfault.cSuccessNone
pipe() ret: [3, 4]
read() ret: 3
hi
shm.cSuccessNone
Shared memory segment created with id: 1
Parent attached to shared memory at 0xffffe000
Parent wrote: 'Hello from parent'
Child attached to shared memory at 0xffffe000
Child reads: 'Hello from parent'
Child detached from shared memory
Parent reads: 'Hello from child'
Parent detached from shared memory
Shared memory segment removed
Networking Tests
dnstest.cSuccessNone
is sockfd valid? yes
37 is the length sent
53 is the length recieved
the dns lookup yields the ip address: 35.172.89.115
getifaddrs.cSuccessNone
getifaddrs: Bad address
pipe.cSuccessNone
pipe() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipe2.cSuccessNone
pipe2() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipeinput.cSuccessNone
about to write to pipe in parent
I'm parent with pid: 2
Hey Nick!

pipeinput2.cSuccessNone
about to write to pipe in parent
I'm parent with pid: 2
Hey Nick!

pipeonestring.cSuccessNone
about to write to pipe in parent
I'm child with pid: 0
I'm parent with pid: 2
Hey Nick!
������
pipewrite.cSuccessNone
Made pipe with write end 3 and read end 4
wrote 16
write 16
wrote 16
wrote three messages to the pipe
msg 0, length 16: hello, world #1
msg 1, length 16: hello, world #2
msg 2, length 16: hello, world #3
shutdown_fork.cSuccessNone
2�8d-05
simple-select.cSuccessNone
[child] waiting for data...
[parent] writing message
[child] got data: hello select!

[child] waiting for data...
[child] pipe closed

socketepoll.cSuccessNone
SERVER: New socket bound and listen
SERVER: NEW CONNECTION
CLIENT: Hello message sent
Hello from client
Message Received
CLIENT: sending followup
Did you get my message?
CLIENT: Closed connection
Closed connection on descriptor 6
read error: Connection reset by peer
Process Tests
fork2malloc.cSuccessNone
first malloc
Address of mptr1 0x30010
Contents of mptr1 deadbeef
pre-fork
in child
Address of mptr1 0x30fc0
done
fork_simple.cSuccessNone
Parent pid = 1
Child pid = 2
forkandopen.cSuccessNone
Parent: Testing open in parent: pid 2!
Child: Testing open in child: pid 0!
Parent: Pid 2 opened fd 3
Child: Pid 0 opened fd 3
forkfiles.cSuccessNone
This is a test of the wonderful fork call in lind.
read 51 chars
forkmalloc.cSuccessNone
in child
pointer address is 0x30010
done
getpid.cSuccessNone
printing pidSuccess
tls_test.cSuccessNone
Thread 1: initial tls_var(4294960704) = 233
Thread 2: initial tls_var(4294825536) = 233
Thread 3: initial tls_var(4294690368) = 233
Thread 4: initial tls_var(4294555200) = 233
Thread 5: initial tls_var(4294420032) = 233
Thread 1 (after sleep): tls_var(4294960704) = 10
Thread 2 (after sleep): tls_var(4294825536) = 20
Thread 3 (after sleep): tls_var(4294690368) = 30
Thread 4 (after sleep): tls_var(4294555200) = 40
Thread 5 (after sleep): tls_var(4294420032) = 50
Signal Tests
signal.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
parent in loop, pid=1
Terminated
signal_SIGCHLD.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 17
Caught signal 10
signal_fork.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 2
after fork inside signal handler, pid=3
after fork inside signal handler, pid=1
parent in loop, pid=1
parent in loop, pid=3
parent in loop, pid=3
parent in loop, pid=1
parent in loop, pid=3
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=3
signal_int_thread.cSuccessNone
main starts!
Hello from thread
thread sleep
thread sleep
child ready to kill
child done kill
Terminated
child in loop, pid=2
Terminated
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
signal_longjmp.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
after fork inside signal handler, pid=1
after fork inside signal handler, pid=3
after child longjmp (should only be printed once by parent)
parent in loop, pid=1
back from setjmp: 42! pid=3
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
signal_nodefer.cSuccessNone
main starts!
parent in loop, pid=1
*child ready to kill
*child sent SIGUSR1
*child ready to send SIGUSR1 again
Caught signal 10
start of signal handler
*child done kill
Caught signal 10
start of signal handler
end of signal handler
end of signal handler
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
signal_procmask.cSuccessNone
Parent: Blocking SIGINT...
Signal 2 is BLOCKED
Parent: SIGINT is blocked. Child will send SIGINT soon...
Child: Sending SIGINT to parent (PID: 1)
Parent: Unblocking SIGINT now.
SIGINT received! (Handled in Parent Process)
Signal 2 is UNBLOCKED
Parent: Waiting for SIGINT...
signal_sa_mask.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
signal 10 done
Caught signal 12
signal 12 done
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1

@github-actions
Copy link
Contributor

End-to-End Test Report

Test Preview

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases89
Number of Successes62
Number of Failures27
Number of Compilation Failure Native1
Number of Runtime Failure Native10
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure2
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure2
Number of Timeout During Lind Wasm run3
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch9

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
chmod.cFailureFailure_native_running
Native execution: ERROR with CHMOD: No such file or directory
cloexec.cFailureOutput_mismatch
=== Expected Output ===
fstat on fd1 returns 0, should succeed
fstat on fd2 returns -1, should fail

=== WASM Output ===

close.cSuccessNone
File opened and closed 2000 times successfully.
creat_access.cFailureOutput_mismatch
=== Expected Output ===
Created file
File exists
File has the right permissions

=== WASM Output ===
Created file
COULD NOT ACCESS FILE: No such file or directory

doubleclose.cSuccessNone
dup2.cSuccessNone
Testing dup2
I should be printed before the file contents!
I will be printed in the file dup2test.txt
dup3.cSuccessNone
dup3 basic test passed.
dupwrite.cSuccessNone
write succeeded
fchmod.cFailureFailure_native_running
Native execution: ERROR with FCHMOD: Bad file descriptor
fcntl.cSuccessNone
Original FD: 3
F_DUPFD duplicated FD: 100
F_DUPFD_CLOEXEC duplicated FD: 101
Original FD flags: FD flags = 0x0
F_DUPFD duplicated FD flags: FD flags = 0x0
F_DUPFD_CLOEXEC duplicated FD flags: FD flags = 0x1
After F_SETFD on F_DUPFD duplicated FD: FD flags = 0x1
Test completed successfully.
fdatasync.cSuccessNone
filetest.cSuccessNone
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
filetest1000.cSuccessNone
flock.cFailureOutput_mismatch
=== Expected Output ===
Obtained exclusive lock on file
Released exclusive lock on file
Obtained shared lock on file
Obtained shared lock on file
Released shared lock on file
Released shared lock on file

=== WASM Output ===
Obtained exclusive lock on file
Released exclusive lock on file
Obtained shared lock on file
Obtained shared lock on file
Released shared lock on file
Released shared lock on file
[3i|make_syscall] Syscall number 73 not found!
[3i|make_syscall] Syscall number 73 not found!
[3i|make_syscall] Syscall number 73 not found!
[3i|make_syscall] Syscall number 73 not found!
[3i|make_syscall] Syscall number 73 not found!
[3i|make_syscall] Syscall number 73 not found!

fstat.cFailureFailure_native_running
Native execution: running fstat("testfiles/fstatfile.txt")
errno: 22
fstat: Bad file descriptor
fsync.cSuccessNone
ioctl.cSuccessNone
[For 0 = False and  = True]
[The answers should be F, T, F]

(0) Is the socket set for non-blocking I/O?: 0
[Setting socket for non_blocking I/O]
(1) Is the socket set for non-blocking I/O?: 2048
[Clearing socket for non-blocking I/O]
(2) Is the socket set for non-blocking I/O?: 0

mkdir_rmdir.cSuccessNone
Created directory successfully
Removed directory successfully
open.cSuccessNone
File opened successfully with fd = 3
popen.cFailureLind_wasm_compiling
wasm-ld: warning: function signature mismatch: main
>>> defined as (i32, i32, i32) -> i32 in //src/glibc/sysroot/lib/wasm32-wasi/crt1.o
>>> defined as (i32, i32) -> i32 in /tmp/popen-e5dc79.o
[wasm-validator error in function __clone_internal_fallback] unexpected false: non-final block elements returning a value must be dropped, on 
(block (result i32)
 (global.set $__stack_pointer
  (local.tee $3
   (i32.sub
    (global.get $__stack_pointer)
    (i32.const 16)
   )
  )
 )
 (local.set $4
  (i64.load offset=32
   (local.get $0)
  )
 )
 (local.set $5
  (i64.load
   (local.get $0)
  )
 )
 (local.set $6
  (i32.load offset=48
   (local.get $0)
  )
 )
 (local.set $7
  (i32.load offset=40
   (local.get $0)
  )
 )
 (local.set $8
  (i64.load offset=24
   (local.get $0)
  )
 )
 (local.set $9
  (i64.load offset=56
   (local.get $0)
  )
 )
 (i64.store32 offset=8
  (local.get $3)
  (i64.load offset=16
   (local.get $0)
  )
 )
 (i64.store32 offset=4
  (local.get $3)
  (local.get $9)
 )
 (i64.store32
  (local.get $3)
  (local.get $8)
 )
 (local.get $1)
 (i32.add
  (local.get $7)
  (local.get $6)
 )
 (i32.wrap_i64
  (i64.or
   (local.get $4)
   (local.get $5)
  )
 )
 (local.get $2)
 (local.get $3)
 (local.set $0
  (call $__GI___clone)
 )
 (global.set $__stack_pointer
  (i32.add
   (local.get $3)
   (i32.const 16)
  )
 )
 (local.get $0)
)
(on index 10:
0x5582054df018
), type: i32
[wasm-validator error in function __clone_internal_fallback] unexpected false: non-final block elements returning a value must be dropped, on 
(block (result i32)
 (global.set $__stack_pointer
  (local.tee $3
   (i32.sub
    (global.get $__stack_pointer)
    (i32.const 16)
   )
  )
 )
 (local.set $4
  (i64.load offset=32
   (local.get $0)
  )
 )
 (local.set $5
  (i64.load
   (local.get $0)
  )
 )
 (local.set $6
  (i32.load offset=48
   (local.get $0)
  )
 )
 (local.set $7
  (i32.load offset=40
   (local.get $0)
  )
 )
 (local.set $8
  (i64.load offset=24
   (local.get $0)
  )
 )
 (local.set $9
  (i64.load offset=56
   (local.get $0)
  )
 )
 (i64.store32 offset=8
  (local.get $3)
  (i64.load offset=16
   (local.get $0)
  )
 )
 (i64.store32 offset=4
  (local.get $3)
  (local.get $9)
 )
 (i64.store32
  (local.get $3)
  (local.get $8)
 )
 (local.get $1)
 (i32.add
  (local.get $7)
  (local.get $6)
 )
 (i32.wrap_i64
  (i64.or
   (local.get $4)
   (local.get $5)
  )
 )
 (local.get $2)
 (local.get $3)
 (local.set $0
  (call $__GI___clone)
 )
 (global.set $__stack_pointer
  (i32.add
   (local.get $3)
   (i32.const 16)
  )
 )
 (local.get $0)
)
(on index 11:
0x5582054df060
), type: i32
[wasm-validator error in function __clone_internal_fallback] unexpected false: non-final block elements returning a value must be dropped, on 
(block (result i32)
 (global.set $__stack_pointer
  (local.tee $3
   (i32.sub
    (global.get $__stack_pointer)
    (i32.const 16)
   )
  )
 )
 (local.set $4
  (i64.load offset=32
   (local.get $0)
  )
 )
 (local.set $5
  (i64.load
   (local.get $0)
  )
 )
 (local.set $6
  (i32.load offset=48
   (local.get $0)
  )
 )
 (local.set $7
  (i32.load offset=40
   (local.get $0)
  )
 )
 (local.set $8
  (i64.load offset=24
   (local.get $0)
  )
 )
 (local.set $9
  (i64.load offset=56
   (local.get $0)
  )
 )
 (i64.store32 offset=8
  (local.get $3)
  (i64.load offset=16
   (local.get $0)
  )
 )
 (i64.store32 offset=4
  (local.get $3)
  (local.get $9)
 )
 (i64.store32
  (local.get $3)
  (local.get $8)
 )
 (local.get $1)
 (i32.add
  (local.get $7)
  (local.get $6)
 )
 (i32.wrap_i64
  (i64.or
   (local.get $4)
   (local.get $5)
  )
 )
 (local.get $2)
 (local.get $3)
 (local.set $0
  (call $__GI___clone)
 )
 (global.set $__stack_pointer
  (i32.add
   (local.get $3)
   (i32.const 16)
  )
 )
 (local.get $0)
)
(on index 12:
0x5582054df0e0
), type: i32
[wasm-validator error in function __clone_internal_fallback] unexpected false: non-final block elements returning a value must be dropped, on 
(block (result i32)
 (global.set $__stack_pointer
  (local.tee $3
   (i32.sub
    (global.get $__stack_pointer)
    (i32.const 16)
   )
  )
 )
 (local.set $4
  (i64.load offset=32
   (local.get $0)
  )
 )
 (local.set $5
  (i64.load
   (local.get $0)
  )
 )
 (local.set $6
  (i32.load offset=48
   (local.get $0)
  )
 )
 (local.set $7
  (i32.load offset=40
   (local.get $0)
  )
 )
 (local.set $8
  (i64.load offset=24
   (local.get $0)
  )
 )
 (local.set $9
  (i64.load offset=56
   (local.get $0)
  )
 )
 (i64.store32 offset=8
  (local.get $3)
  (i64.load offset=16
   (local.get $0)
  )
 )
 (i64.store32 offset=4
  (local.get $3)
  (local.get $9)
 )
 (i64.store32
  (local.get $3)
  (local.get $8)
 )
 (local.get $1)
 (i32.add
  (local.get $7)
  (local.get $6)
 )
 (i32.wrap_i64
  (i64.or
   (local.get $4)
   (local.get $5)
  )
 )
 (local.get $2)
 (local.get $3)
 (local.set $0
  (call $__GI___clone)
 )
 (global.set $__stack_pointer
  (i32.add
   (local.get $3)
   (i32.const 16)
  )
 )
 (local.get $0)
)
(on index 13:
0x5582054df100
), type: i32
[wasm-validator error in function __clone_internal_fallback] unexpected false: non-final block elements returning a value must be dropped, on 
(block (result i32)
 (global.set $__stack_pointer
  (local.tee $3
   (i32.sub
    (global.get $__stack_pointer)
    (i32.const 16)
   )
  )
 )
 (local.set $4
  (i64.load offset=32
   (local.get $0)
  )
 )
 (local.set $5
  (i64.load
   (local.get $0)
  )
 )
 (local.set $6
  (i32.load offset=48
   (local.get $0)
  )
 )
 (local.set $7
  (i32.load offset=40
   (local.get $0)
  )
 )
 (local.set $8
  (i64.load offset=24
   (local.get $0)
  )
 )
 (local.set $9
  (i64.load offset=56
   (local.get $0)
  )
 )
 (i64.store32 offset=8
  (local.get $3)
  (i64.load offset=16
   (local.get $0)
  )
 )
 (i64.store32 offset=4
  (local.get $3)
  (local.get $9)
 )
 (i64.store32
  (local.get $3)
  (local.get $8)
 )
 (local.get $1)
 (i32.add
  (local.get $7)
  (local.get $6)
 )
 (i32.wrap_i64
  (i64.or
   (local.get $4)
   (local.get $5)
  )
 )
 (local.get $2)
 (local.get $3)
 (local.set $0
  (call $__GI___clone)
 )
 (global.set $__stack_pointer
  (i32.add
   (local.get $3)
   (i32.const 16)
  )
 )
 (local.get $0)
)
(on index 14:
0x5582054df118
), type: i32
Fatal: error validating input
pread_pwrite.cSuccessNone
[file is opened]
[succeeded write(1) process]
[reading(1) data] from pwrite.txt
[Lind is amazing!]
-----------------------------------
[succeeded write(2) process]
[reading(2) data] from pwrite.txt
[NYU is amazing!]
[succeeded in close]
printf.cSuccessNone
Hello, World!
readbytes.cSuccessNone
This is a test of the wonderful fork call in lind.�
readlink.cSuccessNone
=== Test Case 1: Valid symbolic link ===
Symbolic link points to: /src/RawPOSIX/tmp/testfiles/readlinkfile.txt

=== Test Case 2: Path is not a symbolic link ===
Expected failure: No such file or directory

=== Test Case 3: Symbolic link with buffer too small ===
Symbolic link truncated result: /src/

=== Test Case 4: Non-existent path ===
Expected failure: No such file or directory

readlinkat.cFailureOutput_mismatch
=== Expected Output ===
Test Case 1: Symbolic link points to: /src/RawPOSIX/tmp/testfiles/readlinkfile.txt
Test Case 3: Expected failure: No such file or directory
Test Case 4: Expected failure: Bad file descriptor

=== WASM Output ===
Test Case 1: Symbolic link points to: /src/RawPOSIX/tmp/testfiles/readlinkfile.txt
Test Case 2: Symbolic link points to: /src/RawPOSIX/tmp/testfiles/readlinkfile.txt
Test Case 3: Expected failure: No such file or directory
Test Case 4: Expected failure: Invalid argument

rename.cFailureFailure_native_running
Native execution: ERROR WITH STAT CALL ON OLD NAME: No such file or directory
stat.cFailureFailure_native_running
Native execution: running stat("testfiles/statfile.txt")
errno: 22
stat: No such file or directory
sync_file_range.cSuccessNone
sync_file_range test completed successfully.
truncate.cFailureFailure_native_running
Native execution: Test truncate(const char *, off_t)
Truncating testfiles/truncatefile.txt from 1 to 124
ERROR WHEN TRUNCATING FILE: No such file or directory
unlinkat.cSuccessNone
=== Test Case 1: Remove valid file ===
Test Case 1: Successfully removed testfiles/unlinkatfile.txt

=== Test Case 2: Remove non-existent file ===
Test Case 2: Expected failure: No such file or directory

=== Test Case 3: Remove file in a subdirectory ===
Test Case 3: Successfully removed file in subdirectory

=== Test Case 4: Remove a directory with AT_REMOVEDIR ===
Test Case 4: Successfully removed directory testfiles/unlinkatsubdir

=== Test Case 5: Remove a directory without AT_REMOVEDIR ===
Test Case 5: Expected failure: Is a directory

write.cSuccessNone
Hello world from Coulson's WASM
writeloop.cSuccessNone
write succeeded
writepartial.cSuccessNone
write
Memory Tests
brk.cSuccessNone
PASS
malloc.cSuccessNone
malloc_large.cFailureOutput_mismatch
=== Expected Output ===
0x7fb1b6a8e010: 42

=== WASM Output ===
0xefffe010: 42

memcpy.cSuccessNone
Hello, World!
mmap-nagative1.cFailureFailure_native_running
Native execution: 
mmap-nagative2.cFailureFailure_native_running
Native execution: 
mmap.cFailureFailure_native_compiling
Native execution: /tmp/wasmtest_artifacts_v6x68jl5/memory_tests/deterministic/mmap.c: In function ‘main’:
/tmp/wasmtest_artifacts_v6x68jl5/memory_tests/deterministic/mmap.c:9:26: warning: implicit declaration of function ‘__builtin_wasm_memory_size’ [-Wimplicit-function-declaration]
    9 |     int linear_mem_end = __builtin_wasm_memory_size(0);
      |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/ld: /tmp/ccQjOs58.o: in function `main':
mmap.c:(.text+0x2a): undefined reference to `__builtin_wasm_memory_size'
/usr/bin/ld: mmap.c:(.text+0x79): undefined reference to `__builtin_wasm_memory_size'
collect2: error: ld returned 1 exit status
mmap_file.cSuccessNone
Data written to memory-mapped file: Hello, mmap!
Data read back from memory-mapped file: Hello, mmap!
mmap_shared.cSuccessNone
parent value: 1234, 4321
parent value after fork: 1234, 4321
child value after fork: 1234, 4321
parent value after modification: 2333, 3332
child value after modification: 2333, 4321
mmaptest.cFailureFailure_native_running
Native execution: mmaptest.o: /tmp/wasmtest_artifacts_v6x68jl5/memory_tests/deterministic/mmaptest.c:20: main: Assertion `fd != -1' failed.
mprotect.cSuccessNone
Mprotect write test text
sbrk.cSuccessNone
Content in allocated memory: Hello, sbrk memory!
shmtest.cSuccessNone
vtable.cFailureOutput_mismatch
=== Expected Output ===
Shape 0 area: 12.000000
Shape 1 area: 19.634954

=== WASM Output ===
Shape 0 area: 12
Shape 1 area: 19.635

Networking Tests
gethostname.cSuccessNone
Hostname: buildkitsandbox
makepipe.cSuccessNone
pipepong.cSuccessNone
Parent sending 1
Child received 1
Child sends 2
Parent received 2
Parent sending 3
Child received 3
Child sends 4
Parent received 4
Parent sending 5
Child received 5
Child sends 6
Parent received 6
Parent sending 7
Child received 7
Child sends 8
Parent received 8
Parent sending 9
Child received 9
Child sends 10
Parent received 10
Parent sending 11
Child received 11
Child sends 12
Parent received 12
Parent sending 13
Child received 13
Child sends 14
Parent received 14
Parent sending 15
Child received 15
Child sends 16
Parent received 16
Parent sending 17
Child received 17
Child sends 18
Parent received 18
Parent sending 19
Child received 19
Child sends 20
Parent received 20
Parent sending 21
Child received 21
Child sends 22
Parent received 22
Parent sending 23
Child received 23
Child sends 24
Parent received 24
Parent sending 25
Child received 25
Child sends 26
Parent received 26
Parent sending 27
Child received 27
Child sends 28
Parent received 28
Parent sending 29
Child received 29
Child sends 30
Parent received 30
Parent sending 31
Child received 31
Child sends 32
Parent received 32
Parent sending 33
Child received 33
Child sends 34
Parent received 34
Parent sending 35
Child received 35
Child sends 36
Parent received 36
Parent sending 37
Child received 37
Child sends 38
Parent received 38
Parent sending 39
Child received 39
Child sends 40
Parent received 40
Parent sending 41
Child received 41
Child sends 42
Parent received 42
Parent sending 43
Child received 43
Child sends 44
Parent received 44
Parent sending 45
Child received 45
Child sends 46
Parent received 46
Parent sending 47
Child received 47
Child sends 48
Parent received 48
Parent sending 49
Child received 49
Child sends 50
Parent received 50
Parent sending 51
Child received 51
Child sends 52
Parent received 52
Parent sending 53
Child received 53
Child sends 54
Parent received 54
Parent sending 55
Child received 55
Child sends 56
Parent received 56
Parent sending 57
Child received 57
Child sends 58
Parent received 58
Parent sending 59
Child received 59
Child sends 60
Parent received 60
Parent sending 61
Child received 61
Child sends 62
Parent received 62
Parent sending 63
Child received 63
Child sends 64
Parent received 64
Parent sending 65
Child received 65
Child sends 66
Parent received 66
Parent sending 67
Child received 67
Child sends 68
Parent received 68
Parent sending 69
Child received 69
Child sends 70
Parent received 70
Parent sending 71
Child received 71
Child sends 72
Parent received 72
Parent sending 73
Child received 73
Child sends 74
Parent received 74
Parent sending 75
Child received 75
Child sends 76
Parent received 76
Parent sending 77
Child received 77
Child sends 78
Parent received 78
Parent sending 79
Child received 79
Child sends 80
Parent received 80
Parent sending 81
Child received 81
Child sends 82
Parent received 82
Parent sending 83
Child received 83
Child sends 84
Parent received 84
Parent sending 85
Child received 85
Child sends 86
Parent received 86
Parent sending 87
Child received 87
Child sends 88
Parent received 88
Parent sending 89
Child received 89
Child sends 90
Parent received 90
Parent sending 91
Child received 91
Child sends 92
Parent received 92
Parent sending 93
Child received 93
Child sends 94
Parent received 94
Parent sending 95
Child received 95
Child sends 96
Parent received 96
Parent sending 97
Child received 97
Child sends 98
Parent received 98
Parent sending 99
Child received 99
Child sends 100
Parent received 100
Pipe Pong complete.
Final value: 100
poll.cSuccessNone
stdout is ready for writing.
recvfrom-sendto.cSuccessNone
Client sent: Hello recvfrom!
simple_epoll.cSuccessNone
waiting for epoll event...
got data: hello epoll!

socket.cSuccessNone
Socket opened succesfully.
socket_cloexec.cSuccessNone
SOCK_CLOEXEC is set.
socketpair.cSuccessNone
-->In Xanadu, did Kublai Khan . . .
-->A stately pleasure dome decree . . .
tcp_connect_single.cSuccessNone
uds-getsockname.cFailureLind_wasm_Segmentation_Fault
Error: failed to run main module `/tmp/wasmtest_artifacts_v6x68jl5/networking_tests/deterministic/uds-getsockname.cwasm`

Caused by:
0: failed to invoke command default
1: error while executing at wasm backtrace:
0: 0x319 - uds-getsockname.wasm!signature_mismatch:main
1: 0x7eb - uds-getsockname.wasm!main
2: 0x9cc - uds-getsockname.wasm!__main_void
3: 0xc47 - uds-getsockname.wasm!_start
4: 0xeb58 - uds-getsockname.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

uds-nb-select.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
Process Tests
chain_thread.cSuccessNone
Outer thread running...
Inner thread running...
Inner thread done.
Outer thread done.
Main thread done.
exit.cSuccessNone
Exiting...

forkdup.cSuccessNone
I'm the parent
back to stdout
all done
forkexecuid.cFailureOutput_mismatch
=== Expected Output ===
printing getgid:
0
printing getuid:
0
printing getegid:
0
printing geteuid:
0
printing getgid:
0
printing getuid:
0
printing getegid:
0
printing geteuid:
0

=== WASM Output ===
printing getgid:printing getgid:

forkexecv-arg.cSuccessNone
Received argument: hello-arg
forkexecv.cSuccessNone
wark
forknodup.cFailureOutput_mismatch
=== Expected Output ===
I'm the PARENT
I'm the child
all done
all done

=== WASM Output ===
I'm the child
I'm the PARENT
all done
all done

function-ptr.cSuccessNone
Hello, World!
getppid.cSuccessNone
getppid() succeeded
getuid.cFailureOutput_mismatch
=== Expected Output ===
printing getgid:
0
printing getuid:
0
printing getegid:
0
printing geteuid:
0

=== WASM Output ===
printing getgid:

hello-arg.cSuccessNone
Received argument: hello-arg
hello.cSuccessNone
wark
longjmp.cSuccessNone
In main: Calling first_function...
In first_function: Calling second_function...
In second_function: Performing a long jump...
Back in main: long jump returned with value = 42
mutex.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
noforkfiles.cSuccessNone
sem_forks.cSuccessNone
setsid.cFailureLind_wasm_compiling
wasm-ld: warning: function signature mismatch: main
>>> defined as (i32, i32, i32) -> i32 in //src/glibc/sysroot/lib/wasm32-wasi/crt1.o
>>> defined as (i32, i32) -> i32 in /tmp/setsid-594f3f.o

wasm-ld: error: /tmp/setsid-594f3f.o: undefined symbol: setsid
clang: error: linker command failed with exit code 1 (use -v to see invocation)

sigalrm.cSuccessNone
SIGALRM signals blocked
Alarm Handled. Exiting
sigchld.cSuccessNone
Signal Child Test!
signal-fork.cSuccessNone
Successfully changed the signal handler for Signal 12
Killing Child
Signal Handler Test!
Exiting Child
signal-simple.cSuccessNone
Successfully changed the signal handler for Signal 12
Signal Handler Test!
sigpipe.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
sigprocmask.cFailureLind_wasm_Segmentation_Fault
Error: failed to run main module `/tmp/wasmtest_artifacts_v6x68jl5/process_tests/deterministic/sigprocmask.cwasm`

Caused by:
0: failed to invoke command default
1: error while executing at wasm backtrace:
0: 0x319 - sigprocmask.wasm!signature_mismatch:main
1: 0x7eb - sigprocmask.wasm!main
2: 0x9cc - sigprocmask.wasm!__main_void
3: 0xc47 - sigprocmask.wasm!_start
4: 0xeb58 - sigprocmask.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
Hello from the thread!
Thread has finished execution
thread.cSuccessNone
Hello from thread
wait.cSuccessNone
Parent detected child finished.
Child exited with status 0
waitpid_wnohang.cSuccessNone
Signal Tests
alarm.cSuccessNone
Setting an alarm to trigger in 1 seconds...
Alarm triggered! Signal received: 14
Alarm triggered! Signal received: 14
Alarm triggered! Signal received: 14
setitimer.cSuccessNone
Timer started! SIGALRM will fire every 3 seconds.
Timer expired! Signal received: 14
Timer expired! Signal received: 14
Timer expired! Signal received: 14
signal_resethand.cFailureFailure_native_running
Native execution: child send SIGINT
Signal 2 received! Handler is running...
After this, the handler will reset to default behavior.
child send SIGINT again
Non Deterministic Tests

Summary

MetricCount
Total Test Cases47
Number of Successes38
Number of Failures9
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 run9
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
chdir_getcwd.cSuccessNone
getcwd() error: Success
getcwd() error: Success
clock_gettime_highlevel.cSuccessNone
Running 1,000,000 iterations...

Start time: 6441 clock ticks
End time: 9080 clock ticks
Elapsed CPU time: 0.002639 seconds

clock_gettime_simple.cSuccessNone
Current time: 1760725012 seconds and 199631220 nanoseconds
dup.cSuccessNone
duped fd: 3
attempting to write to dup() fd

write to dup() fd succeeded
write to old fd succeeded

fchdir.cSuccessNone
getcwd() error: Success
fstatfs.cSuccessNone
Filesystem type: 794c7630
getcwd.cSuccessNone
getcwd() error: Success
read.cSuccessNone
open(): No such file or directory
sc-writev.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
statfs.cSuccessNone
Error in statfs
: No such file or directory
Memory Tests
mmap_complicated.cSuccessNone
Parent: Waiting for child to write.
Child: Writing to shared memory.
Parent: Reading from shared memory: 'Hello from the child process!'
Child: Reading from shared memory: 'Hello from the parent process!'
Child: Exiting.
Parent: Reading modified shared memory: 'Hello from the parent process!'
Parent: Exiting.
segfault.cSuccessNone
pipe() ret: [3, 4]
read() ret: 3
hi
shm.cSuccessNone
Shared memory segment created with id: 1
Parent attached to shared memory at 0xffffe000
Parent wrote: 'Hello from parent'
Child attached to shared memory at 0xffffe000
Child reads: 'Hello from parent'
Child detached from shared memory
Parent reads: 'Hello from child'
Parent detached from shared memory
Shared memory segment removed
Networking Tests
dnstest.cSuccessNone
is sockfd valid? yes
37 is the length sent
53 is the length recieved
the dns lookup yields the ip address: 35.172.89.115
getifaddrs.cSuccessNone
getifaddrs: Bad address
pipe.cSuccessNone
pipe() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipe2.cSuccessNone
pipe2() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipeinput.cSuccessNone
about to write to pipe in parent
I'm parent with pid: 2
Hey Nick!

pipeinput2.cSuccessNone
about to write to pipe in parent
I'm parent with pid: 2
Hey Nick!

pipeonestring.cSuccessNone
I'm child with pid: 0
about to write to pipe in parent
I'm parent with pid: 2
Hey Nick!
������
pipewrite.cSuccessNone
Made pipe with write end 3 and read end 4
wrote 16
write 16
wrote 16
wrote three messages to the pipe
msg 0, length 16: hello, world #1
msg 1, length 16: hello, world #2
msg 2, length 16: hello, world #3
serverclient.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
shutdown.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
shutdown_fork.cSuccessNone
2�5d-05
simple-select.cSuccessNone
[child] waiting for data...
[parent] writing message
[child] got data: hello select!

[child] waiting for data...
[child] pipe closed

socketepoll.cSuccessNone
SERVER: New socket bound and listen
SERVER: NEW CONNECTION
CLIENT: Hello message sent
Hello from client
Message Received
CLIENT: sending followup
Did you get my message?
CLIENT: Closed connection
Closed connection on descriptor 6
read error: Connection reset by peer
socketselect.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
uds-serverclient.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
uds-socketselect.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
Process Tests
fork.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
fork2malloc.cSuccessNone
first malloc
Address of mptr1 0x30010
Contents of mptr1 deadbeef
pre-fork
in child
Address of mptr1 0x30fc0
done
fork_simple.cSuccessNone
Parent pid = 1
Child pid = 2
forkandopen.cSuccessNone
Parent: Testing open in parent: pid 2!
Child: Testing open in child: pid 0!
Parent: Pid 2 opened fd 3
Child: Pid 0 opened fd 3
forkfiles.cSuccessNone
This is a test of the wonderful fork call in lind.
read 51 chars
forkmalloc.cSuccessNone
in child
pointer address is 0x30010
done
getpid.cSuccessNone
printing pidSuccess
template.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
tls_test.cSuccessNone
Thread 1: initial tls_var(4294960704) = 233
Thread 2: initial tls_var(4294825536) = 233
Thread 3: initial tls_var(4294690368) = 233
Thread 4: initial tls_var(4294555200) = 233
Thread 5: initial tls_var(4294420032) = 233
Thread 1 (after sleep): tls_var(4294960704) = 10
Thread 2 (after sleep): tls_var(4294825536) = 20
Thread 3 (after sleep): tls_var(4294690368) = 30
Thread 4 (after sleep): tls_var(4294555200) = 40
Thread 5 (after sleep): tls_var(4294420032) = 50
Signal Tests
signal.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
parent in loop, pid=1
Terminated
signal_SIGCHLD.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 17
Caught signal 10
signal_fork.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 2
after fork inside signal handler, pid=3
after fork inside signal handler, pid=1
parent in loop, pid=1
parent in loop, pid=3
parent in loop, pid=3
parent in loop, pid=1
parent in loop, pid=3
parent in loop, pid=1
parent in loop, pid=3
parent in loop, pid=1
signal_int_thread.cSuccessNone
main starts!
Hello from thread
thread sleep
thread sleep
child ready to kill
child done kill
child in loop, pid=2
Terminated
Terminated
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
signal_longjmp.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
after fork inside signal handler, pid=1
after child longjmp (should only be printed once by parent)
parent in loop, pid=1
after fork inside signal handler, pid=3
back from setjmp: 42! pid=3
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
signal_nodefer.cSuccessNone
main starts!
parent in loop, pid=1
*child ready to kill
*child sent SIGUSR1
*child ready to send SIGUSR1 again
Caught signal 10
*child done kill
Caught signal 10
start of signal handler
end of signal handler
start of signal handler
end of signal handler
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
signal_procmask.cSuccessNone
Parent: Blocking SIGINT...
Signal 2 is BLOCKED
Parent: SIGINT is blocked. Child will send SIGINT soon...
Child: Sending SIGINT to parent (PID: 1)
Parent: Unblocking SIGINT now.
SIGINT received! (Handled in Parent Process)
Signal 2 is UNBLOCKED
Parent: Waiting for SIGINT...
signal_recursive.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
signal_sa_mask.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
signal 10 done
Caught signal 12
signal 12 done
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1

@DyanB DyanB force-pushed the 415-executable-tests-fix branch from a07d9c6 to 1844c8a Compare October 17, 2025 18:42
@github-actions
Copy link
Contributor

End-to-End Test Report

Test Preview

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases89
Number of Successes62
Number of Failures27
Number of Compilation Failure Native1
Number of Runtime Failure Native10
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure2
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure2
Number of Timeout During Lind Wasm run3
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch9

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
chmod.cFailureFailure_native_running
Native execution: ERROR with CHMOD: No such file or directory
cloexec.cFailureOutput_mismatch
=== Expected Output ===
fstat on fd1 returns 0, should succeed
fstat on fd2 returns -1, should fail

=== WASM Output ===

close.cSuccessNone
File opened and closed 2000 times successfully.
creat_access.cFailureOutput_mismatch
=== Expected Output ===
Created file
File exists
File has the right permissions

=== WASM Output ===
Created file
COULD NOT ACCESS FILE: No such file or directory

doubleclose.cSuccessNone
dup2.cSuccessNone
Testing dup2
I should be printed before the file contents!
I will be printed in the file dup2test.txt
dup3.cSuccessNone
dup3 basic test passed.
dupwrite.cSuccessNone
write succeeded
fchmod.cFailureFailure_native_running
Native execution: ERROR with FCHMOD: Bad file descriptor
fcntl.cSuccessNone
Original FD: 3
F_DUPFD duplicated FD: 100
F_DUPFD_CLOEXEC duplicated FD: 101
Original FD flags: FD flags = 0x0
F_DUPFD duplicated FD flags: FD flags = 0x0
F_DUPFD_CLOEXEC duplicated FD flags: FD flags = 0x1
After F_SETFD on F_DUPFD duplicated FD: FD flags = 0x1
Test completed successfully.
fdatasync.cSuccessNone
filetest.cSuccessNone
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
filetest1000.cSuccessNone
flock.cFailureOutput_mismatch
=== Expected Output ===
Obtained exclusive lock on file
Released exclusive lock on file
Obtained shared lock on file
Obtained shared lock on file
Released shared lock on file
Released shared lock on file

=== WASM Output ===
Obtained exclusive lock on file
Released exclusive lock on file
Obtained shared lock on file
Obtained shared lock on file
Released shared lock on file
Released shared lock on file
[3i|make_syscall] Syscall number 73 not found!
[3i|make_syscall] Syscall number 73 not found!
[3i|make_syscall] Syscall number 73 not found!
[3i|make_syscall] Syscall number 73 not found!
[3i|make_syscall] Syscall number 73 not found!
[3i|make_syscall] Syscall number 73 not found!

fstat.cFailureFailure_native_running
Native execution: running fstat("testfiles/fstatfile.txt")
errno: 22
fstat: Bad file descriptor
fsync.cSuccessNone
ioctl.cSuccessNone
[For 0 = False and  = True]
[The answers should be F, T, F]

(0) Is the socket set for non-blocking I/O?: 0
[Setting socket for non_blocking I/O]
(1) Is the socket set for non-blocking I/O?: 2048
[Clearing socket for non-blocking I/O]
(2) Is the socket set for non-blocking I/O?: 0

mkdir_rmdir.cSuccessNone
Created directory successfully
Removed directory successfully
open.cSuccessNone
File opened successfully with fd = 3
popen.cFailureLind_wasm_compiling
wasm-ld: warning: function signature mismatch: main
>>> defined as (i32, i32, i32) -> i32 in //src/glibc/sysroot/lib/wasm32-wasi/crt1.o
>>> defined as (i32, i32) -> i32 in /tmp/popen-e5dc79.o
[wasm-validator error in function __clone_internal_fallback] unexpected false: non-final block elements returning a value must be dropped, on 
(block (result i32)
 (global.set $__stack_pointer
  (local.tee $3
   (i32.sub
    (global.get $__stack_pointer)
    (i32.const 16)
   )
  )
 )
 (local.set $4
  (i64.load offset=32
   (local.get $0)
  )
 )
 (local.set $5
  (i64.load
   (local.get $0)
  )
 )
 (local.set $6
  (i32.load offset=48
   (local.get $0)
  )
 )
 (local.set $7
  (i32.load offset=40
   (local.get $0)
  )
 )
 (local.set $8
  (i64.load offset=24
   (local.get $0)
  )
 )
 (local.set $9
  (i64.load offset=56
   (local.get $0)
  )
 )
 (i64.store32 offset=8
  (local.get $3)
  (i64.load offset=16
   (local.get $0)
  )
 )
 (i64.store32 offset=4
  (local.get $3)
  (local.get $9)
 )
 (i64.store32
  (local.get $3)
  (local.get $8)
 )
 (local.get $1)
 (i32.add
  (local.get $7)
  (local.get $6)
 )
 (i32.wrap_i64
  (i64.or
   (local.get $4)
   (local.get $5)
  )
 )
 (local.get $2)
 (local.get $3)
 (local.set $0
  (call $__GI___clone)
 )
 (global.set $__stack_pointer
  (i32.add
   (local.get $3)
   (i32.const 16)
  )
 )
 (local.get $0)
)
(on index 10:
0x5582054df018
), type: i32
[wasm-validator error in function __clone_internal_fallback] unexpected false: non-final block elements returning a value must be dropped, on 
(block (result i32)
 (global.set $__stack_pointer
  (local.tee $3
   (i32.sub
    (global.get $__stack_pointer)
    (i32.const 16)
   )
  )
 )
 (local.set $4
  (i64.load offset=32
   (local.get $0)
  )
 )
 (local.set $5
  (i64.load
   (local.get $0)
  )
 )
 (local.set $6
  (i32.load offset=48
   (local.get $0)
  )
 )
 (local.set $7
  (i32.load offset=40
   (local.get $0)
  )
 )
 (local.set $8
  (i64.load offset=24
   (local.get $0)
  )
 )
 (local.set $9
  (i64.load offset=56
   (local.get $0)
  )
 )
 (i64.store32 offset=8
  (local.get $3)
  (i64.load offset=16
   (local.get $0)
  )
 )
 (i64.store32 offset=4
  (local.get $3)
  (local.get $9)
 )
 (i64.store32
  (local.get $3)
  (local.get $8)
 )
 (local.get $1)
 (i32.add
  (local.get $7)
  (local.get $6)
 )
 (i32.wrap_i64
  (i64.or
   (local.get $4)
   (local.get $5)
  )
 )
 (local.get $2)
 (local.get $3)
 (local.set $0
  (call $__GI___clone)
 )
 (global.set $__stack_pointer
  (i32.add
   (local.get $3)
   (i32.const 16)
  )
 )
 (local.get $0)
)
(on index 11:
0x5582054df060
), type: i32
[wasm-validator error in function __clone_internal_fallback] unexpected false: non-final block elements returning a value must be dropped, on 
(block (result i32)
 (global.set $__stack_pointer
  (local.tee $3
   (i32.sub
    (global.get $__stack_pointer)
    (i32.const 16)
   )
  )
 )
 (local.set $4
  (i64.load offset=32
   (local.get $0)
  )
 )
 (local.set $5
  (i64.load
   (local.get $0)
  )
 )
 (local.set $6
  (i32.load offset=48
   (local.get $0)
  )
 )
 (local.set $7
  (i32.load offset=40
   (local.get $0)
  )
 )
 (local.set $8
  (i64.load offset=24
   (local.get $0)
  )
 )
 (local.set $9
  (i64.load offset=56
   (local.get $0)
  )
 )
 (i64.store32 offset=8
  (local.get $3)
  (i64.load offset=16
   (local.get $0)
  )
 )
 (i64.store32 offset=4
  (local.get $3)
  (local.get $9)
 )
 (i64.store32
  (local.get $3)
  (local.get $8)
 )
 (local.get $1)
 (i32.add
  (local.get $7)
  (local.get $6)
 )
 (i32.wrap_i64
  (i64.or
   (local.get $4)
   (local.get $5)
  )
 )
 (local.get $2)
 (local.get $3)
 (local.set $0
  (call $__GI___clone)
 )
 (global.set $__stack_pointer
  (i32.add
   (local.get $3)
   (i32.const 16)
  )
 )
 (local.get $0)
)
(on index 12:
0x5582054df0e0
), type: i32
[wasm-validator error in function __clone_internal_fallback] unexpected false: non-final block elements returning a value must be dropped, on 
(block (result i32)
 (global.set $__stack_pointer
  (local.tee $3
   (i32.sub
    (global.get $__stack_pointer)
    (i32.const 16)
   )
  )
 )
 (local.set $4
  (i64.load offset=32
   (local.get $0)
  )
 )
 (local.set $5
  (i64.load
   (local.get $0)
  )
 )
 (local.set $6
  (i32.load offset=48
   (local.get $0)
  )
 )
 (local.set $7
  (i32.load offset=40
   (local.get $0)
  )
 )
 (local.set $8
  (i64.load offset=24
   (local.get $0)
  )
 )
 (local.set $9
  (i64.load offset=56
   (local.get $0)
  )
 )
 (i64.store32 offset=8
  (local.get $3)
  (i64.load offset=16
   (local.get $0)
  )
 )
 (i64.store32 offset=4
  (local.get $3)
  (local.get $9)
 )
 (i64.store32
  (local.get $3)
  (local.get $8)
 )
 (local.get $1)
 (i32.add
  (local.get $7)
  (local.get $6)
 )
 (i32.wrap_i64
  (i64.or
   (local.get $4)
   (local.get $5)
  )
 )
 (local.get $2)
 (local.get $3)
 (local.set $0
  (call $__GI___clone)
 )
 (global.set $__stack_pointer
  (i32.add
   (local.get $3)
   (i32.const 16)
  )
 )
 (local.get $0)
)
(on index 13:
0x5582054df100
), type: i32
[wasm-validator error in function __clone_internal_fallback] unexpected false: non-final block elements returning a value must be dropped, on 
(block (result i32)
 (global.set $__stack_pointer
  (local.tee $3
   (i32.sub
    (global.get $__stack_pointer)
    (i32.const 16)
   )
  )
 )
 (local.set $4
  (i64.load offset=32
   (local.get $0)
  )
 )
 (local.set $5
  (i64.load
   (local.get $0)
  )
 )
 (local.set $6
  (i32.load offset=48
   (local.get $0)
  )
 )
 (local.set $7
  (i32.load offset=40
   (local.get $0)
  )
 )
 (local.set $8
  (i64.load offset=24
   (local.get $0)
  )
 )
 (local.set $9
  (i64.load offset=56
   (local.get $0)
  )
 )
 (i64.store32 offset=8
  (local.get $3)
  (i64.load offset=16
   (local.get $0)
  )
 )
 (i64.store32 offset=4
  (local.get $3)
  (local.get $9)
 )
 (i64.store32
  (local.get $3)
  (local.get $8)
 )
 (local.get $1)
 (i32.add
  (local.get $7)
  (local.get $6)
 )
 (i32.wrap_i64
  (i64.or
   (local.get $4)
   (local.get $5)
  )
 )
 (local.get $2)
 (local.get $3)
 (local.set $0
  (call $__GI___clone)
 )
 (global.set $__stack_pointer
  (i32.add
   (local.get $3)
   (i32.const 16)
  )
 )
 (local.get $0)
)
(on index 14:
0x5582054df118
), type: i32
Fatal: error validating input
pread_pwrite.cSuccessNone
[file is opened]
[succeeded write(1) process]
[reading(1) data] from pwrite.txt
[Lind is amazing!]
-----------------------------------
[succeeded write(2) process]
[reading(2) data] from pwrite.txt
[NYU is amazing!]
[succeeded in close]
printf.cSuccessNone
Hello, World!
readbytes.cSuccessNone
This is a test of the wonderful fork call in lind.�
readlink.cSuccessNone
=== Test Case 1: Valid symbolic link ===
Symbolic link points to: /src/RawPOSIX/tmp/testfiles/readlinkfile.txt

=== Test Case 2: Path is not a symbolic link ===
Expected failure: No such file or directory

=== Test Case 3: Symbolic link with buffer too small ===
Symbolic link truncated result: /src/

=== Test Case 4: Non-existent path ===
Expected failure: No such file or directory

readlinkat.cFailureOutput_mismatch
=== Expected Output ===
Test Case 1: Symbolic link points to: /src/RawPOSIX/tmp/testfiles/readlinkfile.txt
Test Case 3: Expected failure: No such file or directory
Test Case 4: Expected failure: Bad file descriptor

=== WASM Output ===
Test Case 1: Symbolic link points to: /src/RawPOSIX/tmp/testfiles/readlinkfile.txt
Test Case 2: Symbolic link points to: /src/RawPOSIX/tmp/testfiles/readlinkfile.txt
Test Case 3: Expected failure: No such file or directory
Test Case 4: Expected failure: Invalid argument

rename.cFailureFailure_native_running
Native execution: ERROR WITH STAT CALL ON OLD NAME: No such file or directory
stat.cFailureFailure_native_running
Native execution: running stat("testfiles/statfile.txt")
errno: 22
stat: No such file or directory
sync_file_range.cSuccessNone
sync_file_range test completed successfully.
truncate.cFailureFailure_native_running
Native execution: Test truncate(const char *, off_t)
Truncating testfiles/truncatefile.txt from 1 to 124
ERROR WHEN TRUNCATING FILE: No such file or directory
unlinkat.cSuccessNone
=== Test Case 1: Remove valid file ===
Test Case 1: Successfully removed testfiles/unlinkatfile.txt

=== Test Case 2: Remove non-existent file ===
Test Case 2: Expected failure: No such file or directory

=== Test Case 3: Remove file in a subdirectory ===
Test Case 3: Successfully removed file in subdirectory

=== Test Case 4: Remove a directory with AT_REMOVEDIR ===
Test Case 4: Successfully removed directory testfiles/unlinkatsubdir

=== Test Case 5: Remove a directory without AT_REMOVEDIR ===
Test Case 5: Expected failure: Is a directory

write.cSuccessNone
Hello world from Coulson's WASM
writeloop.cSuccessNone
write succeeded
writepartial.cSuccessNone
write
Memory Tests
brk.cSuccessNone
PASS
malloc.cSuccessNone
malloc_large.cFailureOutput_mismatch
=== Expected Output ===
0x7fb1b6a8e010: 42

=== WASM Output ===
0xefffe010: 42

memcpy.cSuccessNone
Hello, World!
mmap-nagative1.cFailureFailure_native_running
Native execution: 
mmap-nagative2.cFailureFailure_native_running
Native execution: 
mmap.cFailureFailure_native_compiling
Native execution: /tmp/wasmtest_artifacts_v6x68jl5/memory_tests/deterministic/mmap.c: In function ‘main’:
/tmp/wasmtest_artifacts_v6x68jl5/memory_tests/deterministic/mmap.c:9:26: warning: implicit declaration of function ‘__builtin_wasm_memory_size’ [-Wimplicit-function-declaration]
    9 |     int linear_mem_end = __builtin_wasm_memory_size(0);
      |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/ld: /tmp/ccQjOs58.o: in function `main':
mmap.c:(.text+0x2a): undefined reference to `__builtin_wasm_memory_size'
/usr/bin/ld: mmap.c:(.text+0x79): undefined reference to `__builtin_wasm_memory_size'
collect2: error: ld returned 1 exit status
mmap_file.cSuccessNone
Data written to memory-mapped file: Hello, mmap!
Data read back from memory-mapped file: Hello, mmap!
mmap_shared.cSuccessNone
parent value: 1234, 4321
parent value after fork: 1234, 4321
child value after fork: 1234, 4321
parent value after modification: 2333, 3332
child value after modification: 2333, 4321
mmaptest.cFailureFailure_native_running
Native execution: mmaptest.o: /tmp/wasmtest_artifacts_v6x68jl5/memory_tests/deterministic/mmaptest.c:20: main: Assertion `fd != -1' failed.
mprotect.cSuccessNone
Mprotect write test text
sbrk.cSuccessNone
Content in allocated memory: Hello, sbrk memory!
shmtest.cSuccessNone
vtable.cFailureOutput_mismatch
=== Expected Output ===
Shape 0 area: 12.000000
Shape 1 area: 19.634954

=== WASM Output ===
Shape 0 area: 12
Shape 1 area: 19.635

Networking Tests
gethostname.cSuccessNone
Hostname: buildkitsandbox
makepipe.cSuccessNone
pipepong.cSuccessNone
Parent sending 1
Child received 1
Child sends 2
Parent received 2
Parent sending 3
Child received 3
Child sends 4
Parent received 4
Parent sending 5
Child received 5
Child sends 6
Parent received 6
Parent sending 7
Child received 7
Child sends 8
Parent received 8
Parent sending 9
Child received 9
Child sends 10
Parent received 10
Parent sending 11
Child received 11
Child sends 12
Parent received 12
Parent sending 13
Child received 13
Child sends 14
Parent received 14
Parent sending 15
Child received 15
Child sends 16
Parent received 16
Parent sending 17
Child received 17
Child sends 18
Parent received 18
Parent sending 19
Child received 19
Child sends 20
Parent received 20
Parent sending 21
Child received 21
Child sends 22
Parent received 22
Parent sending 23
Child received 23
Child sends 24
Parent received 24
Parent sending 25
Child received 25
Child sends 26
Parent received 26
Parent sending 27
Child received 27
Child sends 28
Parent received 28
Parent sending 29
Child received 29
Child sends 30
Parent received 30
Parent sending 31
Child received 31
Child sends 32
Parent received 32
Parent sending 33
Child received 33
Child sends 34
Parent received 34
Parent sending 35
Child received 35
Child sends 36
Parent received 36
Parent sending 37
Child received 37
Child sends 38
Parent received 38
Parent sending 39
Child received 39
Child sends 40
Parent received 40
Parent sending 41
Child received 41
Child sends 42
Parent received 42
Parent sending 43
Child received 43
Child sends 44
Parent received 44
Parent sending 45
Child received 45
Child sends 46
Parent received 46
Parent sending 47
Child received 47
Child sends 48
Parent received 48
Parent sending 49
Child received 49
Child sends 50
Parent received 50
Parent sending 51
Child received 51
Child sends 52
Parent received 52
Parent sending 53
Child received 53
Child sends 54
Parent received 54
Parent sending 55
Child received 55
Child sends 56
Parent received 56
Parent sending 57
Child received 57
Child sends 58
Parent received 58
Parent sending 59
Child received 59
Child sends 60
Parent received 60
Parent sending 61
Child received 61
Child sends 62
Parent received 62
Parent sending 63
Child received 63
Child sends 64
Parent received 64
Parent sending 65
Child received 65
Child sends 66
Parent received 66
Parent sending 67
Child received 67
Child sends 68
Parent received 68
Parent sending 69
Child received 69
Child sends 70
Parent received 70
Parent sending 71
Child received 71
Child sends 72
Parent received 72
Parent sending 73
Child received 73
Child sends 74
Parent received 74
Parent sending 75
Child received 75
Child sends 76
Parent received 76
Parent sending 77
Child received 77
Child sends 78
Parent received 78
Parent sending 79
Child received 79
Child sends 80
Parent received 80
Parent sending 81
Child received 81
Child sends 82
Parent received 82
Parent sending 83
Child received 83
Child sends 84
Parent received 84
Parent sending 85
Child received 85
Child sends 86
Parent received 86
Parent sending 87
Child received 87
Child sends 88
Parent received 88
Parent sending 89
Child received 89
Child sends 90
Parent received 90
Parent sending 91
Child received 91
Child sends 92
Parent received 92
Parent sending 93
Child received 93
Child sends 94
Parent received 94
Parent sending 95
Child received 95
Child sends 96
Parent received 96
Parent sending 97
Child received 97
Child sends 98
Parent received 98
Parent sending 99
Child received 99
Child sends 100
Parent received 100
Pipe Pong complete.
Final value: 100
poll.cSuccessNone
stdout is ready for writing.
recvfrom-sendto.cSuccessNone
Client sent: Hello recvfrom!
simple_epoll.cSuccessNone
waiting for epoll event...
got data: hello epoll!

socket.cSuccessNone
Socket opened succesfully.
socket_cloexec.cSuccessNone
SOCK_CLOEXEC is set.
socketpair.cSuccessNone
-->In Xanadu, did Kublai Khan . . .
-->A stately pleasure dome decree . . .
tcp_connect_single.cSuccessNone
uds-getsockname.cFailureLind_wasm_Segmentation_Fault
Error: failed to run main module `/tmp/wasmtest_artifacts_v6x68jl5/networking_tests/deterministic/uds-getsockname.cwasm`

Caused by:
0: failed to invoke command default
1: error while executing at wasm backtrace:
0: 0x319 - uds-getsockname.wasm!signature_mismatch:main
1: 0x7eb - uds-getsockname.wasm!main
2: 0x9cc - uds-getsockname.wasm!__main_void
3: 0xc47 - uds-getsockname.wasm!_start
4: 0xeb58 - uds-getsockname.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

uds-nb-select.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
Process Tests
chain_thread.cSuccessNone
Outer thread running...
Inner thread running...
Inner thread done.
Outer thread done.
Main thread done.
exit.cSuccessNone
Exiting...

forkdup.cSuccessNone
I'm the parent
back to stdout
all done
forkexecuid.cFailureOutput_mismatch
=== Expected Output ===
printing getgid:
0
printing getuid:
0
printing getegid:
0
printing geteuid:
0
printing getgid:
0
printing getuid:
0
printing getegid:
0
printing geteuid:
0

=== WASM Output ===
printing getgid:printing getgid:

forkexecv-arg.cSuccessNone
Received argument: hello-arg
forkexecv.cSuccessNone
wark
forknodup.cFailureOutput_mismatch
=== Expected Output ===
I'm the PARENT
I'm the child
all done
all done

=== WASM Output ===
I'm the child
I'm the PARENT
all done
all done

function-ptr.cSuccessNone
Hello, World!
getppid.cSuccessNone
getppid() succeeded
getuid.cFailureOutput_mismatch
=== Expected Output ===
printing getgid:
0
printing getuid:
0
printing getegid:
0
printing geteuid:
0

=== WASM Output ===
printing getgid:

hello-arg.cSuccessNone
Received argument: hello-arg
hello.cSuccessNone
wark
longjmp.cSuccessNone
In main: Calling first_function...
In first_function: Calling second_function...
In second_function: Performing a long jump...
Back in main: long jump returned with value = 42
mutex.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
noforkfiles.cSuccessNone
sem_forks.cSuccessNone
setsid.cFailureLind_wasm_compiling
wasm-ld: warning: function signature mismatch: main
>>> defined as (i32, i32, i32) -> i32 in //src/glibc/sysroot/lib/wasm32-wasi/crt1.o
>>> defined as (i32, i32) -> i32 in /tmp/setsid-594f3f.o

wasm-ld: error: /tmp/setsid-594f3f.o: undefined symbol: setsid
clang: error: linker command failed with exit code 1 (use -v to see invocation)

sigalrm.cSuccessNone
SIGALRM signals blocked
Alarm Handled. Exiting
sigchld.cSuccessNone
Signal Child Test!
signal-fork.cSuccessNone
Successfully changed the signal handler for Signal 12
Killing Child
Signal Handler Test!
Exiting Child
signal-simple.cSuccessNone
Successfully changed the signal handler for Signal 12
Signal Handler Test!
sigpipe.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
sigprocmask.cFailureLind_wasm_Segmentation_Fault
Error: failed to run main module `/tmp/wasmtest_artifacts_v6x68jl5/process_tests/deterministic/sigprocmask.cwasm`

Caused by:
0: failed to invoke command default
1: error while executing at wasm backtrace:
0: 0x319 - sigprocmask.wasm!signature_mismatch:main
1: 0x7eb - sigprocmask.wasm!main
2: 0x9cc - sigprocmask.wasm!__main_void
3: 0xc47 - sigprocmask.wasm!_start
4: 0xeb58 - sigprocmask.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
Hello from the thread!
Thread has finished execution
thread.cSuccessNone
Hello from thread
wait.cSuccessNone
Parent detected child finished.
Child exited with status 0
waitpid_wnohang.cSuccessNone
Signal Tests
alarm.cSuccessNone
Setting an alarm to trigger in 1 seconds...
Alarm triggered! Signal received: 14
Alarm triggered! Signal received: 14
Alarm triggered! Signal received: 14
setitimer.cSuccessNone
Timer started! SIGALRM will fire every 3 seconds.
Timer expired! Signal received: 14
Timer expired! Signal received: 14
Timer expired! Signal received: 14
signal_resethand.cFailureFailure_native_running
Native execution: child send SIGINT
Signal 2 received! Handler is running...
After this, the handler will reset to default behavior.
child send SIGINT again
Non Deterministic Tests

Summary

MetricCount
Total Test Cases47
Number of Successes38
Number of Failures9
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 run9
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
chdir_getcwd.cSuccessNone
getcwd() error: Success
getcwd() error: Success
clock_gettime_highlevel.cSuccessNone
Running 1,000,000 iterations...

Start time: 6441 clock ticks
End time: 9080 clock ticks
Elapsed CPU time: 0.002639 seconds

clock_gettime_simple.cSuccessNone
Current time: 1760725012 seconds and 199631220 nanoseconds
dup.cSuccessNone
duped fd: 3
attempting to write to dup() fd

write to dup() fd succeeded
write to old fd succeeded

fchdir.cSuccessNone
getcwd() error: Success
fstatfs.cSuccessNone
Filesystem type: 794c7630
getcwd.cSuccessNone
getcwd() error: Success
read.cSuccessNone
open(): No such file or directory
sc-writev.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
statfs.cSuccessNone
Error in statfs
: No such file or directory
Memory Tests
mmap_complicated.cSuccessNone
Parent: Waiting for child to write.
Child: Writing to shared memory.
Parent: Reading from shared memory: 'Hello from the child process!'
Child: Reading from shared memory: 'Hello from the parent process!'
Child: Exiting.
Parent: Reading modified shared memory: 'Hello from the parent process!'
Parent: Exiting.
segfault.cSuccessNone
pipe() ret: [3, 4]
read() ret: 3
hi
shm.cSuccessNone
Shared memory segment created with id: 1
Parent attached to shared memory at 0xffffe000
Parent wrote: 'Hello from parent'
Child attached to shared memory at 0xffffe000
Child reads: 'Hello from parent'
Child detached from shared memory
Parent reads: 'Hello from child'
Parent detached from shared memory
Shared memory segment removed
Networking Tests
dnstest.cSuccessNone
is sockfd valid? yes
37 is the length sent
53 is the length recieved
the dns lookup yields the ip address: 35.172.89.115
getifaddrs.cSuccessNone
getifaddrs: Bad address
pipe.cSuccessNone
pipe() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipe2.cSuccessNone
pipe2() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipeinput.cSuccessNone
about to write to pipe in parent
I'm parent with pid: 2
Hey Nick!

pipeinput2.cSuccessNone
about to write to pipe in parent
I'm parent with pid: 2
Hey Nick!

pipeonestring.cSuccessNone
I'm child with pid: 0
about to write to pipe in parent
I'm parent with pid: 2
Hey Nick!
������
pipewrite.cSuccessNone
Made pipe with write end 3 and read end 4
wrote 16
write 16
wrote 16
wrote three messages to the pipe
msg 0, length 16: hello, world #1
msg 1, length 16: hello, world #2
msg 2, length 16: hello, world #3
serverclient.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
shutdown.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
shutdown_fork.cSuccessNone
2�5d-05
simple-select.cSuccessNone
[child] waiting for data...
[parent] writing message
[child] got data: hello select!

[child] waiting for data...
[child] pipe closed

socketepoll.cSuccessNone
SERVER: New socket bound and listen
SERVER: NEW CONNECTION
CLIENT: Hello message sent
Hello from client
Message Received
CLIENT: sending followup
Did you get my message?
CLIENT: Closed connection
Closed connection on descriptor 6
read error: Connection reset by peer
socketselect.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
uds-serverclient.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
uds-socketselect.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
Process Tests
fork.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
fork2malloc.cSuccessNone
first malloc
Address of mptr1 0x30010
Contents of mptr1 deadbeef
pre-fork
in child
Address of mptr1 0x30fc0
done
fork_simple.cSuccessNone
Parent pid = 1
Child pid = 2
forkandopen.cSuccessNone
Parent: Testing open in parent: pid 2!
Child: Testing open in child: pid 0!
Parent: Pid 2 opened fd 3
Child: Pid 0 opened fd 3
forkfiles.cSuccessNone
This is a test of the wonderful fork call in lind.
read 51 chars
forkmalloc.cSuccessNone
in child
pointer address is 0x30010
done
getpid.cSuccessNone
printing pidSuccess
template.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
tls_test.cSuccessNone
Thread 1: initial tls_var(4294960704) = 233
Thread 2: initial tls_var(4294825536) = 233
Thread 3: initial tls_var(4294690368) = 233
Thread 4: initial tls_var(4294555200) = 233
Thread 5: initial tls_var(4294420032) = 233
Thread 1 (after sleep): tls_var(4294960704) = 10
Thread 2 (after sleep): tls_var(4294825536) = 20
Thread 3 (after sleep): tls_var(4294690368) = 30
Thread 4 (after sleep): tls_var(4294555200) = 40
Thread 5 (after sleep): tls_var(4294420032) = 50
Signal Tests
signal.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
parent in loop, pid=1
Terminated
signal_SIGCHLD.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 17
Caught signal 10
signal_fork.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 2
after fork inside signal handler, pid=3
after fork inside signal handler, pid=1
parent in loop, pid=1
parent in loop, pid=3
parent in loop, pid=3
parent in loop, pid=1
parent in loop, pid=3
parent in loop, pid=1
parent in loop, pid=3
parent in loop, pid=1
signal_int_thread.cSuccessNone
main starts!
Hello from thread
thread sleep
thread sleep
child ready to kill
child done kill
child in loop, pid=2
Terminated
Terminated
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
signal_longjmp.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
after fork inside signal handler, pid=1
after child longjmp (should only be printed once by parent)
parent in loop, pid=1
after fork inside signal handler, pid=3
back from setjmp: 42! pid=3
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
signal_nodefer.cSuccessNone
main starts!
parent in loop, pid=1
*child ready to kill
*child sent SIGUSR1
*child ready to send SIGUSR1 again
Caught signal 10
*child done kill
Caught signal 10
start of signal handler
end of signal handler
start of signal handler
end of signal handler
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
signal_procmask.cSuccessNone
Parent: Blocking SIGINT...
Signal 2 is BLOCKED
Parent: SIGINT is blocked. Child will send SIGINT soon...
Child: Sending SIGINT to parent (PID: 1)
Parent: Unblocking SIGINT now.
SIGINT received! (Handled in Parent Process)
Signal 2 is UNBLOCKED
Parent: Waiting for SIGINT...
signal_recursive.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
signal_sa_mask.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
signal 10 done
Caught signal 12
signal 12 done
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1

@github-actions
Copy link
Contributor

End-to-End Test Report

Test Preview

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases62
Number of Successes61
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

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
close.cSuccessNone
File opened and closed 2000 times successfully.
doubleclose.cSuccessNone
dup2.cSuccessNone
Testing dup2
I should be printed before the file contents!
I will be printed in the file dup2test.txt
dup3.cSuccessNone
dup3 basic test passed.
dupwrite.cSuccessNone
write succeeded
fcntl.cSuccessNone
Original FD: 3
F_DUPFD duplicated FD: 100
F_DUPFD_CLOEXEC duplicated FD: 101
Original FD flags: FD flags = 0x0
F_DUPFD duplicated FD flags: FD flags = 0x0
F_DUPFD_CLOEXEC duplicated FD flags: FD flags = 0x1
After F_SETFD on F_DUPFD duplicated FD: FD flags = 0x1
Test completed successfully.
fdatasync.cSuccessNone
filetest.cSuccessNone
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
filetest1000.cSuccessNone
fsync.cSuccessNone
ioctl.cSuccessNone
[For 0 = False and  = True]
[The answers should be F, T, F]

(0) Is the socket set for non-blocking I/O?: 0
[Setting socket for non_blocking I/O]
(1) Is the socket set for non-blocking I/O?: 2048
[Clearing socket for non-blocking I/O]
(2) Is the socket set for non-blocking I/O?: 0

mkdir_rmdir.cSuccessNone
Created directory successfully
Removed directory successfully
open.cSuccessNone
File opened successfully with fd = 3
pread_pwrite.cSuccessNone
[file is opened]
[succeeded write(1) process]
[reading(1) data] from pwrite.txt
[Lind is amazing!]
-----------------------------------
[succeeded write(2) process]
[reading(2) data] from pwrite.txt
[NYU is amazing!]
[succeeded in close]
printf.cSuccessNone
Hello, World!
readbytes.cSuccessNone
This is a test of the wonderful fork call in lind.�
readlink.cSuccessNone
=== Test Case 1: Valid symbolic link ===
Symbolic link points to: /src/RawPOSIX/tmp/testfiles/readlinkfile.txt

=== Test Case 2: Path is not a symbolic link ===
Expected failure: No such file or directory

=== Test Case 3: Symbolic link with buffer too small ===
Symbolic link truncated result: /src/

=== Test Case 4: Non-existent path ===
Expected failure: No such file or directory

sync_file_range.cSuccessNone
sync_file_range test completed successfully.
unlinkat.cSuccessNone
=== Test Case 1: Remove valid file ===
Test Case 1: Successfully removed testfiles/unlinkatfile.txt

=== Test Case 2: Remove non-existent file ===
Test Case 2: Expected failure: No such file or directory

=== Test Case 3: Remove file in a subdirectory ===
Test Case 3: Successfully removed file in subdirectory

=== Test Case 4: Remove a directory with AT_REMOVEDIR ===
Test Case 4: Successfully removed directory testfiles/unlinkatsubdir

=== Test Case 5: Remove a directory without AT_REMOVEDIR ===
Test Case 5: Expected failure: Is a directory

write.cSuccessNone
Hello world from Coulson's WASM
writeloop.cSuccessNone
write succeeded
writepartial.cSuccessNone
write
Memory Tests
brk.cSuccessNone
PASS
malloc.cSuccessNone
memcpy.cSuccessNone
Hello, World!
mmap_file.cSuccessNone
Data written to memory-mapped file: Hello, mmap!
Data read back from memory-mapped file: Hello, mmap!
mmap_shared.cSuccessNone
parent value: 1234, 4321
parent value after fork: 1234, 4321
child value after fork: 1234, 4321
parent value after modification: 2333, 3332
child value after modification: 2333, 4321
mprotect.cSuccessNone
Mprotect write test text
sbrk.cSuccessNone
Content in allocated memory: Hello, sbrk memory!
shmtest.cSuccessNone
Networking Tests
gethostname.cSuccessNone
Hostname: buildkitsandbox
makepipe.cSuccessNone
pipepong.cSuccessNone
Parent sending 1
Child received 1
Child sends 2
Parent received 2
Parent sending 3
Child received 3
Child sends 4
Parent received 4
Parent sending 5
Child received 5
Child sends 6
Parent received 6
Parent sending 7
Child received 7
Child sends 8
Parent received 8
Parent sending 9
Child received 9
Child sends 10
Parent received 10
Parent sending 11
Child received 11
Child sends 12
Parent received 12
Parent sending 13
Child received 13
Child sends 14
Parent received 14
Parent sending 15
Child received 15
Child sends 16
Parent received 16
Parent sending 17
Child received 17
Child sends 18
Parent received 18
Parent sending 19
Child received 19
Child sends 20
Parent received 20
Parent sending 21
Child received 21
Child sends 22
Parent received 22
Parent sending 23
Child received 23
Child sends 24
Parent received 24
Parent sending 25
Child received 25
Child sends 26
Parent received 26
Parent sending 27
Child received 27
Child sends 28
Parent received 28
Parent sending 29
Child received 29
Child sends 30
Parent received 30
Parent sending 31
Child received 31
Child sends 32
Parent received 32
Parent sending 33
Child received 33
Child sends 34
Parent received 34
Parent sending 35
Child received 35
Child sends 36
Parent received 36
Parent sending 37
Child received 37
Child sends 38
Parent received 38
Parent sending 39
Child received 39
Child sends 40
Parent received 40
Parent sending 41
Child received 41
Child sends 42
Parent received 42
Parent sending 43
Child received 43
Child sends 44
Parent received 44
Parent sending 45
Child received 45
Child sends 46
Parent received 46
Parent sending 47
Child received 47
Child sends 48
Parent received 48
Parent sending 49
Child received 49
Child sends 50
Parent received 50
Parent sending 51
Child received 51
Child sends 52
Parent received 52
Parent sending 53
Child received 53
Child sends 54
Parent received 54
Parent sending 55
Child received 55
Child sends 56
Parent received 56
Parent sending 57
Child received 57
Child sends 58
Parent received 58
Parent sending 59
Child received 59
Child sends 60
Parent received 60
Parent sending 61
Child received 61
Child sends 62
Parent received 62
Parent sending 63
Child received 63
Child sends 64
Parent received 64
Parent sending 65
Child received 65
Child sends 66
Parent received 66
Parent sending 67
Child received 67
Child sends 68
Parent received 68
Parent sending 69
Child received 69
Child sends 70
Parent received 70
Parent sending 71
Child received 71
Child sends 72
Parent received 72
Parent sending 73
Child received 73
Child sends 74
Parent received 74
Parent sending 75
Child received 75
Child sends 76
Parent received 76
Parent sending 77
Child received 77
Child sends 78
Parent received 78
Parent sending 79
Child received 79
Child sends 80
Parent received 80
Parent sending 81
Child received 81
Child sends 82
Parent received 82
Parent sending 83
Child received 83
Child sends 84
Parent received 84
Parent sending 85
Child received 85
Child sends 86
Parent received 86
Parent sending 87
Child received 87
Child sends 88
Parent received 88
Parent sending 89
Child received 89
Child sends 90
Parent received 90
Parent sending 91
Child received 91
Child sends 92
Parent received 92
Parent sending 93
Child received 93
Child sends 94
Parent received 94
Parent sending 95
Child received 95
Child sends 96
Parent received 96
Parent sending 97
Child received 97
Child sends 98
Parent received 98
Parent sending 99
Child received 99
Child sends 100
Parent received 100
Pipe Pong complete.
Final value: 100
poll.cSuccessNone
stdout is ready for writing.
recvfrom-sendto.cSuccessNone
Client sent: Hello recvfrom!
simple_epoll.cSuccessNone
waiting for epoll event...
got data: hello epoll!

socket.cSuccessNone
Socket opened succesfully.
socket_cloexec.cSuccessNone
SOCK_CLOEXEC is set.
socketpair.cSuccessNone
-->In Xanadu, did Kublai Khan . . .
-->A stately pleasure dome decree . . .
tcp_connect_single.cSuccessNone
Process Tests
chain_thread.cSuccessNone
Outer thread running...
Inner thread running...
Inner thread done.
Outer thread done.
Main thread done.
exit.cSuccessNone
Exiting...

forkdup.cSuccessNone
I'm the parent
back to stdout
all done
forkexecv-arg.cSuccessNone
Received argument: hello-arg
forkexecv.cSuccessNone
wark
function-ptr.cSuccessNone
Hello, World!
getppid.cSuccessNone
getppid() succeeded
hello-arg.cSuccessNone
Received argument: hello-arg
hello.cSuccessNone
wark
longjmp.cSuccessNone
In main: Calling first_function...
In first_function: Calling second_function...
In second_function: Performing a long jump...
Back in main: long jump returned with value = 42
noforkfiles.cSuccessNone
sem_forks.cFailureLind_wasm_Timeout
Timed Out (timeout: 10s)
sigalrm.cSuccessNone
SIGALRM signals blocked
Alarm Handled. Exiting
sigchld.cSuccessNone
Signal Child Test!
signal-fork.cSuccessNone
Successfully changed the signal handler for Signal 12
Killing Child
Signal Handler Test!
Exiting Child
signal-simple.cSuccessNone
Successfully changed the signal handler for Signal 12
Signal Handler Test!
thread-test.cSuccessNone
Hello from the thread!
Thread has finished execution
thread.cSuccessNone
Hello from thread
wait.cSuccessNone
Parent detected child finished.
Child exited with status 0
waitpid_wnohang.cSuccessNone
Signal Tests
alarm.cSuccessNone
Setting an alarm to trigger in 1 seconds...
Alarm triggered! Signal received: 14
Alarm triggered! Signal received: 14
Alarm triggered! Signal received: 14
setitimer.cSuccessNone
Timer started! SIGALRM will fire every 3 seconds.
Timer expired! Signal received: 14
Timer expired! Signal received: 14
Timer expired! Signal received: 14
Non Deterministic Tests

Summary

MetricCount
Total Test Cases38
Number of Successes38
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

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
chdir_getcwd.cSuccessNone
getcwd() error: Success
getcwd() error: Success
clock_gettime_highlevel.cSuccessNone
Running 1,000,000 iterations...

Start time: 6562 clock ticks
End time: 8841 clock ticks
Elapsed CPU time: 0.002279 seconds

clock_gettime_simple.cSuccessNone
Current time: 1760727169 seconds and 723129296 nanoseconds
dup.cSuccessNone
duped fd: 3
attempting to write to dup() fd

write to dup() fd succeeded
write to old fd succeeded

fchdir.cSuccessNone
getcwd() error: Success
fstatfs.cSuccessNone
Filesystem type: 794c7630
getcwd.cSuccessNone
getcwd() error: Success
read.cSuccessNone
open(): No such file or directory
statfs.cSuccessNone
Error in statfs
: No such file or directory
Memory Tests
mmap_complicated.cSuccessNone
Child: Writing to shared memory.
Parent: Waiting for child to write.
Parent: Reading from shared memory: 'Hello from the child process!'
Child: Reading from shared memory: 'Hello from the parent process!'
Child: Exiting.
Parent: Reading modified shared memory: 'Hello from the parent process!'
Parent: Exiting.
segfault.cSuccessNone
pipe() ret: [3, 4]
read() ret: 3
hi
shm.cSuccessNone
Shared memory segment created with id: 1
Parent attached to shared memory at 0xffffe000
Parent wrote: 'Hello from parent'
Child attached to shared memory at 0xffffe000
Child reads: 'Hello from parent'
Child detached from shared memory
Parent reads: 'Hello from child'
Parent detached from shared memory
Shared memory segment removed
Networking Tests
dnstest.cSuccessNone
is sockfd valid? yes
37 is the length sent
53 is the length recieved
the dns lookup yields the ip address: 35.172.89.115
getifaddrs.cSuccessNone
getifaddrs: Bad address
pipe.cSuccessNone
pipe() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipe2.cSuccessNone
pipe2() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipeinput.cSuccessNone
about to write to pipe in parent
I'm parent with pid: 2
Hey Nick!

pipeinput2.cSuccessNone
about to write to pipe in parent
I'm parent with pid: 2
Hey Nick!

pipeonestring.cSuccessNone
about to write to pipe in parent
I'm child with pid: 0
I'm parent with pid: 2
Hey Nick!
������
pipewrite.cSuccessNone
Made pipe with write end 3 and read end 4
wrote 16
write 16
wrote 16
wrote three messages to the pipe
msg 0, length 16: hello, world #1
msg 1, length 16: hello, world #2
msg 2, length 16: hello, world #3
shutdown_fork.cSuccessNone
2�4d-05
simple-select.cSuccessNone
[child] waiting for data...
[parent] writing message
[child] got data: hello select!

[child] waiting for data...
[child] pipe closed

socketepoll.cSuccessNone
SERVER: New socket bound and listen
SERVER: NEW CONNECTION
CLIENT: Hello message sent
Hello from client
Message Received
CLIENT: sending followup
Did you get my message?
CLIENT: Closed connection
Closed connection on descriptor 6
read error: Connection reset by peer
Process Tests
fork2malloc.cSuccessNone
first malloc
Address of mptr1 0x30010
Contents of mptr1 deadbeef
pre-fork
in child
Address of mptr1 0x30fc0
done
fork_simple.cSuccessNone
Parent pid = 1
Child pid = 2
forkandopen.cSuccessNone
Parent: Testing open in parent: pid 2!
Child: Testing open in child: pid 0!
Parent: Pid 2 opened fd 3
Child: Pid 0 opened fd 3
forkfiles.cSuccessNone
This is a test of the wonderful fork call in lind.
read 51 chars
forkmalloc.cSuccessNone
in child
pointer address is 0x30010
done
getpid.cSuccessNone
printing pidSuccess
tls_test.cSuccessNone
Thread 1: initial tls_var(4294960704) = 233
Thread 2: initial tls_var(4294825536) = 233
Thread 3: initial tls_var(4294690368) = 233
Thread 4: initial tls_var(4294555200) = 233
Thread 5: initial tls_var(4294420032) = 233
Thread 1 (after sleep): tls_var(4294960704) = 10
Thread 2 (after sleep): tls_var(4294825536) = 20
Thread 3 (after sleep): tls_var(4294690368) = 30
Thread 4 (after sleep): tls_var(4294555200) = 40
Thread 5 (after sleep): tls_var(4294420032) = 50
Signal Tests
signal.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
parent in loop, pid=1
Terminated
signal_SIGCHLD.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 17
Caught signal 10
signal_fork.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 2
after fork inside signal handler, pid=3
after fork inside signal handler, pid=1
parent in loop, pid=3
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=3
parent in loop, pid=3
parent in loop, pid=1
parent in loop, pid=3
parent in loop, pid=1
signal_int_thread.cSuccessNone
main starts!
Hello from thread
thread sleep
thread sleep
child ready to kill
child done kill
Terminated
child in loop, pid=2
Terminated
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
signal_longjmp.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
after fork inside signal handler, pid=3
after fork inside signal handler, pid=1
after child longjmp (should only be printed once by parent)
parent in loop, pid=1
back from setjmp: 42! pid=3
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
signal_nodefer.cSuccessNone
main starts!
parent in loop, pid=1
*child ready to kill
*child sent SIGUSR1
Caught signal 10
*child ready to send SIGUSR1 again
start of signal handler
*child done kill
Caught signal 10
start of signal handler
end of signal handler
end of signal handler
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
signal_procmask.cSuccessNone
Parent: Blocking SIGINT...
Signal 2 is BLOCKED
Parent: SIGINT is blocked. Child will send SIGINT soon...
Child: Sending SIGINT to parent (PID: 1)
Parent: Unblocking SIGINT now.
SIGINT received! (Handled in Parent Process)
Signal 2 is UNBLOCKED
Parent: Waiting for SIGINT...
signal_sa_mask.cSuccessNone
main starts!
child ready to kill
parent in loop, pid=1
child done kill
Caught signal 10
signal 10 done
Caught signal 12
signal 12 done
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1

@github-actions
Copy link
Contributor

End-to-End Test Report

Test Preview

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases62
Number of Successes62
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

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
close.cSuccessNone
File opened and closed 2000 times successfully.
doubleclose.cSuccessNone
dup2.cSuccessNone
Testing dup2
I should be printed before the file contents!
I will be printed in the file dup2test.txt
dup3.cSuccessNone
dup3 basic test passed.
dupwrite.cSuccessNone
write succeeded
fcntl.cSuccessNone
Original FD: 3
F_DUPFD duplicated FD: 100
F_DUPFD_CLOEXEC duplicated FD: 101
Original FD flags: FD flags = 0x0
F_DUPFD duplicated FD flags: FD flags = 0x0
F_DUPFD_CLOEXEC duplicated FD flags: FD flags = 0x1
After F_SETFD on F_DUPFD duplicated FD: FD flags = 0x1
Test completed successfully.
fdatasync.cSuccessNone
filetest.cSuccessNone
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
filetest1000.cSuccessNone
fsync.cSuccessNone
ioctl.cSuccessNone
[For 0 = False and  = True]
[The answers should be F, T, F]

(0) Is the socket set for non-blocking I/O?: 0
[Setting socket for non_blocking I/O]
(1) Is the socket set for non-blocking I/O?: 2048
[Clearing socket for non-blocking I/O]
(2) Is the socket set for non-blocking I/O?: 0

mkdir_rmdir.cSuccessNone
Created directory successfully
Removed directory successfully
open.cSuccessNone
File opened successfully with fd = 3
pread_pwrite.cSuccessNone
[file is opened]
[succeeded write(1) process]
[reading(1) data] from pwrite.txt
[Lind is amazing!]
-----------------------------------
[succeeded write(2) process]
[reading(2) data] from pwrite.txt
[NYU is amazing!]
[succeeded in close]
printf.cSuccessNone
Hello, World!
readbytes.cSuccessNone
This is a test of the wonderful fork call in lind.�
readlink.cSuccessNone
=== Test Case 1: Valid symbolic link ===
Symbolic link points to: /src/RawPOSIX/tmp/testfiles/readlinkfile.txt

=== Test Case 2: Path is not a symbolic link ===
Expected failure: No such file or directory

=== Test Case 3: Symbolic link with buffer too small ===
Symbolic link truncated result: /src/

=== Test Case 4: Non-existent path ===
Expected failure: No such file or directory

sync_file_range.cSuccessNone
sync_file_range test completed successfully.
unlinkat.cSuccessNone
=== Test Case 1: Remove valid file ===
Test Case 1: Successfully removed testfiles/unlinkatfile.txt

=== Test Case 2: Remove non-existent file ===
Test Case 2: Expected failure: No such file or directory

=== Test Case 3: Remove file in a subdirectory ===
Test Case 3: Successfully removed file in subdirectory

=== Test Case 4: Remove a directory with AT_REMOVEDIR ===
Test Case 4: Successfully removed directory testfiles/unlinkatsubdir

=== Test Case 5: Remove a directory without AT_REMOVEDIR ===
Test Case 5: Expected failure: Is a directory

write.cSuccessNone
Hello world from Coulson's WASM
writeloop.cSuccessNone
write succeeded
writepartial.cSuccessNone
write
Memory Tests
brk.cSuccessNone
PASS
malloc.cSuccessNone
memcpy.cSuccessNone
Hello, World!
mmap_file.cSuccessNone
Data written to memory-mapped file: Hello, mmap!
Data read back from memory-mapped file: Hello, mmap!
mmap_shared.cSuccessNone
parent value: 1234, 4321
parent value after fork: 1234, 4321
child value after fork: 1234, 4321
parent value after modification: 2333, 3332
child value after modification: 2333, 4321
mprotect.cSuccessNone
Mprotect write test text
sbrk.cSuccessNone
Content in allocated memory: Hello, sbrk memory!
shmtest.cSuccessNone
Networking Tests
gethostname.cSuccessNone
Hostname: buildkitsandbox
makepipe.cSuccessNone
pipepong.cSuccessNone
Parent sending 1
Child received 1
Child sends 2
Parent received 2
Parent sending 3
Child received 3
Child sends 4
Parent received 4
Parent sending 5
Child received 5
Child sends 6
Parent received 6
Parent sending 7
Child received 7
Child sends 8
Parent received 8
Parent sending 9
Child received 9
Child sends 10
Parent received 10
Parent sending 11
Child received 11
Child sends 12
Parent received 12
Parent sending 13
Child received 13
Child sends 14
Parent received 14
Parent sending 15
Child received 15
Child sends 16
Parent received 16
Parent sending 17
Child received 17
Child sends 18
Parent received 18
Parent sending 19
Child received 19
Child sends 20
Parent received 20
Parent sending 21
Child received 21
Child sends 22
Parent received 22
Parent sending 23
Child received 23
Child sends 24
Parent received 24
Parent sending 25
Child received 25
Child sends 26
Parent received 26
Parent sending 27
Child received 27
Child sends 28
Parent received 28
Parent sending 29
Child received 29
Child sends 30
Parent received 30
Parent sending 31
Child received 31
Child sends 32
Parent received 32
Parent sending 33
Child received 33
Child sends 34
Parent received 34
Parent sending 35
Child received 35
Child sends 36
Parent received 36
Parent sending 37
Child received 37
Child sends 38
Parent received 38
Parent sending 39
Child received 39
Child sends 40
Parent received 40
Parent sending 41
Child received 41
Child sends 42
Parent received 42
Parent sending 43
Child received 43
Child sends 44
Parent received 44
Parent sending 45
Child received 45
Child sends 46
Parent received 46
Parent sending 47
Child received 47
Child sends 48
Parent received 48
Parent sending 49
Child received 49
Child sends 50
Parent received 50
Parent sending 51
Child received 51
Child sends 52
Parent received 52
Parent sending 53
Child received 53
Child sends 54
Parent received 54
Parent sending 55
Child received 55
Child sends 56
Parent received 56
Parent sending 57
Child received 57
Child sends 58
Parent received 58
Parent sending 59
Child received 59
Child sends 60
Parent received 60
Parent sending 61
Child received 61
Child sends 62
Parent received 62
Parent sending 63
Child received 63
Child sends 64
Parent received 64
Parent sending 65
Child received 65
Child sends 66
Parent received 66
Parent sending 67
Child received 67
Child sends 68
Parent received 68
Parent sending 69
Child received 69
Child sends 70
Parent received 70
Parent sending 71
Child received 71
Child sends 72
Parent received 72
Parent sending 73
Child received 73
Child sends 74
Parent received 74
Parent sending 75
Child received 75
Child sends 76
Parent received 76
Parent sending 77
Child received 77
Child sends 78
Parent received 78
Parent sending 79
Child received 79
Child sends 80
Parent received 80
Parent sending 81
Child received 81
Child sends 82
Parent received 82
Parent sending 83
Child received 83
Child sends 84
Parent received 84
Parent sending 85
Child received 85
Child sends 86
Parent received 86
Parent sending 87
Child received 87
Child sends 88
Parent received 88
Parent sending 89
Child received 89
Child sends 90
Parent received 90
Parent sending 91
Child received 91
Child sends 92
Parent received 92
Parent sending 93
Child received 93
Child sends 94
Parent received 94
Parent sending 95
Child received 95
Child sends 96
Parent received 96
Parent sending 97
Child received 97
Child sends 98
Parent received 98
Parent sending 99
Child received 99
Child sends 100
Parent received 100
Pipe Pong complete.
Final value: 100
poll.cSuccessNone
stdout is ready for writing.
recvfrom-sendto.cSuccessNone
Client sent: Hello recvfrom!
simple_epoll.cSuccessNone
waiting for epoll event...
got data: hello epoll!

socket.cSuccessNone
Socket opened succesfully.
socket_cloexec.cSuccessNone
SOCK_CLOEXEC is set.
socketpair.cSuccessNone
-->In Xanadu, did Kublai Khan . . .
-->A stately pleasure dome decree . . .
tcp_connect_single.cSuccessNone
Process Tests
chain_thread.cSuccessNone
Outer thread running...
Inner thread running...
Inner thread done.
Outer thread done.
Main thread done.
exit.cSuccessNone
Exiting...

forkdup.cSuccessNone
I'm the parent
back to stdout
all done
forkexecv-arg.cSuccessNone
Received argument: hello-arg
forkexecv.cSuccessNone
wark
function-ptr.cSuccessNone
Hello, World!
getppid.cSuccessNone
getppid() succeeded
hello-arg.cSuccessNone
Received argument: hello-arg
hello.cSuccessNone
wark
longjmp.cSuccessNone
In main: Calling first_function...
In first_function: Calling second_function...
In second_function: Performing a long jump...
Back in main: long jump returned with value = 42
noforkfiles.cSuccessNone
sem_forks.cSuccessNone
sigalrm.cSuccessNone
SIGALRM signals blocked
Alarm Handled. Exiting
sigchld.cSuccessNone
Signal Child Test!
signal-fork.cSuccessNone
Successfully changed the signal handler for Signal 12
Killing Child
Signal Handler Test!
Exiting Child
signal-simple.cSuccessNone
Successfully changed the signal handler for Signal 12
Signal Handler Test!
thread-test.cSuccessNone
Hello from the thread!
Thread has finished execution
thread.cSuccessNone
Hello from thread
wait.cSuccessNone
Parent detected child finished.
Child exited with status 0
waitpid_wnohang.cSuccessNone
Signal Tests
alarm.cSuccessNone
Setting an alarm to trigger in 1 seconds...
Alarm triggered! Signal received: 14
Alarm triggered! Signal received: 14
Alarm triggered! Signal received: 14
setitimer.cSuccessNone
Timer started! SIGALRM will fire every 3 seconds.
Timer expired! Signal received: 14
Timer expired! Signal received: 14
Timer expired! Signal received: 14
Non Deterministic Tests

Summary

MetricCount
Total Test Cases38
Number of Successes38
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

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
chdir_getcwd.cSuccessNone
getcwd() error: Success
getcwd() error: Success
clock_gettime_highlevel.cSuccessNone
Running 1,000,000 iterations...

Start time: 6443 clock ticks
End time: 8683 clock ticks
Elapsed CPU time: 0.00224 seconds

clock_gettime_simple.cSuccessNone
Current time: 1760732514 seconds and 758617451 nanoseconds
dup.cSuccessNone
duped fd: 3
attempting to write to dup() fd

write to dup() fd succeeded
write to old fd succeeded

fchdir.cSuccessNone
getcwd() error: Success
fstatfs.cSuccessNone
Filesystem type: 794c7630
getcwd.cSuccessNone
getcwd() error: Success
read.cSuccessNone
open(): No such file or directory
statfs.cSuccessNone
Error in statfs
: No such file or directory
Memory Tests
mmap_complicated.cSuccessNone
Child: Writing to shared memory.
Parent: Waiting for child to write.
Parent: Reading from shared memory: 'Hello from the child process!'
Child: Reading from shared memory: 'Hello from the parent process!'
Child: Exiting.
Parent: Reading modified shared memory: 'Hello from the parent process!'
Parent: Exiting.
segfault.cSuccessNone
pipe() ret: [3, 4]
read() ret: 3
hi
shm.cSuccessNone
Shared memory segment created with id: 1
Parent attached to shared memory at 0xffffe000
Parent wrote: 'Hello from parent'
Child attached to shared memory at 0xffffe000
Child reads: 'Hello from parent'
Child detached from shared memory
Parent reads: 'Hello from child'
Parent detached from shared memory
Shared memory segment removed
Networking Tests
dnstest.cSuccessNone
is sockfd valid? yes
37 is the length sent
53 is the length recieved
the dns lookup yields the ip address: 35.172.89.115
getifaddrs.cSuccessNone
getifaddrs: Bad address
pipe.cSuccessNone
pipe() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipe2.cSuccessNone
pipe2() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipeinput.cSuccessNone
about to write to pipe in parent
I'm parent with pid: 2
Hey Nick!

pipeinput2.cSuccessNone
about to write to pipe in parent
I'm parent with pid: 2
Hey Nick!

pipeonestring.cSuccessNone
about to write to pipe in parent
I'm child with pid: 0
I'm parent with pid: 2
Hey Nick!
������
pipewrite.cSuccessNone
Made pipe with write end 3 and read end 4
wrote 16
write 16
wrote 16
wrote three messages to the pipe
msg 0, length 16: hello, world #1
msg 1, length 16: hello, world #2
msg 2, length 16: hello, world #3
shutdown_fork.cSuccessNone
2�7d-05
simple-select.cSuccessNone
[child] waiting for data...
[parent] writing message
[child] got data: hello select!

[child] waiting for data...
[child] pipe closed

socketepoll.cSuccessNone
SERVER: New socket bound and listen
SERVER: NEW CONNECTION
CLIENT: Hello message sent
Hello from client
Message Received
CLIENT: sending followup
Did you get my message?
CLIENT: Closed connection
Closed connection on descriptor 6
read error: Connection reset by peer
Process Tests
fork2malloc.cSuccessNone
first malloc
Address of mptr1 0x30010
Contents of mptr1 deadbeef
pre-fork
in child
Address of mptr1 0x30fc0
done
fork_simple.cSuccessNone
Parent pid = 1
Child pid = 2
forkandopen.cSuccessNone
Parent: Testing open in parent: pid 2!
Child: Testing open in child: pid 0!
Child: Pid 0 opened fd 3
Parent: Pid 2 opened fd 3
forkfiles.cSuccessNone
This is a test of the wonderful fork call in lind.
read 51 chars
forkmalloc.cSuccessNone
in child
pointer address is 0x30010
done
getpid.cSuccessNone
printing pidSuccess
tls_test.cSuccessNone
Thread 1: initial tls_var(4294960704) = 233
Thread 2: initial tls_var(4294825536) = 233
Thread 3: initial tls_var(4294690368) = 233
Thread 4: initial tls_var(4294555200) = 233
Thread 5: initial tls_var(4294420032) = 233
Thread 1 (after sleep): tls_var(4294960704) = 10
Thread 2 (after sleep): tls_var(4294825536) = 20
Thread 3 (after sleep): tls_var(4294690368) = 30
Thread 4 (after sleep): tls_var(4294555200) = 40
Thread 5 (after sleep): tls_var(4294420032) = 50
Signal Tests
signal.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
parent in loop, pid=1
Terminated
signal_SIGCHLD.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 17
Caught signal 10
signal_fork.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 2
after fork inside signal handler, pid=1
parent in loop, pid=1
after fork inside signal handler, pid=3
parent in loop, pid=3
parent in loop, pid=1
parent in loop, pid=3
parent in loop, pid=1
parent in loop, pid=3
parent in loop, pid=3
parent in loop, pid=1
signal_int_thread.cSuccessNone
main starts!
Hello from thread
thread sleep
thread sleep
child ready to kill
child done kill
child in loop, pid=2
Terminated
Terminated
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
signal_longjmp.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
after fork inside signal handler, pid=3
after fork inside signal handler, pid=1
after child longjmp (should only be printed once by parent)
parent in loop, pid=1
back from setjmp: 42! pid=3
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
signal_nodefer.cSuccessNone
main starts!
parent in loop, pid=1
*child ready to kill
*child sent SIGUSR1
*child ready to send SIGUSR1 again
*child done kill
Caught signal 10
start of signal handler
end of signal handler
Caught signal 10
start of signal handler
end of signal handler
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
signal_procmask.cSuccessNone
Parent: Blocking SIGINT...
Signal 2 is BLOCKED
Parent: SIGINT is blocked. Child will send SIGINT soon...
Child: Sending SIGINT to parent (PID: 1)
Parent: Unblocking SIGINT now.
SIGINT received! (Handled in Parent Process)
Signal 2 is UNBLOCKED
Parent: Waiting for SIGINT...
signal_sa_mask.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
signal 10 done
Caught signal 12
signal 12 done
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1

m-hemmings
m-hemmings previously approved these changes Oct 17, 2025
Copy link
Member

@m-hemmings m-hemmings left a comment

Choose a reason for hiding this comment

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

All my concerns appear to have been addressed. The symlink in place is fine for now. Looks good

@github-actions
Copy link
Contributor

End-to-End Test Report

Test Preview

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases63
Number of Successes63
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

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
close.cSuccessNone
File opened and closed 2000 times successfully.
doubleclose.cSuccessNone
dup2.cSuccessNone
Testing dup2
I should be printed before the file contents!
I will be printed in the file dup2test.txt
dup3.cSuccessNone
dup3 basic test passed.
dupwrite.cSuccessNone
write succeeded
fcntl.cSuccessNone
Original FD: 3
F_DUPFD duplicated FD: 100
F_DUPFD_CLOEXEC duplicated FD: 101
Original FD flags: FD flags = 0x0
F_DUPFD duplicated FD flags: FD flags = 0x0
F_DUPFD_CLOEXEC duplicated FD flags: FD flags = 0x1
After F_SETFD on F_DUPFD duplicated FD: FD flags = 0x1
Test completed successfully.
fdatasync.cSuccessNone
filetest.cSuccessNone
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
filetest1000.cSuccessNone
fsync.cSuccessNone
ioctl.cSuccessNone
[For 0 = False and  = True]
[The answers should be F, T, F]

(0) Is the socket set for non-blocking I/O?: 0
[Setting socket for non_blocking I/O]
(1) Is the socket set for non-blocking I/O?: 2048
[Clearing socket for non-blocking I/O]
(2) Is the socket set for non-blocking I/O?: 0

mkdir_rmdir.cSuccessNone
Created directory successfully
Removed directory successfully
open.cSuccessNone
File opened successfully with fd = 3
pread_pwrite.cSuccessNone
[file is opened]
[succeeded write(1) process]
[reading(1) data] from pwrite.txt
[Lind is amazing!]
-----------------------------------
[succeeded write(2) process]
[reading(2) data] from pwrite.txt
[NYU is amazing!]
[succeeded in close]
printf.cSuccessNone
Hello, World!
readbytes.cSuccessNone
This is a test of the wonderful fork call in lind.�
readlink.cSuccessNone
=== Test Case 1: Valid symbolic link ===
Symbolic link points to: /src/RawPOSIX/tmp/testfiles/readlinkfile.txt

=== Test Case 2: Path is not a symbolic link ===
Expected failure: No such file or directory

=== Test Case 3: Symbolic link with buffer too small ===
Symbolic link truncated result: /src/

=== Test Case 4: Non-existent path ===
Expected failure: No such file or directory

sync_file_range.cSuccessNone
sync_file_range test completed successfully.
unlinkat.cSuccessNone
=== Test Case 1: Remove valid file ===
Test Case 1: Successfully removed testfiles/unlinkatfile.txt

=== Test Case 2: Remove non-existent file ===
Test Case 2: Expected failure: No such file or directory

=== Test Case 3: Remove file in a subdirectory ===
Test Case 3: Successfully removed file in subdirectory

=== Test Case 4: Remove a directory with AT_REMOVEDIR ===
Test Case 4: Successfully removed directory testfiles/unlinkatsubdir

=== Test Case 5: Remove a directory without AT_REMOVEDIR ===
Test Case 5: Expected failure: Is a directory

write.cSuccessNone
Hello world from Coulson's WASM
writeloop.cSuccessNone
write succeeded
writepartial.cSuccessNone
write
Memory Tests
brk.cSuccessNone
PASS
malloc.cSuccessNone
memcpy.cSuccessNone
Hello, World!
mmap.cSuccessNone
mmap test: PASS
mmap_file.cSuccessNone
Data written to memory-mapped file: Hello, mmap!
Data read back from memory-mapped file: Hello, mmap!
mprotect.cSuccessNone
Mprotect write test text
sbrk.cSuccessNone
Content in allocated memory: Hello, sbrk memory!
shmtest.cSuccessNone
Networking Tests
gethostname.cSuccessNone
Hostname: buildkitsandbox
makepipe.cSuccessNone
pipepong.cSuccessNone
Parent sending 1
Child received 1
Child sends 2
Parent received 2
Parent sending 3
Child received 3
Child sends 4
Parent received 4
Parent sending 5
Child received 5
Child sends 6
Parent received 6
Parent sending 7
Child received 7
Child sends 8
Parent received 8
Parent sending 9
Child received 9
Child sends 10
Parent received 10
Parent sending 11
Child received 11
Child sends 12
Parent received 12
Parent sending 13
Child received 13
Child sends 14
Parent received 14
Parent sending 15
Child received 15
Child sends 16
Parent received 16
Parent sending 17
Child received 17
Child sends 18
Parent received 18
Parent sending 19
Child received 19
Child sends 20
Parent received 20
Parent sending 21
Child received 21
Child sends 22
Parent received 22
Parent sending 23
Child received 23
Child sends 24
Parent received 24
Parent sending 25
Child received 25
Child sends 26
Parent received 26
Parent sending 27
Child received 27
Child sends 28
Parent received 28
Parent sending 29
Child received 29
Child sends 30
Parent received 30
Parent sending 31
Child received 31
Child sends 32
Parent received 32
Parent sending 33
Child received 33
Child sends 34
Parent received 34
Parent sending 35
Child received 35
Child sends 36
Parent received 36
Parent sending 37
Child received 37
Child sends 38
Parent received 38
Parent sending 39
Child received 39
Child sends 40
Parent received 40
Parent sending 41
Child received 41
Child sends 42
Parent received 42
Parent sending 43
Child received 43
Child sends 44
Parent received 44
Parent sending 45
Child received 45
Child sends 46
Parent received 46
Parent sending 47
Child received 47
Child sends 48
Parent received 48
Parent sending 49
Child received 49
Child sends 50
Parent received 50
Parent sending 51
Child received 51
Child sends 52
Parent received 52
Parent sending 53
Child received 53
Child sends 54
Parent received 54
Parent sending 55
Child received 55
Child sends 56
Parent received 56
Parent sending 57
Child received 57
Child sends 58
Parent received 58
Parent sending 59
Child received 59
Child sends 60
Parent received 60
Parent sending 61
Child received 61
Child sends 62
Parent received 62
Parent sending 63
Child received 63
Child sends 64
Parent received 64
Parent sending 65
Child received 65
Child sends 66
Parent received 66
Parent sending 67
Child received 67
Child sends 68
Parent received 68
Parent sending 69
Child received 69
Child sends 70
Parent received 70
Parent sending 71
Child received 71
Child sends 72
Parent received 72
Parent sending 73
Child received 73
Child sends 74
Parent received 74
Parent sending 75
Child received 75
Child sends 76
Parent received 76
Parent sending 77
Child received 77
Child sends 78
Parent received 78
Parent sending 79
Child received 79
Child sends 80
Parent received 80
Parent sending 81
Child received 81
Child sends 82
Parent received 82
Parent sending 83
Child received 83
Child sends 84
Parent received 84
Parent sending 85
Child received 85
Child sends 86
Parent received 86
Parent sending 87
Child received 87
Child sends 88
Parent received 88
Parent sending 89
Child received 89
Child sends 90
Parent received 90
Parent sending 91
Child received 91
Child sends 92
Parent received 92
Parent sending 93
Child received 93
Child sends 94
Parent received 94
Parent sending 95
Child received 95
Child sends 96
Parent received 96
Parent sending 97
Child received 97
Child sends 98
Parent received 98
Parent sending 99
Child received 99
Child sends 100
Parent received 100
Pipe Pong complete.
Final value: 100
poll.cSuccessNone
stdout is ready for writing.
recvfrom-sendto.cSuccessNone
Client sent: Hello recvfrom!
simple_epoll.cSuccessNone
waiting for epoll event...
got data: hello epoll!

socket.cSuccessNone
Socket opened succesfully.
socket_cloexec.cSuccessNone
SOCK_CLOEXEC is set.
socketpair.cSuccessNone
-->In Xanadu, did Kublai Khan . . .
-->A stately pleasure dome decree . . .
tcp_connect_single.cSuccessNone
Process Tests
chain_thread.cSuccessNone
Outer thread running...
Inner thread running...
Inner thread done.
Outer thread done.
Main thread done.
exit.cSuccessNone
Exiting...

forkdup.cSuccessNone
I'm the parent
back to stdout
all done
forkexecv-arg.cSuccessNone
Received argument: hello-arg
forkexecv.cSuccessNone
wark
function-ptr.cSuccessNone
Hello, World!
getppid.cSuccessNone
getppid() succeeded
hello-arg.cSuccessNone
Received argument: hello-arg
hello.cSuccessNone
wark
longjmp.cSuccessNone
In main: Calling first_function...
In first_function: Calling second_function...
In second_function: Performing a long jump...
Back in main: long jump returned with value = 42
noforkfiles.cSuccessNone
sem_forks.cSuccessNone
thread-test.cSuccessNone
Hello from the thread!
Thread has finished execution
thread.cSuccessNone
Hello from thread
wait.cSuccessNone
Parent detected child finished.
Child exited with status 0
waitpid_wnohang.cSuccessNone
Signal Tests
alarm.cSuccessNone
Setting an alarm to trigger in 1 seconds...
Alarm triggered! Signal received: 14
Alarm triggered! Signal received: 14
Alarm triggered! Signal received: 14
setitimer.cSuccessNone
Timer started! SIGALRM will fire every 3 seconds.
Timer expired! Signal received: 14
Timer expired! Signal received: 14
Timer expired! Signal received: 14
sigalrm.cSuccessNone
SIGALRM signals blocked
Alarm Handled. Exiting
sigchld.cSuccessNone
Signal Child Test!
signal-fork.cSuccessNone
Successfully changed the signal handler for Signal 12
Killing Child
Signal Handler Test!
Exiting Child
signal-simple.cSuccessNone
Successfully changed the signal handler for Signal 12
Signal Handler Test!
sigprocmask.cSuccessNone
blocking SIGUSR2
Sending SIGUSR2
Sleeping 1 second
unblocking signal
Signal Handler!
Exiting program
Non Deterministic Tests

Summary

MetricCount
Total Test Cases42
Number of Successes42
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

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
chdir_getcwd.cSuccessNone
getcwd() error: Success
getcwd() error: Success
clock_gettime_highlevel.cSuccessNone
Running 1,000,000 iterations...

Start time: 6400 clock ticks
End time: 8660 clock ticks
Elapsed CPU time: 0.00226 seconds

clock_gettime_simple.cSuccessNone
Current time: 1761182647 seconds and 399603944 nanoseconds
dup.cSuccessNone
duped fd: 3
attempting to write to dup() fd

write to dup() fd succeeded
write to old fd succeeded

fchdir.cSuccessNone
getcwd() error: Success
fstatfs.cSuccessNone
Filesystem type: 794c7630
getcwd.cSuccessNone
getcwd() error: Success
read.cSuccessNone
open(): No such file or directory
statfs.cSuccessNone
Error in statfs
: No such file or directory
Memory Tests
malloc_large.cSuccessNone
0xefffe010: 42
mmap_complicated.cSuccessNone
Parent: Waiting for child to write.
Child: Writing to shared memory.
Parent: Reading from shared memory: 'Hello from the child process!'
Child: Reading from shared memory: 'Hello from the parent process!'
Child: Exiting.
Parent: Reading modified shared memory: 'Hello from the parent process!'
Parent: Exiting.
mmap_shared.cSuccessNone
parent value: 1234, 4321
parent value after fork: 1234, 4321
child value after fork: 1234, 4321
parent value after modification: 2333, 3332
child value after modification: 2333, 4321
segfault.cSuccessNone
pipe() ret: [3, 4]
read() ret: 3
hi
shm.cSuccessNone
Shared memory segment created with id: 1
Parent attached to shared memory at 0xffffe000
Parent wrote: 'Hello from parent'
Child attached to shared memory at 0xffffe000
Child reads: 'Hello from parent'
Child detached from shared memory
Parent reads: 'Hello from child'
Parent detached from shared memory
Shared memory segment removed
vtable.cSuccessNone
Shape 0 area: 12
Shape 1 area: 19.635
Networking Tests
dnstest.cSuccessNone
is sockfd valid? yes
37 is the length sent
53 is the length recieved
the dns lookup yields the ip address: 35.172.89.115
getifaddrs.cSuccessNone
getifaddrs: Bad address
pipe.cSuccessNone
pipe() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipe2.cSuccessNone
pipe2() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipeinput.cSuccessNone
about to write to pipe in parent
I'm parent with pid: 2
Hey Nick!

pipeinput2.cSuccessNone
about to write to pipe in parent
I'm parent with pid: 2
Hey Nick!

pipeonestring.cSuccessNone
about to write to pipe in parent
I'm child with pid: 0
I'm parent with pid: 2
Hey Nick!
������
pipewrite.cSuccessNone
Made pipe with write end 3 and read end 4
wrote 16
write 16
wrote 16
wrote three messages to the pipe
msg 0, length 16: hello, world #1
msg 1, length 16: hello, world #2
msg 2, length 16: hello, world #3
shutdown_fork.cSuccessNone
2�1d-05
simple-select.cSuccessNone
[child] waiting for data...
[parent] writing message
[child] got data: hello select!

[child] waiting for data...
[child] pipe closed

socketepoll.cSuccessNone
SERVER: New socket bound and listen
SERVER: NEW CONNECTION
CLIENT: Hello message sent
Hello from client
Message Received
CLIENT: sending followup
Did you get my message?
CLIENT: Closed connection
Closed connection on descriptor 6
read error: Connection reset by peer
Process Tests
fork2malloc.cSuccessNone
first malloc
Address of mptr1 0x30010
Contents of mptr1 deadbeef
pre-fork
in child
Address of mptr1 0x30fc0
done
fork_simple.cSuccessNone
Parent pid = 1
Child pid = 2
forkandopen.cSuccessNone
Parent: Testing open in parent: pid 2!
Child: Testing open in child: pid 0!
Child: Pid 0 opened fd 3
Parent: Pid 2 opened fd 3
forkfiles.cSuccessNone
This is a test of the wonderful fork call in lind.
read 51 chars
forkmalloc.cSuccessNone
in child
pointer address is 0x30010
done
forknodup.cSuccessNone
I'm the PARENT
I'm the child
all done
all done
getpid.cSuccessNone
printing pidSuccess
tls_test.cSuccessNone
Thread 1: initial tls_var(4294960704) = 233
Thread 2: initial tls_var(4294825536) = 233
Thread 3: initial tls_var(4294690368) = 233
Thread 4: initial tls_var(4294555200) = 233
Thread 5: initial tls_var(4294420032) = 233
Thread 1 (after sleep): tls_var(4294960704) = 10
Thread 2 (after sleep): tls_var(4294825536) = 20
Thread 3 (after sleep): tls_var(4294690368) = 30
Thread 4 (after sleep): tls_var(4294555200) = 40
Thread 5 (after sleep): tls_var(4294420032) = 50
Signal Tests
signal.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
parent in loop, pid=1
Terminated
signal_SIGCHLD.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 17
Caught signal 10
signal_fork.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 2
after fork inside signal handler, pid=3
after fork inside signal handler, pid=1
parent in loop, pid=1
parent in loop, pid=3
parent in loop, pid=3
parent in loop, pid=1
parent in loop, pid=3
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=3
signal_int_thread.cSuccessNone
main starts!
Hello from thread
thread sleep
thread sleep
child ready to kill
child done kill
Terminated
child in loop, pid=2
Terminated
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
signal_longjmp.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
after fork inside signal handler, pid=1
after fork inside signal handler, pid=3
after child longjmp (should only be printed once by parent)
parent in loop, pid=1
back from setjmp: 42! pid=3
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
signal_nodefer.cSuccessNone
main starts!
parent in loop, pid=1
*child ready to kill
*child sent SIGUSR1
*child ready to send SIGUSR1 again
Caught signal 10
*child done kill
Caught signal 10
start of signal handler
end of signal handler
start of signal handler
end of signal handler
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
signal_procmask.cSuccessNone
Parent: Blocking SIGINT...
Signal 2 is BLOCKED
Parent: SIGINT is blocked. Child will send SIGINT soon...
Child: Sending SIGINT to parent (PID: 1)
Parent: Unblocking SIGINT now.
SIGINT received! (Handled in Parent Process)
Signal 2 is UNBLOCKED
Parent: Waiting for SIGINT...
signal_sa_mask.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
signal 10 done
Caught signal 12
signal 12 done
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1

@github-actions
Copy link
Contributor

End-to-End Test Report

Test Preview

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases68
Number of Successes66
Number of Failures2
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 mismatch2

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
chmod.cSuccessNone
Mode changed successfully
close.cSuccessNone
File opened and closed 2000 times successfully.
creat_access.cFailureOutput_mismatch
=== Expected Output ===
Created file
File exists
File has the right permissions

=== WASM Output ===
Created file
COULD NOT ACCESS FILE: No such file or directory

doubleclose.cSuccessNone
dupwrite.cSuccessNone
write succeeded
fchmod.cSuccessNone
Mode changed successfully
fcntl.cSuccessNone
Original FD: 3
F_DUPFD duplicated FD: 100
F_DUPFD_CLOEXEC duplicated FD: 101
Original FD flags: FD flags = 0x0
F_DUPFD duplicated FD flags: FD flags = 0x0
F_DUPFD_CLOEXEC duplicated FD flags: FD flags = 0x1
After F_SETFD on F_DUPFD duplicated FD: FD flags = 0x1
Test completed successfully.
fdatasync.cSuccessNone
filetest.cSuccessNone
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
filetest1000.cSuccessNone
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
fstat.cSuccessNone
running fstat("testfiles/fstatfile.txt")
size: 19
fsync.cSuccessNone
ioctl.cSuccessNone
[For 0 = False and  = True]
[The answers should be F, T, F]

(0) Is the socket set for non-blocking I/O?: 0
[Setting socket for non_blocking I/O]
(1) Is the socket set for non-blocking I/O?: 2048
[Clearing socket for non-blocking I/O]
(2) Is the socket set for non-blocking I/O?: 0

mkdir_rmdir.cSuccessNone
Created directory successfully
Removed directory successfully
open.cSuccessNone
File opened successfully with fd = 3
pread_pwrite.cSuccessNone
[file is opened]
[succeeded write(1) process]
[reading(1) data] from pwrite.txt
[Lind is amazing!]
-----------------------------------
[succeeded write(2) process]
[reading(2) data] from pwrite.txt
[NYU is amazing!]
[succeeded in close]
printf.cSuccessNone
Hello, World!
readbytes.cSuccessNone
This is a test of the wonderful fork call in lind.�
readlink.cSuccessNone
=== Test Case 1: Valid symbolic link ===
Symbolic link points to: /src/RawPOSIX/tmp/testfiles/readlinkfile.txt

=== Test Case 2: Path is not a symbolic link ===
Expected failure: Invalid argument

=== Test Case 3: Symbolic link with buffer too small ===
Symbolic link truncated result: /src/

=== Test Case 4: Non-existent path ===
Expected failure: No such file or directory

readlinkat.cFailureOutput_mismatch
=== Expected Output ===
Test Case 1: Symbolic link points to: /src/RawPOSIX/tmp/testfiles/readlinkfile.txt
Test Case 3: Expected failure: No such file or directory
Test Case 4: Expected failure: Bad file descriptor

=== WASM Output ===
Test Case 1: Symbolic link points to: /src/RawPOSIX/tmp/testfiles/readlinkfile.txt
Test Case 2: Symbolic link points to: /src/RawPOSIX/tmp/testfiles/readlinkfile.txt
Test Case 3: Expected failure: No such file or directory
Test Case 4: Expected failure: Invalid argument

rename.cSuccessNone
SUCCESS WITH RENAMING
stat.cSuccessNone
running stat("testfiles/statfile.txt")
size: 18
sync_file_range.cSuccessNone
sync_file_range test completed successfully.
truncate.cSuccessNone
Test truncate(const char *, off_t)
Truncating testfiles/truncatefile.txt from 32 to 155
Success
Truncating testfiles/truncatefile.txt from 155 to 32
Success
Test ftruncate(int, off_t)
Truncating testfiles/truncatefile.txt from 32 to 155
Success
Truncating testfiles/truncatefile.txt from 155 to 32
Success
unlinkat.cSuccessNone
=== Test Case 1: Remove valid file ===
Test Case 1: Successfully removed testfiles/unlinkatfile.txt

=== Test Case 2: Remove non-existent file ===
Test Case 2: Expected failure: No such file or directory

=== Test Case 3: Remove file in a subdirectory ===
Test Case 3: Successfully removed file in subdirectory

=== Test Case 4: Remove a directory with AT_REMOVEDIR ===
Test Case 4: Successfully removed directory testfiles/unlinkatsubdir

=== Test Case 5: Remove a directory without AT_REMOVEDIR ===
Test Case 5: Expected failure: Is a directory

write.cSuccessNone
Hello world from Coulson's WASM
writeloop.cSuccessNone
write succeeded
writepartial.cSuccessNone
write
Memory Tests
brk.cSuccessNone
PASS
malloc.cSuccessNone
memcpy.cSuccessNone
Hello, World!
mmap.cSuccessNone
mmap test: PASS
mmap_file.cSuccessNone
Data written to memory-mapped file: Hello, mmap!
Data read back from memory-mapped file: Hello, mmap!
mprotect.cSuccessNone
Mprotect write test text
sbrk.cSuccessNone
Content in allocated memory: Hello, sbrk memory!
shmtest.cSuccessNone
Networking Tests
gethostname.cSuccessNone
Hostname: buildkitsandbox
makepipe.cSuccessNone
pipepong.cSuccessNone
Parent sending 1
Child received 1
Child sends 2
Parent received 2
Parent sending 3
Child received 3
Child sends 4
Parent received 4
Parent sending 5
Child received 5
Child sends 6
Parent received 6
Parent sending 7
Child received 7
Child sends 8
Parent received 8
Parent sending 9
Child received 9
Child sends 10
Parent received 10
Parent sending 11
Child received 11
Child sends 12
Parent received 12
Parent sending 13
Child received 13
Child sends 14
Parent received 14
Parent sending 15
Child received 15
Child sends 16
Parent received 16
Parent sending 17
Child received 17
Child sends 18
Parent received 18
Parent sending 19
Child received 19
Child sends 20
Parent received 20
Parent sending 21
Child received 21
Child sends 22
Parent received 22
Parent sending 23
Child received 23
Child sends 24
Parent received 24
Parent sending 25
Child received 25
Child sends 26
Parent received 26
Parent sending 27
Child received 27
Child sends 28
Parent received 28
Parent sending 29
Child received 29
Child sends 30
Parent received 30
Parent sending 31
Child received 31
Child sends 32
Parent received 32
Parent sending 33
Child received 33
Child sends 34
Parent received 34
Parent sending 35
Child received 35
Child sends 36
Parent received 36
Parent sending 37
Child received 37
Child sends 38
Parent received 38
Parent sending 39
Child received 39
Child sends 40
Parent received 40
Parent sending 41
Child received 41
Child sends 42
Parent received 42
Parent sending 43
Child received 43
Child sends 44
Parent received 44
Parent sending 45
Child received 45
Child sends 46
Parent received 46
Parent sending 47
Child received 47
Child sends 48
Parent received 48
Parent sending 49
Child received 49
Child sends 50
Parent received 50
Parent sending 51
Child received 51
Child sends 52
Parent received 52
Parent sending 53
Child received 53
Child sends 54
Parent received 54
Parent sending 55
Child received 55
Child sends 56
Parent received 56
Parent sending 57
Child received 57
Child sends 58
Parent received 58
Parent sending 59
Child received 59
Child sends 60
Parent received 60
Parent sending 61
Child received 61
Child sends 62
Parent received 62
Parent sending 63
Child received 63
Child sends 64
Parent received 64
Parent sending 65
Child received 65
Child sends 66
Parent received 66
Parent sending 67
Child received 67
Child sends 68
Parent received 68
Parent sending 69
Child received 69
Child sends 70
Parent received 70
Parent sending 71
Child received 71
Child sends 72
Parent received 72
Parent sending 73
Child received 73
Child sends 74
Parent received 74
Parent sending 75
Child received 75
Child sends 76
Parent received 76
Parent sending 77
Child received 77
Child sends 78
Parent received 78
Parent sending 79
Child received 79
Child sends 80
Parent received 80
Parent sending 81
Child received 81
Child sends 82
Parent received 82
Parent sending 83
Child received 83
Child sends 84
Parent received 84
Parent sending 85
Child received 85
Child sends 86
Parent received 86
Parent sending 87
Child received 87
Child sends 88
Parent received 88
Parent sending 89
Child received 89
Child sends 90
Parent received 90
Parent sending 91
Child received 91
Child sends 92
Parent received 92
Parent sending 93
Child received 93
Child sends 94
Parent received 94
Parent sending 95
Child received 95
Child sends 96
Parent received 96
Parent sending 97
Child received 97
Child sends 98
Parent received 98
Parent sending 99
Child received 99
Child sends 100
Parent received 100
Pipe Pong complete.
Final value: 100
poll.cSuccessNone
stdout is ready for writing.
recvfrom-sendto.cSuccessNone
Client sent: Hello recvfrom!
simple_epoll.cSuccessNone
waiting for epoll event...
got data: hello epoll!

socket.cSuccessNone
Socket opened succesfully.
socket_cloexec.cSuccessNone
SOCK_CLOEXEC is set.
socketpair.cSuccessNone
-->In Xanadu, did Kublai Khan . . .
-->A stately pleasure dome decree . . .
tcp_connect_single.cSuccessNone
Process Tests
chain_thread.cSuccessNone
Outer thread running...
Inner thread running...
Inner thread done.
Outer thread done.
Main thread done.
exit.cSuccessNone
Exiting...

forkexecv-arg.cSuccessNone
Received argument: hello-arg
forkexecv.cSuccessNone
wark
function-ptr.cSuccessNone
Hello, World!
getppid.cSuccessNone
getppid() succeeded
hello-arg.cSuccessNone
Received argument: hello-arg
hello.cSuccessNone
wark
longjmp.cSuccessNone
In main: Calling first_function...
In first_function: Calling second_function...
In second_function: Performing a long jump...
Back in main: long jump returned with value = 42
noforkfiles.cSuccessNone
sem_forks.cSuccessNone
thread-test.cSuccessNone
Hello from the thread!
Thread has finished execution
thread.cSuccessNone
Hello from thread
wait.cSuccessNone
Parent detected child finished.
Child exited with status 0
waitpid_wnohang.cSuccessNone
Signal Tests
alarm.cSuccessNone
Setting an alarm to trigger in 1 seconds...
Alarm triggered! Signal received: 14
Alarm triggered! Signal received: 14
Alarm triggered! Signal received: 14
setitimer.cSuccessNone
Timer started! SIGALRM will fire every 3 seconds.
Timer expired! Signal received: 14
Timer expired! Signal received: 14
Timer expired! Signal received: 14
sigalrm.cSuccessNone
SIGALRM signals blocked
Alarm Handled. Exiting
sigchld.cSuccessNone
Signal Child Test!
signal-fork.cSuccessNone
Successfully changed the signal handler for Signal 12
Killing Child
Signal Handler Test!
Exiting Child
signal-simple.cSuccessNone
Successfully changed the signal handler for Signal 12
Signal Handler Test!
sigprocmask.cSuccessNone
blocking SIGUSR2
Sending SIGUSR2
Sleeping 1 second
unblocking signal
Signal Handler!
Exiting program
Non Deterministic Tests

Summary

MetricCount
Total Test Cases41
Number of Successes41
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

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
chdir_getcwd.cSuccessNone
getcwd() error: Success
getcwd() error: Success
clock_gettime_highlevel.cSuccessNone
Running 1,000,000 iterations...

Start time: 6633 clock ticks
End time: 9163 clock ticks
Elapsed CPU time: 0.00253 seconds

clock_gettime_simple.cSuccessNone
Current time: 1761187076 seconds and 329362907 nanoseconds
dup.cSuccessNone
duped fd: 3
attempting to write to dup() fd

write to dup() fd succeeded
write to old fd succeeded

fchdir.cSuccessNone
getcwd() error: Success
fstatfs.cSuccessNone
Filesystem type: 794c7630
getcwd.cSuccessNone
getcwd() error: Success
read.cSuccessNone
open(): No such file or directory
statfs.cSuccessNone
Filesystem type: 794c7630
Memory Tests
malloc_large.cSuccessNone
0xefffe010: 42
mmap_complicated.cSuccessNone
Parent: Waiting for child to write.
Child: Writing to shared memory.
Parent: Reading from shared memory: 'Hello from the child process!'
Child: Reading from shared memory: 'Hello from the parent process!'
Child: Exiting.
Parent: Reading modified shared memory: 'Hello from the parent process!'
Parent: Exiting.
mmap_shared.cSuccessNone
parent value: 1234, 4321
parent value after fork: 1234, 4321
child value after fork: 1234, 4321
parent value after modification: 2333, 3332
child value after modification: 2333, 4321
segfault.cSuccessNone
pipe() ret: [3, 4]
read() ret: 3
hi
shm.cSuccessNone
Shared memory segment created with id: 1
Parent attached to shared memory at 0xffffe000
Parent wrote: 'Hello from parent'
Child attached to shared memory at 0xffffe000
Child reads: 'Hello from parent'
Child detached from shared memory
Parent reads: 'Hello from child'
Parent detached from shared memory
Shared memory segment removed
vtable.cSuccessNone
Shape 0 area: 12
Shape 1 area: 19.635
Networking Tests
dnstest.cSuccessNone
is sockfd valid? yes
37 is the length sent
53 is the length recieved
the dns lookup yields the ip address: 35.172.89.115
getifaddrs.cSuccessNone
getifaddrs: Bad address
pipe.cSuccessNone
pipe() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipe2.cSuccessNone
pipe2() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipeinput.cSuccessNone
about to write to pipe in parent
I'm parent with pid: 2
Hey Nick!

pipeinput2.cSuccessNone
about to write to pipe in parent
I'm parent with pid: 2
Hey Nick!

pipeonestring.cSuccessNone
about to write to pipe in parent
I'm child with pid: 0
I'm parent with pid: 2
Hey Nick!
������
pipewrite.cSuccessNone
Made pipe with write end 3 and read end 4
wrote 16
write 16
wrote 16
wrote three messages to the pipe
msg 0, length 16: hello, world #1
msg 1, length 16: hello, world #2
msg 2, length 16: hello, world #3
shutdown_fork.cSuccessNone
3d-05
simple-select.cSuccessNone
[child] waiting for data...
[parent] writing message
[child] got data: hello select!

[child] waiting for data...
[child] pipe closed

socketepoll.cSuccessNone
SERVER: New socket bound and listen
SERVER: NEW CONNECTION
CLIENT: Hello message sent
Hello from client
Message Received
CLIENT: sending followup
Did you get my message?
CLIENT: Closed connection
Closed connection on descriptor 6
read error: Connection reset by peer
Process Tests
fork2malloc.cSuccessNone
first malloc
Address of mptr1 0x30010
Contents of mptr1 deadbeef
pre-fork
in child
Address of mptr1 0x30fc0
done
fork_simple.cSuccessNone
Parent pid = 1
Child pid = 2
forkandopen.cSuccessNone
Parent: Testing open in parent: pid 2!
Child: Testing open in child: pid 0!
Parent: Pid 2 opened fd 3
Child: Pid 0 opened fd 3
forkfiles.cSuccessNone
This is a test of the wonderful fork call in lind.
read 51 chars
forkmalloc.cSuccessNone
in child
pointer address is 0x30010
done
forknodup.cSuccessNone
I'm the PARENT
I'm the child
all done
all done
getpid.cSuccessNone
printing pidSuccess
Signal Tests
signal.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
parent in loop, pid=1
Terminated
signal_SIGCHLD.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 17
Caught signal 10
signal_fork.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 2
after fork inside signal handler, pid=1
after fork inside signal handler, pid=3
parent in loop, pid=1
parent in loop, pid=3
parent in loop, pid=1
parent in loop, pid=3
parent in loop, pid=1
parent in loop, pid=3
parent in loop, pid=1
parent in loop, pid=3
signal_int_thread.cSuccessNone
main starts!
Hello from thread
thread sleep
thread sleep
child ready to kill
child done kill
Terminated
child in loop, pid=2
Terminated
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
signal_longjmp.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
after fork inside signal handler, pid=1
after fork inside signal handler, pid=3
after child longjmp (should only be printed once by parent)
parent in loop, pid=1
back from setjmp: 42! pid=3
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
signal_nodefer.cSuccessNone
main starts!
parent in loop, pid=1
*child ready to kill
*child sent SIGUSR1
*child ready to send SIGUSR1 again
Caught signal 10
*child done kill
Caught signal 10
start of signal handler
end of signal handler
start of signal handler
end of signal handler
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
signal_procmask.cSuccessNone
Parent: Blocking SIGINT...
Signal 2 is BLOCKED
Parent: SIGINT is blocked. Child will send SIGINT soon...
Child: Sending SIGINT to parent (PID: 1)
Parent: Unblocking SIGINT now.
SIGINT received! (Handled in Parent Process)
Signal 2 is UNBLOCKED
Parent: Waiting for SIGINT...
signal_sa_mask.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
signal 10 done
Caught signal 12
signal 12 done
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1

@github-actions
Copy link
Contributor

End-to-End Test Report

Test Preview

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases66
Number of Successes66
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

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
chmod.cSuccessNone
Mode changed successfully
close.cSuccessNone
File opened and closed 2000 times successfully.
doubleclose.cSuccessNone
dupwrite.cSuccessNone
write succeeded
fchmod.cSuccessNone
Mode changed successfully
fcntl.cSuccessNone
Original FD: 3
F_DUPFD duplicated FD: 100
F_DUPFD_CLOEXEC duplicated FD: 101
Original FD flags: FD flags = 0x0
F_DUPFD duplicated FD flags: FD flags = 0x0
F_DUPFD_CLOEXEC duplicated FD flags: FD flags = 0x1
After F_SETFD on F_DUPFD duplicated FD: FD flags = 0x1
Test completed successfully.
fdatasync.cSuccessNone
filetest.cSuccessNone
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
filetest1000.cSuccessNone
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
fstat.cSuccessNone
running fstat("testfiles/fstatfile.txt")
size: 19
fsync.cSuccessNone
ioctl.cSuccessNone
[For 0 = False and  = True]
[The answers should be F, T, F]

(0) Is the socket set for non-blocking I/O?: 0
[Setting socket for non_blocking I/O]
(1) Is the socket set for non-blocking I/O?: 2048
[Clearing socket for non-blocking I/O]
(2) Is the socket set for non-blocking I/O?: 0

mkdir_rmdir.cSuccessNone
Created directory successfully
Removed directory successfully
open.cSuccessNone
File opened successfully with fd = 3
pread_pwrite.cSuccessNone
[file is opened]
[succeeded write(1) process]
[reading(1) data] from pwrite.txt
[Lind is amazing!]
-----------------------------------
[succeeded write(2) process]
[reading(2) data] from pwrite.txt
[NYU is amazing!]
[succeeded in close]
printf.cSuccessNone
Hello, World!
readbytes.cSuccessNone
This is a test of the wonderful fork call in lind.�
readlink.cSuccessNone
=== Test Case 1: Valid symbolic link ===
Symbolic link points to: /src/RawPOSIX/tmp/testfiles/readlinkfile.txt

=== Test Case 2: Path is not a symbolic link ===
Expected failure: Invalid argument

=== Test Case 3: Symbolic link with buffer too small ===
Symbolic link truncated result: /src/

=== Test Case 4: Non-existent path ===
Expected failure: No such file or directory

rename.cSuccessNone
SUCCESS WITH RENAMING
stat.cSuccessNone
running stat("testfiles/statfile.txt")
size: 18
sync_file_range.cSuccessNone
sync_file_range test completed successfully.
truncate.cSuccessNone
Test truncate(const char *, off_t)
Truncating testfiles/truncatefile.txt from 32 to 155
Success
Truncating testfiles/truncatefile.txt from 155 to 32
Success
Test ftruncate(int, off_t)
Truncating testfiles/truncatefile.txt from 32 to 155
Success
Truncating testfiles/truncatefile.txt from 155 to 32
Success
unlinkat.cSuccessNone
=== Test Case 1: Remove valid file ===
Test Case 1: Successfully removed testfiles/unlinkatfile.txt

=== Test Case 2: Remove non-existent file ===
Test Case 2: Expected failure: No such file or directory

=== Test Case 3: Remove file in a subdirectory ===
Test Case 3: Successfully removed file in subdirectory

=== Test Case 4: Remove a directory with AT_REMOVEDIR ===
Test Case 4: Successfully removed directory testfiles/unlinkatsubdir

=== Test Case 5: Remove a directory without AT_REMOVEDIR ===
Test Case 5: Expected failure: Is a directory

write.cSuccessNone
Hello world from Coulson's WASM
writeloop.cSuccessNone
write succeeded
writepartial.cSuccessNone
write
Memory Tests
brk.cSuccessNone
PASS
malloc.cSuccessNone
memcpy.cSuccessNone
Hello, World!
mmap.cSuccessNone
mmap test: PASS
mmap_file.cSuccessNone
Data written to memory-mapped file: Hello, mmap!
Data read back from memory-mapped file: Hello, mmap!
mprotect.cSuccessNone
Mprotect write test text
sbrk.cSuccessNone
Content in allocated memory: Hello, sbrk memory!
shmtest.cSuccessNone
Networking Tests
gethostname.cSuccessNone
Hostname: buildkitsandbox
makepipe.cSuccessNone
pipepong.cSuccessNone
Parent sending 1
Child received 1
Child sends 2
Parent received 2
Parent sending 3
Child received 3
Child sends 4
Parent received 4
Parent sending 5
Child received 5
Child sends 6
Parent received 6
Parent sending 7
Child received 7
Child sends 8
Parent received 8
Parent sending 9
Child received 9
Child sends 10
Parent received 10
Parent sending 11
Child received 11
Child sends 12
Parent received 12
Parent sending 13
Child received 13
Child sends 14
Parent received 14
Parent sending 15
Child received 15
Child sends 16
Parent received 16
Parent sending 17
Child received 17
Child sends 18
Parent received 18
Parent sending 19
Child received 19
Child sends 20
Parent received 20
Parent sending 21
Child received 21
Child sends 22
Parent received 22
Parent sending 23
Child received 23
Child sends 24
Parent received 24
Parent sending 25
Child received 25
Child sends 26
Parent received 26
Parent sending 27
Child received 27
Child sends 28
Parent received 28
Parent sending 29
Child received 29
Child sends 30
Parent received 30
Parent sending 31
Child received 31
Child sends 32
Parent received 32
Parent sending 33
Child received 33
Child sends 34
Parent received 34
Parent sending 35
Child received 35
Child sends 36
Parent received 36
Parent sending 37
Child received 37
Child sends 38
Parent received 38
Parent sending 39
Child received 39
Child sends 40
Parent received 40
Parent sending 41
Child received 41
Child sends 42
Parent received 42
Parent sending 43
Child received 43
Child sends 44
Parent received 44
Parent sending 45
Child received 45
Child sends 46
Parent received 46
Parent sending 47
Child received 47
Child sends 48
Parent received 48
Parent sending 49
Child received 49
Child sends 50
Parent received 50
Parent sending 51
Child received 51
Child sends 52
Parent received 52
Parent sending 53
Child received 53
Child sends 54
Parent received 54
Parent sending 55
Child received 55
Child sends 56
Parent received 56
Parent sending 57
Child received 57
Child sends 58
Parent received 58
Parent sending 59
Child received 59
Child sends 60
Parent received 60
Parent sending 61
Child received 61
Child sends 62
Parent received 62
Parent sending 63
Child received 63
Child sends 64
Parent received 64
Parent sending 65
Child received 65
Child sends 66
Parent received 66
Parent sending 67
Child received 67
Child sends 68
Parent received 68
Parent sending 69
Child received 69
Child sends 70
Parent received 70
Parent sending 71
Child received 71
Child sends 72
Parent received 72
Parent sending 73
Child received 73
Child sends 74
Parent received 74
Parent sending 75
Child received 75
Child sends 76
Parent received 76
Parent sending 77
Child received 77
Child sends 78
Parent received 78
Parent sending 79
Child received 79
Child sends 80
Parent received 80
Parent sending 81
Child received 81
Child sends 82
Parent received 82
Parent sending 83
Child received 83
Child sends 84
Parent received 84
Parent sending 85
Child received 85
Child sends 86
Parent received 86
Parent sending 87
Child received 87
Child sends 88
Parent received 88
Parent sending 89
Child received 89
Child sends 90
Parent received 90
Parent sending 91
Child received 91
Child sends 92
Parent received 92
Parent sending 93
Child received 93
Child sends 94
Parent received 94
Parent sending 95
Child received 95
Child sends 96
Parent received 96
Parent sending 97
Child received 97
Child sends 98
Parent received 98
Parent sending 99
Child received 99
Child sends 100
Parent received 100
Pipe Pong complete.
Final value: 100
poll.cSuccessNone
stdout is ready for writing.
recvfrom-sendto.cSuccessNone
Client sent: Hello recvfrom!
simple_epoll.cSuccessNone
waiting for epoll event...
got data: hello epoll!

socket.cSuccessNone
Socket opened succesfully.
socket_cloexec.cSuccessNone
SOCK_CLOEXEC is set.
socketpair.cSuccessNone
-->In Xanadu, did Kublai Khan . . .
-->A stately pleasure dome decree . . .
tcp_connect_single.cSuccessNone
Process Tests
chain_thread.cSuccessNone
Outer thread running...
Inner thread running...
Inner thread done.
Outer thread done.
Main thread done.
exit.cSuccessNone
Exiting...

forkexecv-arg.cSuccessNone
Received argument: hello-arg
forkexecv.cSuccessNone
wark
function-ptr.cSuccessNone
Hello, World!
getppid.cSuccessNone
getppid() succeeded
hello-arg.cSuccessNone
Received argument: hello-arg
hello.cSuccessNone
wark
longjmp.cSuccessNone
In main: Calling first_function...
In first_function: Calling second_function...
In second_function: Performing a long jump...
Back in main: long jump returned with value = 42
noforkfiles.cSuccessNone
sem_forks.cSuccessNone
thread-test.cSuccessNone
Hello from the thread!
Thread has finished execution
thread.cSuccessNone
Hello from thread
wait.cSuccessNone
Parent detected child finished.
Child exited with status 0
waitpid_wnohang.cSuccessNone
Signal Tests
alarm.cSuccessNone
Setting an alarm to trigger in 1 seconds...
Alarm triggered! Signal received: 14
Alarm triggered! Signal received: 14
Alarm triggered! Signal received: 14
setitimer.cSuccessNone
Timer started! SIGALRM will fire every 3 seconds.
Timer expired! Signal received: 14
Timer expired! Signal received: 14
Timer expired! Signal received: 14
sigalrm.cSuccessNone
SIGALRM signals blocked
Alarm Handled. Exiting
sigchld.cSuccessNone
Signal Child Test!
signal-fork.cSuccessNone
Successfully changed the signal handler for Signal 12
Killing Child
Signal Handler Test!
Exiting Child
signal-simple.cSuccessNone
Successfully changed the signal handler for Signal 12
Signal Handler Test!
sigprocmask.cSuccessNone
blocking SIGUSR2
Sending SIGUSR2
Sleeping 1 second
unblocking signal
Signal Handler!
Exiting program
Non Deterministic Tests

Summary

MetricCount
Total Test Cases41
Number of Successes41
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

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
chdir_getcwd.cSuccessNone
getcwd() error: Success
getcwd() error: Success
clock_gettime_highlevel.cSuccessNone
Running 1,000,000 iterations...

Start time: 6231 clock ticks
End time: 8479 clock ticks
Elapsed CPU time: 0.002248 seconds

clock_gettime_simple.cSuccessNone
Current time: 1761461629 seconds and 463073095 nanoseconds
dup.cSuccessNone
duped fd: 3
attempting to write to dup() fd

write to dup() fd succeeded
write to old fd succeeded

fchdir.cSuccessNone
getcwd() error: Success
fstatfs.cSuccessNone
Filesystem type: 794c7630
getcwd.cSuccessNone
getcwd() error: Success
read.cSuccessNone
open(): No such file or directory
statfs.cSuccessNone
Filesystem type: 794c7630
Memory Tests
malloc_large.cSuccessNone
0xefffe010: 42
mmap_complicated.cSuccessNone
Parent: Waiting for child to write.
Child: Writing to shared memory.
Parent: Reading from shared memory: 'Hello from the child process!'
Child: Reading from shared memory: 'Hello from the parent process!'
Child: Exiting.
Parent: Reading modified shared memory: 'Hello from the parent process!'
Parent: Exiting.
mmap_shared.cSuccessNone
parent value: 1234, 4321
parent value after fork: 1234, 4321
child value after fork: 1234, 4321
parent value after modification: 2333, 3332
child value after modification: 2333, 4321
segfault.cSuccessNone
pipe() ret: [3, 4]
read() ret: 3
hi
shm.cSuccessNone
Shared memory segment created with id: 1
Parent attached to shared memory at 0xffffe000
Parent wrote: 'Hello from parent'
Child attached to shared memory at 0xffffe000
Child reads: 'Hello from parent'
Child detached from shared memory
Parent reads: 'Hello from child'
Parent detached from shared memory
Shared memory segment removed
vtable.cSuccessNone
Shape 0 area: 12
Shape 1 area: 19.635
Networking Tests
dnstest.cSuccessNone
is sockfd valid? yes
37 is the length sent
53 is the length recieved
the dns lookup yields the ip address: 35.172.89.115
getifaddrs.cSuccessNone
getifaddrs: Bad address
pipe.cSuccessNone
pipe() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipe2.cSuccessNone
pipe2() ret: [3, 4]
write() ret: 3
read() ret: 3
hi
pipeinput.cSuccessNone
about to write to pipe in parent
I'm parent with pid: 2
Hey Nick!

pipeinput2.cSuccessNone
about to write to pipe in parent
I'm parent with pid: 2
Hey Nick!

pipeonestring.cSuccessNone
about to write to pipe in parent
I'm child with pid: 0
I'm parent with pid: 2
Hey Nick!
������
pipewrite.cSuccessNone
Made pipe with write end 3 and read end 4
wrote 16
write 16
wrote 16
wrote three messages to the pipe
msg 0, length 16: hello, world #1
msg 1, length 16: hello, world #2
msg 2, length 16: hello, world #3
shutdown_fork.cSuccessNone
2d-05
simple-select.cSuccessNone
[child] waiting for data...
[parent] writing message
[child] got data: hello select!

[child] waiting for data...
[child] pipe closed

socketepoll.cSuccessNone
SERVER: New socket bound and listen
SERVER: NEW CONNECTION
CLIENT: Hello message sent
Hello from client
Message Received
CLIENT: sending followup
Did you get my message?
CLIENT: Closed connection
Closed connection on descriptor 6
read error: Connection reset by peer
Process Tests
fork2malloc.cSuccessNone
first malloc
Address of mptr1 0x30010
Contents of mptr1 deadbeef
pre-fork
in child
Address of mptr1 0x30fc0
done
fork_simple.cSuccessNone
Parent pid = 1
Child pid = 2
forkandopen.cSuccessNone
Parent: Testing open in parent: pid 2!
Child: Testing open in child: pid 0!
Parent: Pid 2 opened fd 3
Child: Pid 0 opened fd 3
forkfiles.cSuccessNone
This is a test of the wonderful fork call in lind.
read 51 chars
forkmalloc.cSuccessNone
in child
pointer address is 0x30010
done
forknodup.cSuccessNone
I'm the PARENT
I'm the child
all done
all done
getpid.cSuccessNone
printing pidSuccess
Signal Tests
signal.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
parent in loop, pid=1
Terminated
signal_SIGCHLD.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 17
Caught signal 10
signal_fork.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 2
after fork inside signal handler, pid=3
after fork inside signal handler, pid=1
parent in loop, pid=3
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=3
parent in loop, pid=1
parent in loop, pid=3
parent in loop, pid=1
parent in loop, pid=3
signal_int_thread.cSuccessNone
main starts!
Hello from thread
thread sleep
thread sleep
child ready to kill
child done kill
Terminated
child in loop, pid=2
Terminated
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
child in loop, pid=2
signal_longjmp.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
after fork inside signal handler, pid=3
after fork inside signal handler, pid=1
after child longjmp (should only be printed once by parent)
parent in loop, pid=1
back from setjmp: 42! pid=3
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
signal_nodefer.cSuccessNone
main starts!
parent in loop, pid=1
*child ready to kill
*child sent SIGUSR1
Caught signal 10
*child ready to send SIGUSR1 again
start of signal handler
*child done kill
Caught signal 10
start of signal handler
end of signal handler
end of signal handler
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
signal_procmask.cSuccessNone
Parent: Blocking SIGINT...
Signal 2 is BLOCKED
Parent: SIGINT is blocked. Child will send SIGINT soon...
Child: Sending SIGINT to parent (PID: 1)
Parent: Unblocking SIGINT now.
SIGINT received! (Handled in Parent Process)
Signal 2 is UNBLOCKED
Parent: Waiting for SIGINT...
signal_sa_mask.cSuccessNone
main starts!
parent in loop, pid=1
child ready to kill
child done kill
Caught signal 10
signal 10 done
Caught signal 12
signal 12 done
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1
parent in loop, pid=1

@m-hemmings m-hemmings self-requested a review October 27, 2025 18:40
Copy link
Member

@m-hemmings m-hemmings left a comment

Choose a reason for hiding this comment

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

All my changes were addressed previously and no new additions since then look like a problem to me. Looks good

@m-hemmings m-hemmings requested a review from J7-7-7 October 27, 2025 18:41
@rennergade rennergade merged commit 3010ad2 into main Oct 27, 2025
1 of 2 checks passed
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.

Fix test suite file/executable paths

7 participants