fix(process): reap entire process group on cmd.Cancel (#39143)

Signed-off-by: Royce Remer <royceremer@gmail.com>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
Royce Remer
2026-08-29 19:54:07 +00:00
committed by GitHub
co-authored by wxiaoguang
parent 88974d2db9
commit eea03676d3
21 changed files with 198 additions and 203 deletions
+2 -2
View File
@@ -298,7 +298,7 @@ func verifyCommitSignByGPGSettings(ctx context.Context, gpgSettings *git.CommitS
}
// Otherwise we have to parse the key
pubKeyContent, err := gpgSettings.PublicKeyContent()
pubKeyContent, err := gpgSettings.PublicKeyContent(ctx)
if err != nil {
log.Error("gpgSettings.PublicKeyContent: %v", err)
return nil
@@ -420,7 +420,7 @@ func parseCommitWithSSHSignature(ctx context.Context, c *git.Commit, committerUs
// Try the configured instance-wide SSH public key
if instanceSettings := getInstanceCommitSignSettings(git.SigningKeyFormatSSH); instanceSettings != nil {
pubKeyContent, err := instanceSettings.PublicKeyContent()
pubKeyContent, err := instanceSettings.PublicKeyContent(ctx)
if err != nil {
log.Error("commitSignSettings.PublicKeyContent: %v", err)
} else {
+1 -2
View File
@@ -122,8 +122,7 @@ func PublicSigningKey(ctx context.Context) (content, format string, err error) {
return string(content), signingKey.Format, nil
}
content, stderr, err := process.GetManager().ExecDir(ctx, -1, setting.Git.HomePath,
"gpg --export -a", "gpg", "--export", "-a", signingKey.KeyID)
content, stderr, err := process.CommandContext(ctx, "gpg", "--export", "-a", signingKey.KeyID).WithDir(setting.Git.HomePath).OutputString()
if err != nil {
log.Error("Unable to get default signing key: %s, %s, %v", signingKey, stderr, err)
return "", signingKey.Format, err
+1 -3
View File
@@ -6,7 +6,6 @@ package sender
import (
"fmt"
"io"
"os/exec"
"strings"
"gitea.dev/modules/graceful"
@@ -47,12 +46,11 @@ func (s *SendmailSender) Send(from string, to []string, msg io.WriterTo) error {
ctx, _, finished := process.GetManager().AddContextTimeout(graceful.GetManager().HammerContext(), setting.MailService.SendmailTimeout, desc)
defer finished()
cmd := exec.CommandContext(ctx, setting.MailService.SendmailPath, args...)
cmd := process.CommandContext(ctx, setting.MailService.SendmailPath, args...)
pipe, err := cmd.StdinPipe()
if err != nil {
return err
}
process.SetSysProcAttribute(cmd)
if err = cmd.Start(); err != nil {
_ = pipe.Close()