fork bomb handling and gdb support
All checks were successful
Release / Build & publish (push) Successful in 7s

This commit is contained in:
2026-04-06 17:59:26 +03:00
parent c030d91911
commit 9b9a790618
4 changed files with 63 additions and 4 deletions

View File

@@ -131,6 +131,7 @@ func (r *Runner) build() (string, error) {
cmd := shellCommand(ctx, buildCmd)
cmd.Dir = r.cfg.WorkDir
setProcessGroup(cmd)
cmd.Env = os.Environ()
var out bytes.Buffer
@@ -138,6 +139,7 @@ func (r *Runner) build() (string, error) {
cmd.Stderr = &out
if err := cmd.Run(); err != nil {
killProcessGroup(cmd)
return out.String(), fmt.Errorf("build failed: %w\n%s", err, out.String())
}
return out.String(), nil
@@ -249,8 +251,13 @@ func (r *Runner) runTest(t *dsl.Test) *TestResult {
wrapper = t.Wrapper
}
cmd := buildExecCmd(ctx, wrapper, r.binary, t.Args)
args := t.Args
if wrapper != "" {
args = absoluteArgs(tmpDir, args)
}
cmd := buildExecCmd(ctx, wrapper, r.binary, args)
cmd.Dir = tmpDir
setProcessGroup(cmd)
cmd.Env = os.Environ()
cmd.Env = append(cmd.Env, "LC_ALL=C", "LANG=C")
@@ -271,6 +278,10 @@ func (r *Runner) runTest(t *dsl.Test) *TestResult {
runErr := cmd.Run()
tr.Elapsed = time.Since(start)
if ctx.Err() == context.DeadlineExceeded {
killProcessGroup(cmd)
}
tr.ActualStdout = normalizeOutput(stdout.String(), r.file)
tr.ActualStderr = normalizeOutput(stderr.String(), r.file)
@@ -327,6 +338,18 @@ func (r *Runner) runTest(t *dsl.Test) *TestResult {
return tr
}
func absoluteArgs(dir string, args []string) []string {
out := make([]string, len(args))
for i, a := range args {
if !filepath.IsAbs(a) {
out[i] = filepath.Join(dir, a)
} else {
out[i] = a
}
}
return out
}
func buildExecCmd(ctx context.Context, wrapper, binary string, args []string) *exec.Cmd {
if wrapper == "" {
return exec.CommandContext(ctx, binary, args...)