From 41a0c7666eb1cfa6009742c881b260dd9e08fa26 Mon Sep 17 00:00:00 2001 From: MasloMaslane Date: Wed, 12 Feb 2025 10:05:28 +0100 Subject: [PATCH] Fix TL bug --- src/sinol_make/executors/detailed.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/sinol_make/executors/detailed.py b/src/sinol_make/executors/detailed.py index fa5483c8..938b5352 100644 --- a/src/sinol_make/executors/detailed.py +++ b/src/sinol_make/executors/detailed.py @@ -60,14 +60,16 @@ def _execute(self, cmdline: str, time_limit: int, hard_time_limit: int, memory_l time_used = time.time() - start_time mem_used = mem_used // 1024 - with open(result_file_path, "w") as result_file: - result_file.write(f"{time_used}\n{mem_used}\n{process.returncode}\n") - if stderr == subprocess.PIPE: _, proc_stderr = process.communicate() proc_stderr = proc_stderr.decode('utf-8').split('\n') else: proc_stderr = [] + process.communicate() + + with open(result_file_path, "w") as result_file: + result_file.write(f"{time_used}\n{mem_used}\n{process.returncode}\n") + return timeout, mem_used > memory_limit, 0, proc_stderr def _parse_result(self, tle, mle, return_code, result_file_path) -> ExecutionResult: @@ -79,6 +81,8 @@ def _parse_result(self, tle, mle, return_code, result_file_path) -> ExecutionRes result.Time = float(lines[0].strip()) result.Memory = float(lines[1].strip()) program_exit_code = int(lines[2].strip()) + if program_exit_code == -9 or program_exit_code == 9: # Process was killed, so probably TLE + program_exit_code = 0 else: result.Status = Status.RE result.Error = "Unexpected output from execution:\n" + "".join(lines)