I have installed on RHEL8 the docker version of coderunner (on podman actually) but executing the testsubmit.py I obtain several errors. Do you have any idea on how to correct them?
[root@coderunner-rh8 system]# podman exec -t jobe /usr/bin/python3 /var/www/html/jobe/testsubmit.py c
Supported languages:
c: 7.5.0
cpp: 7.5.0
java: 11.0.6
nodejs: 8.10.0
octave: 4.2.2
pascal: 3.0.4
php: 7.2.24
python3: 3.6.9
Test good C hello world OK
Test compile error C hello world OK
Test use of compileargs with C OK
Test runtime error C hello world OK
Test timelimit on C OK
Test outputlimit on C OK
Memory limit exceeded in C (seg faults) OK
Infinite recursion (stack error) on C OK
***************** FAILED TEST ******************
{'run_id': None, 'outcome': 15, 'cmpinfo': '', 'stdout': '3 forks succeeded, 997 failed\n', 'stderr': ''}
C program controlled forking
Jobe result: Successful run
Output:
3 forks succeeded, 997 failed
************************************************
A C program with ASCII non-UTF-8-compatible output OK
Test compile error C++ hello world OK
11 tests, 10 passed, 1 failed, 0 exceptions
Checking parallel submissions
Doing child 0
Doing child 1
Doing child 2
Doing child 3
Doing child 4
Doing child 5
Doing child 6
Doing child 7
Doing child 8
Doing child 9
***************** FAILED TEST ******************
{'run_id': None, 'outcome': 11, 'cmpinfo': "/var/www/html/jobe/application/libraries/../../runguard/runguard: cannot start `sh': Resource temporarily unavailable\nTry `/var/www/html/jobe/application/libraries/../../runguard/runguard --help' for more information.\n", 'stdout': '', 'stderr': ''}
C program to check parallel submissions
Jobe result: Compile error
Compiler output:
/var/www/html/jobe/application/libraries/../../runguard/runguard: cannot start `sh': Resource temporarily unavailable
Try `/var/www/html/jobe/application/libraries/../../runguard/runguard --help' for more information.
************************************************
C program to check parallel submissions OK
C program to check parallel submissions OK
C program to check parallel submissions OK
C program to check parallel submissions OK
C program to check parallel submissions OK
C program to check parallel submissions OK
C program to check parallel submissions OK
C program to check parallel submissions OK
***************** FAILED TEST ******************
{'run_id': None, 'outcome': 11, 'cmpinfo': '/var/www/html/jobe/application/libraries/../../runguard/runguard: warning: timelimit exceeded (wall time): aborting command\n/var/www/html/jobe/application/libraries/../../runguard/runguard: warning: command terminated with signal 15\n', 'stdout': '', 'stderr': ''}
C program to check parallel submissions
Jobe result: Compile error
Compiler output:
/var/www/html/jobe/application/libraries/../../runguard/runguard: warning: timelimit exceeded (wall time): aborting command
/var/www/html/jobe/application/libraries/../../runguard/runguard: warning: command terminated with signal 15
************************************************
All done
Testing a submission with an excessive cputime parameter
OK
Error: non zero exit code: 1: OCI runtime error
I don't have an RHEL system to test with and I've never used podman. So all I can offer is the observation that it seems like your container is limiting the number of forks or the number of processes that can be created inside the container in a different way from docker.
In the fork-bomb test ("C process controlled forking"), the program tries to fork 1000 times. The parameter numprocs = 10 is passed to the runguard sandbox, so it is expected that 9 forks will succeed, 991 will fail. On your system only 3 succeeded and 997 failed. That implies that the container is itself limiting the number of processes to 4.
In a similar way, the parallel submissions test failed because the test tries to fork off 10 different processes, all of which immediately throw a job at Jobe. But your test failed during the forking with the message "cannot start `sh': Resource temporarily unavailable" - this is probably the same problem. I don't fully understand the rest of the errors but my guess is that they all have the same root cause.
You probably have a working Jobe server, but with a greatly reduced load-handling capability compared to the usual docker jobeinabox.
Thank for your replay. I'll investigate in that sense in podman (that is redhat supported implementation for docker) and report in the thread any useful discover I'll do (hoping other users can benefit from that).
I have inspected the container configuration and I have huge limits for files and processes.
"PidsLimit": 4096,
"Ulimits": [
{
"Name": "RLIMIT_NOFILE",
"Soft": 1048576,
"Hard": 1048576
},
{
"Name": "RLIMIT_NPROC",
"Soft": 1048576,
"Hard": 1048576
}
],
I installed podman on Ubuntu 20:04 and ran up both rootful and rootless jobeinabox containers. Both ran testsubmit.py with no errors.
Are you sure you are not yourself restricted in how many processes you can run under RHEL8? Podman containers run as children of your own user process so are subject to its ulimits, whereas docker containers run in a daemon process.