From 069e59a8fcdcf3811e787e67c6b75ff921e0e572 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B3=BD=E6=B7=BC=20=E5=91=A8?= Date: Sun, 28 Sep 2025 17:05:56 +0800 Subject: fix: Zombie process --- pkg/mountmanager/manager.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pkg/mountmanager/manager.go b/pkg/mountmanager/manager.go index 26dda18..420300e 100644 --- a/pkg/mountmanager/manager.go +++ b/pkg/mountmanager/manager.go @@ -97,6 +97,12 @@ func (m *Manager) Unmount(req *UnmountRequest) (*UnmountResponse, error) { return &UnmountResponse{}, nil } + if ok, err := mountutil.IsMountPoint(entry.targetPath); ok || mount.IsCorruptedMnt(err) { + if err = mountutil.Unmount(entry.targetPath); err != nil { + return &UnmountResponse{}, err + } + } + defer os.RemoveAll(entry.cacheDir) if err := entry.process.stop(); err != nil { @@ -266,10 +272,6 @@ func (p *weedMountProcess) wait() { } func (p *weedMountProcess) stop() error { - if p.cmd.Process == nil { - return nil - } - if err := p.cmd.Process.Signal(syscall.SIGTERM); err != nil && err != os.ErrProcessDone { glog.Warningf("sending SIGTERM to weed mount failed: %v", err) } -- cgit v1.2.3