Интерактивная задача и нестабильность

Обсуждение вопросов, связанных с системой проведения турниров ejudge.
aropan
Posts:64
Joined:13 April 2012, 18:22
Интерактивная задача и нестабильность

Post by aropan » 15 April 2012, 17:53

Сделал, все работает как и положена... правда иногда такое чувство, что файл конфигурации не обновляется (reload config files в админке не спасает), но ej-stop, затем ej-start тут помогает.

При тестировании есть нестабильность... такие вердикты:

Code: Select all

Wrong answer	0.004	0.003	OK. your 1, optimal 1 1
Run-time error	0.004	0.005	Signal 13 (SIGPIPE)
Time-limit exceeded	0.000	0.002	 
Check failed	0.000	0.003
WA это хорошо, он должен быть везде. И что интересно при реджадже разные вердикты на разных тестах, преимущественно WA, от 0 до 10 из 50 некорректно обрабатывается. При CF --- Checker output ---:

Code: Select all

run: interactor terminated with signal 13 (SIGPIPE)
Ejudge 2.3.16.
А я пока попробую на новой версии... На другом сервере на новой системе также... Что посоветуете?
Last edited by aropan on 15 April 2012, 18:23, edited 2 times in total.

aropan
Posts:64
Joined:13 April 2012, 18:22

Re: Интерактивная задача и нестабильность

Post by aropan » 15 April 2012, 18:00

Решение и интерактор стабильные, то есть без рандома...

aropan
Posts:64
Joined:13 April 2012, 18:22

Re: Интерактивная задача и нестабильность

Post by aropan » 15 April 2012, 18:54

Да и падать там особо негде - сразу выдаю тест проходит, т.е. решение типа первым запросом находит.

Вот что ещё заметил: если интерактор сразу говорит, что решение правильно, то падает до 10 тест из 50, а если делать как нужно, т.е. чтобы интерактор отрабатывал свое, то падают почти все тесты (45-50)... и преимущественно из этих падает по CF как описано выше...

aropan
Posts:64
Joined:13 April 2012, 18:22

Re: Интерактивная задача и нестабильность

Post by aropan » 15 April 2012, 20:08

ejudge как будто отпустило, вместо 45-50 некорректных превратились в 0-3 TL...

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: Интерактивная задача и нестабильность

Post by cher » 16 April 2012, 14:48

в 2.3.16 интерактивные задачи скорее всего не заработают. нужно пробовать более старшие версии.

aropan
Posts:64
Joined:13 April 2012, 18:22

Re: Интерактивная задача и нестабильность

Post by aropan » 16 April 2012, 16:00

cher wrote:в 2.3.16 интерактивные задачи скорее всего не заработают. нужно пробовать более старшие версии.
Так я сверху отписывался, что на новой тоже не работает... на 2.3.21... такая же ошибка.

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: Интерактивная задача и нестабильность

Post by cher » 16 April 2012, 16:50

Где сверху?

aropan
Posts:64
Joined:13 April 2012, 18:22

Re: Интерактивная задача и нестабильность

Post by aropan » 16 April 2012, 17:00

aropan wrote: Ejudge 2.3.16.
А я пока попробую на новой версии... На другом сервере на новой системе также... Что посоветуете?

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: Интерактивная задача и нестабильность

Post by cher » 16 April 2012, 17:34

попробуйте в интерактор добавить signal(SIGPIPE, SIG_IGN);

aropan
Posts:64
Joined:13 April 2012, 18:22

Re: Интерактивная задача и нестабильность

Post by aropan » 16 April 2012, 19:27

cher wrote:попробуйте в интерактор добавить signal(SIGPIPE, SIG_IGN);
Так, для начало скажу что есть прогресс... но есть TL, видно где-то зависает решение... сделал чтобы сразу говорил ОК... есть один два на разных тестах такое:

Code: Select all

Time-limit exceeded	0.004	0.003	 
Есть над чем работать, большое спасибо, буду смотреть где виснет.

aropan
Posts:64
Joined:13 April 2012, 18:22

Re: Интерактивная задача и нестабильность

Post by aropan » 16 April 2012, 19:39

Да, все заработало...большое спасибо за помощь и за прекрасную систему... хоть порой и странную)))

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: Интерактивная задача и нестабильность

Post by cher » 17 April 2012, 08:20

Поскольку поведение тестируемой программы непредсказуемо, интерактор должен очень аккуратно работать с чтением/записью:

1. Обязательно вычитывать все, что выводит тестируемая программа. Если интерактор заканчивает работу раньше,
чем тестируемая программа, она может получить runtime error из-за сигнала SIGPIPE.

2. Обрабатывать EOF при чтении в любой момент.

3. Игнорировать SIGPIPE.

4. Проверять на ошибки записи в свой вывод. Если тестируемая программа завершилась раньше интерактора, запись в вывод интерактора может завершиться с ошибкой, а если не игнорировать SIGPIPE, интерактор будет аварийно завершен.

aropan
Posts:64
Joined:13 April 2012, 18:22

Re: Интерактивная задача и нестабильность

Post by aropan » 17 April 2012, 22:54

Да, на новой версии работает на ура. Спасибо за пояснения.

aropan
Posts:64
Joined:13 April 2012, 18:22

Re: Интерактивная задача и нестабильность

Post by aropan » 18 April 2012, 00:06

cher wrote:4. Проверять на ошибки записи в свой вывод. Если тестируемая программа завершилась раньше интерактора, запись в вывод интерактора может завершиться с ошибкой, а если не игнорировать SIGPIPE, интерактор будет аварийно завершен.
А можно поподробней. У меня сейчас дело дошло до "checker terminated with signal 11 (SIGSEGV)" и если в некоторых случаях в конце не выводить, то натыкаюсь на пункт 1 (решение получает "Runtime error SIGPIPE")

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: Интерактивная задача и нестабильность

Post by cher » 18 April 2012, 09:40

SIGSEGV в чекере - это ошибка в чекере, надо ее искать

про SIGPIPE: http://linux.die.net/man/7/pipe

Post Reply