Доброго времени суток!
Я пытаюсь настроить систему pcms2, но не могу обойти такую ошибку:
Проще говоря, при посылке решения в систему падает компонента Compiler.
Встречал ли кто-нибудь такой баг? Как с ним бороться? Можете ли вы выложить рабочую версию pcms2?
Я пытаюсь настроить систему pcms2, но не могу обойти такую ошибку:
ERR compiler - Thread compiler.1.CompilerThread-0 thrown exception. Restarting
java.lang.IllegalMonitorStateException
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at pcms2.invoke.ni.java.InvokeJava.invoke(InvokeJava.java:50)
at pcms2.judging.invoke.VirtualInvoke.invoke(VirtualInvoke.java:316)
at pcms2.judging.compiler.Language.compile(Language.java:360)
at pcms2.judging.compiler.CompilerCompilerThread.processRequest(Compiler.java: 269)
atpcms2.judging.compiler.CompilerCompilerThread.run(Compiler.java:221)
at pcms2.shell.impl.ThreadManagerLocalThread.run(ThreadManager.java: 316)
Проще говоря, при посылке решения в систему падает компонента Compiler.
Встречал ли кто-нибудь такой баг? Как с ним бороться? Можете ли вы выложить рабочую версию pcms2?
А где собственно сообщение об ошибке? Нужно справа выбрать компоненту Compiler, тогда в окне слева можно будет увидеть ее лог.
а в общем...
Я такие вопросы решал следующим образом. Достал из разных мест зоопарк разных версий PCMS2, в каждой из которых что-то одно не работает. Если в каком-то модуле происходит ошибка, jar заменяется аналогом из другой версии.
ну и еще, на всякий случай, ntinvoke.dll должен лежать в PATH
Подробнее в исходном посте.
А что такое ntivoke.dll?
Там есть просто invoke.dll, но его добавление в PATH ровным счётом ничего не делает :(
virtual-invoke: http://pastebin.com/1JRaWnXn
Оба лежат в config/judging
Оба, вроде бы, по умолчанию.
Пробовал fpc, dcc32, g++, java
2. Из командной строки вышеозначенные компиляторы запускаются?
3. Есть файлы native-invoke-java.xml и native-invoke-nt.xml. Первый должен быть start="never", второй start="always". Первый, сдается мне, уже давно не работает.
4. До попытки сабмита все в сервере "живет"?
2. Да, запускаются.
3. Если поставить в native-invoke-nt.xml start = "always", а в ...-java start="never", то получается баг Component's class is not specified.
4. Да, всё живёт.
делал так. java -D java.library.path=invoke.dll потом так java -D java.library.path=c:\windows\system32\invoke.dll Не работает! Error: Could not find or load main class java.library.path=invoke.dll
В -Djava.library.path надо указывать путь к директории с invoke.dll, а не к самой invoke.dll.
Между -D и java.library.path пробелов быть не должно.
И это дополнительная опция командной строки java, а не вся командная строка. Имелось в виду то, что в pcms2.bat надо найти вызов java и дописать туда опцию про java.library.path.
Вот так? Я ничего не перепутал?
java -Djava.library.path="c:\windows\sytem32\"
Если оно в C:\Windows\System32, то как раз в этом случае ничего писать не надо, так как эта директория и так будет просматриваться на предмет поиска библиотеки.
Не знаю, как сейчас, у меня pcms2.bat имеет следующее содержание:
Вот после bin\runjava.bat можно писать -Djava.library.path=...
Можно еще подкорректировать runjava.bat. Там тогда будет такая строчка:
Обращаю внимание на то, что при просмотре приведенных примеров файлов на codeforces могут случиться непредвиденные и некорректные переносы строк.
ни один способ не подошел...
DELETED
Проморгал, у MaxBuzz все расписано...
P.S. у меня второй способ работает
Но решения всё равно не проверяются: executable not found.
1. Что за язык, на котором пробовал? (В т.ч. его название в compiler.xml)
2.
1) Все компиляторы C++ компилируют по умолчанию без оптимизации. Всем надо, соответственно, нарисовать -O2 (для вижака /O2).
2) Есть, оказывается, прикол: STL-ные решения частенько работают под invoke.dll гораздо медленнее, чем "в жизни". Это связано с настройками винды по умолчанию. Чтобы поправить ситуацию, нужно потвикать реестр. Как именно, спрошу, когда надо будет.
А можно второй пункт поподробнее, что надо прописывать в реестр? Кажется, мы с этим столкнулись.
Да, это некропост.
Не http://codeforces.net/blog/entry/4030#comment-81864 это случаем?
Я сомневаюсь, ведь это надо каждый exe-шник переименовывать. PCMS вроде это не умеет.
По ссылке выше, видимо, правильное решение (по буквам не проверял). Не надо ничего переименовывать руками. В ключах любого компилятора можно указать имя получаемого исполняемого файла. Поэтому в ключах gcc будет, например, в частности и [-o] [FastHeap.exe].
Пользуясь случаям — а как замораживать монитор?
Я уже это спросил, Joshik вроде прочитал и я ожидаю ответа...