Бесконечный running в задаче с потестовой компиляцией

Обсуждение вопросов, связанных с системой проведения турниров ejudge.
Post Reply
IlyaCk
Posts: 21
Joined: 04 January 2013, 19:02

Бесконечный running в задаче с потестовой компиляцией

Post by IlyaCk » 06 January 2020, 17:12

Пытаюсь (впервые) сделать задачу с потестовой компиляцией. Этап компиляции проходит, вроде бы, нормально, но потом наступает бесконечный running (даже если сделать, чтоб не проходил уже первый тест, а правила проверки ACM). В том, что виновата именно потестовая компиляция -- почти уверен (байт-в-байт то же решение, но проверяемое без потестовой компиляции, работает нормально, в том же соревновании на том же языке программирования).

Для потестовой компиляции, в serve.cfg в разделе [problem] соответствующей задачи написано

Code: Select all

compiler_env_pat = "%03d.inf"
enable_multi_header
, *.inf-файлы подготовлены, в них ЕДИНСТВЕНЫЕ строки -- что-то вроде
compiler_env = "EJUDGE_FLAGS=-define:VALUE_IS_DOUBLE"
(в соревновании используется единственный язык mcs).

Вообще, компиляция, вроде бы проходит нормально, в /home/judges/var/ej-compile.log появляются строки в стиле

Code: Select all

2020-01-06T12:27:45Z:info:Compilation sucessful
(количество соответствует количеству тестов).
Единственное, что похоже на хоть чуть-чуть информативное сообщение об ошибке -- в /home/judges/var/ej-super-run.log появляются строки в стиле

Code: Select all

2020-01-06T12:27:47Z:info:Copy: /home/judges/super-run/var/exe/J71F169U2TJ22I10.exe -> /home/ejudge/var/super-run/work/ejudge2_27132/000000.exe
2020-01-06T12:27:47Z:info:clear_directory: /home/ejudge/var/super-run/check/ejudge2_27132 cleared
2020-01-06T12:27:47Z:2:emerg:Internal: unix/fileutl.c: 463: assertion failed: buf
Но непонятно, что с этим делать дальше. Строку 463 файла fileutl.c смотреть пробовал, там

Code: Select all

ASSERT(buf);
который вызывается в самом начале тела функции

Code: Select all

int
generic_write_file(char const *buf, size_t size, int flags,
                   char const *dir, char const *name, char const *sfx)
а эту generic_write_file кто только не вызывает, там что-то искать без stacktrace как-то очень уж сомнительное удовольствие.

К тому же, после попытки проверять задачу с потестовой компиляцией слетает процесс ej-super-run (вывод сделан на основании того, что если после неудачи с этой задачей пытаться делать ejudge-control stop, то пишет что-то в стиле

Code: Select all

ejudge@ejudge2:~$ ejudge-control stop
ej-super-run-control: ej-super-run is not running
ej-jobs-control: ej-jobs is running as pid 28976
ej-jobs-control: sending it the TERM signal
; при этом, пока не пытаюсь проверять именно эту задачу с потестовой компиляцией, ej-super-run работает и вообще всё, вроде бы, работает, как в этом соревновании, так и в прочих).

Что я делаю не так? Куда вообще смотреть?

Post Reply