mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 11:00:42 +00:00
fix: Windows-specific reliability gap in the new timeout cleanup path (#74703)
Co-authored-by: openclaw-clawsweeper[bot] <280122609+openclaw-clawsweeper[bot]@users.noreply.github.com>
This commit is contained in:
@@ -2,8 +2,35 @@
|
||||
|
||||
package main
|
||||
|
||||
import "os/exec"
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"os"
|
||||
"os/exec"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
var runWindowsTaskkill = func(pid int) error {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), docsI18nCommandWaitDelay())
|
||||
defer cancel()
|
||||
return exec.CommandContext(ctx, "taskkill.exe", "/T", "/F", "/PID", strconv.Itoa(pid)).Run()
|
||||
}
|
||||
|
||||
func configureCodexPromptCommand(command *exec.Cmd) {
|
||||
command.Cancel = func() error {
|
||||
if command.Process == nil {
|
||||
return os.ErrProcessDone
|
||||
}
|
||||
if err := runWindowsTaskkill(command.Process.Pid); err != nil {
|
||||
killErr := command.Process.Kill()
|
||||
if errors.Is(killErr, os.ErrProcessDone) {
|
||||
return os.ErrProcessDone
|
||||
}
|
||||
if killErr != nil {
|
||||
return errors.Join(err, killErr)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
command.WaitDelay = docsI18nCommandWaitDelay()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user