「PC^2」最新版をいじってみた

現役の時には非常にお世話になり、OBとなった今でも模擬地区予選の運営などでよく利用するソフトだ。ACM主催国際大学対抗プログラミングコンテスト(以下ICPC)で使用されているジャッジソフトで「PC^2」というソフトがある。先日最新版となるVersion 9.1.2が公開された。最新版の特徴はセキュリティの向上、公開APIの整備、自動ジャッジの強化など、そこそこ重要そうなものが実装されている。そんなこんなで早速ハックし^H^H^H^H使ってみた。
少しいじってみたところ前のバージョンより少し安定したかなと思った。使い方自体は前のバージョンとほとんど同じで、ところどころインターフェースの配置が変わっている程度。普通に使えた。
次に最新版の特徴となっている自動ジャッジを試してみた。今までのバージョンでは自動ジャッジは禁忌とされていたので触ったことが無かった。とりあえず自動ジャッジをオンにしてプログラムをsubmitすると、普通に動いた。ちょっと拍子抜けした。結果を選手に返す前にジャッジが確認できるオプションがあって便利だと思った。
次に4台のジャッジクライアントを同時に自動ジャッジにして動かしてみた。プログラムをsubmitしてみたところ、なんと1台を残して自動ジャッジが止まってしまった。表示を見るとrunを取りに行っているという表示で固まってしまっている。これは世間一般で言うデッドロックという物かなぁ?と、非常に微妙な気分になってしまった。
次に過去に製作したPC^2のwebラッパー(GWT版)を最新版に対応させてみた。最新バージョンでは公開APIが整備されており、対応しやすかった。runやclarificationのsubmitのAPIが公開されていなかったのだが、ここはjarの中のclassファイルをjadデコンパイルして推測し、内部インタフェースを取得して対応した。マナー違反だとは思うが一応動いているので、「動くけど要注意」ということにしておこうと思う。
最後に10000万件くらいsubmitしてみたところ、ジャッジが止まり、サーバーが止まり、クライアントが止まり、OutOfMemoryで落ちてしまった。普通はそんな使われ方は想定していないわけなので、しょうがないかなぁといったところだ。
とりあえずPC^2の最新版はくせがあるので使うときには検証した上で使うべきだと思った。