stuck task issue

This commit is contained in:
Ian Gulliver
2026-10-18 22:33:47 -07:00
parent c85266afd7
commit 131dfbecdc
4 changed files with 13 additions and 8 deletions
+5 -3
View File
@@ -16,6 +16,7 @@ import (
"strconv"
"sync"
"sync/atomic"
"syscall"
"time"
"g.fc.run/ai/byre/internal/mcp"
@@ -159,6 +160,7 @@ func spawn(opts Options) (*Session, error) {
cmd.Dir = opts.Cwd
cmd.Stderr = os.Stderr
cmd.Env = buildEnv(opts)
cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}
stdinR, stdin, err := os.Pipe()
if err != nil {
@@ -536,7 +538,7 @@ func (s *Session) Close() error {
select {
case <-s.done:
case <-time.After(5 * time.Second):
s.cmd.Process.Kill()
syscall.Kill(-s.cmd.Process.Pid, syscall.SIGKILL)
<-s.done
}
@@ -544,7 +546,7 @@ func (s *Session) Close() error {
}
func (s *Session) Kill() {
s.cmd.Process.Kill()
syscall.Kill(-s.cmd.Process.Pid, syscall.SIGKILL)
<-s.done
s.cmd.Wait()
}
@@ -577,7 +579,7 @@ func (s *Session) write(m message, deadline time.Time) error {
n, err := s.stdin.Write(append(b, '\n'))
if n > 0 && errors.Is(err, os.ErrDeadlineExceeded) {
slog.Error("codex stopped reading its stdin mid-line; killing it", "pid", s.cmd.Process.Pid, "written", n, "len", len(b)+1)
s.cmd.Process.Kill()
syscall.Kill(-s.cmd.Process.Pid, syscall.SIGKILL)
}
return err
}