Currently, executables are built using https://github.com/DOMjudge/domjudge/blob/main/judge/build_executable.sh. This runs inside the chroot, but the executable that gets built is run outside the chroot. This leads to incompatibility problems, see for example below with the glibc version, and causes internal errors.
Your environment
DOMjudge version 8.0 on CentOS 8 with chroot Debian Bookworm.
So either the build script should not use the chroot or all the scripts that were built with it should be run inside this same chroot.
A quick hack would be to explicitly compile any build scripts statically, either by specifying that at https://github.com/DOMjudge/domjudge/blob/main/judge/judgedaemon.main.php#L410-L413 or add a build script to the executable.
This is basically about running compare scripts in the chroot, right? Everything else including compilation should be already in the chroot if I am not mistaken.
Description of the problem
Currently, executables are built using https://github.com/DOMjudge/domjudge/blob/main/judge/build_executable.sh. This runs inside the chroot, but the executable that gets built is run outside the chroot. This leads to incompatibility problems, see for example below with the glibc version, and causes internal errors.
Your environment
DOMjudge version 8.0 on CentOS 8 with chroot Debian Bookworm.
Steps to reproduce
Install the system, try to judge something.
Actual behaviour
Then get this internal error:
Remarks
So either the build script should not use the chroot or all the scripts that were built with it should be run inside this same chroot. A quick hack would be to explicitly compile any build scripts statically, either by specifying that at https://github.com/DOMjudge/domjudge/blob/main/judge/judgedaemon.main.php#L410-L413 or add a
build
script to the executable.