Before this commit (1d69d0d) there was an attempt to kill the user solution whenever the manager decides to finish.
I think the original idea was to provide a proper verdict for the first thing that failed in the user submission.
For example, the user made an invalid query => the manager gives WA but doesn't respond anymore => the user submission can crash by not handling the (missing) response from the manager properly.
The old idea of sending a SIGINT to the user whenever the manager wants to finish is flawed
- If the submission is killed, then the response of the manager is ignored and this is shown as RTE to the user
- If the user submission is correct, then there is some delay between sending the last message to the manager and the process actually terminating. This is especially problematic if the user has allocated a lot of memory. In this case it might happen that the communication manager <-> cms is faster then the deallocation of this memory. In particular, a correct submission would receive RTE in such a case.
Since the manager response is ignored, when the solution crashes, it is probably better to mimic the same behavior as for stub problems. So the additional pipes / communication manager <-> cms seems unnecessary
Before this commit (1d69d0d) there was an attempt to kill the user solution whenever the manager decides to finish.
I think the original idea was to provide a proper verdict for the first thing that failed in the user submission.
For example, the user made an invalid query => the manager gives WA but doesn't respond anymore => the user submission can crash by not handling the (missing) response from the manager properly.
The old idea of sending a SIGINT to the user whenever the manager wants to finish is flawed
Since the manager response is ignored, when the solution crashes, it is probably better to mimic the same behavior as for stub problems. So the additional pipes / communication manager <-> cms seems unnecessary