diff options
| -rw-r--r-- | src/tests/userprog/exec-missing.ck | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/tests/userprog/exec-missing.ck b/src/tests/userprog/exec-missing.ck index 7f9b0cb..749db01 100644 --- a/src/tests/userprog/exec-missing.ck +++ b/src/tests/userprog/exec-missing.ck @@ -1,15 +1,36 @@ # -*- perl -*- + +# In this test a program named "exec-missing" tries to start another +# program that do not exist. This is discovered in the thread of the +# new program, in the function load. + +# Correct handling can be done in three basic ways: + +# 1. We only know about the failure when our "exec" system call +# returns -1. The "no-such-file" thread never becomes a process and +# do not leave any messages. + +# 2. We know about the failure both when "exec" return -1 and when the +# "no-such-file" thread fails to become a process. It notify the +# failure by printing "load: no-such-file: open failed". But it +# does not become a process and will thus not leave a +# "no-such-file: exit(-1)" message. + +# 3. "exec" return -1 and "no-such-file" become a failed process. It +# will thus produce a "no-such-file: exit(-1)" message. This +# message may occur some time after "open failed". + use strict; use warnings; use tests::tests; check_expected ([<<'EOF', <<'EOF', <<'EOF', <<'EOF', <<'EOF', <<'EOF']); (exec-missing) begin -load: no-such-file: open failed (exec-missing) exec("no-such-file"): -1 (exec-missing) end exec-missing: exit(0) EOF (exec-missing) begin +load: no-such-file: open failed (exec-missing) exec("no-such-file"): -1 (exec-missing) end exec-missing: exit(0) |
