OK, I've been waiting to hear back from another staff member's thoughts on this and the
'decision' is that the question should have been better worded. Fair enough.
The reason that answer D is (remains) the correct answer, and 42 students did get it
correct, is that the fork() system call doesn't receive a parameter, so any code calling
fork() with a parameter will not compile and, hence, couldn't be a reason for fork()
failing because it would never run.
Of the other 3 possible answers, A and B are definitely valid reasons for fork() failing
but, as has been clearly discussed in this thread, fork() returning -1 is an outcome of a
failure, not a reason.
OK, so what to do about it?
42 students got the question right, so ignoring the question entirely would wrongly
penalise those students (including some lucky few who may have guessed it!). And for all
other students, we don't know if they chose the wrong answer because they were confused
by the question's wording or otherwise.
So, at the slight risk of offending those who genuinely got it right, I'll give all other
students (with A, B, and C) the extra mark. It'll require a bit of effort, but I'll get
to it sometime over the weekend (so much AFL and cricket to enjoy).
Sorry for the stuff up!