Merge pull request #2807 from lifubang/shimlockwhenstdinclose

fix pipe in broken may cause shim lock forever
This commit is contained in:
Phil Estes 2018-11-20 22:38:22 +08:00 committed by GitHub
commit 181a522142
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 6 deletions

View File

@ -49,9 +49,11 @@ func (p *linuxPlatform) CopyConsole(ctx context.Context, console console.Console
cwg.Add(1) cwg.Add(1)
go func() { go func() {
cwg.Done() cwg.Done()
p := bufPool.Get().(*[]byte) bp := bufPool.Get().(*[]byte)
defer bufPool.Put(p) defer bufPool.Put(bp)
io.CopyBuffer(epollConsole, in, *p) io.CopyBuffer(epollConsole, in, *bp)
// we need to shutdown epollConsole when pipe broken
epollConsole.Shutdown(p.epoller.CloseConsole)
}() }()
} }

View File

@ -49,9 +49,11 @@ func (p *linuxPlatform) CopyConsole(ctx context.Context, console console.Console
cwg.Add(1) cwg.Add(1)
go func() { go func() {
cwg.Done() cwg.Done()
p := bufPool.Get().(*[]byte) bp := bufPool.Get().(*[]byte)
defer bufPool.Put(p) defer bufPool.Put(bp)
io.CopyBuffer(epollConsole, in, *p) io.CopyBuffer(epollConsole, in, *bp)
// we need to shutdown epollConsole when pipe broken
epollConsole.Shutdown(p.epoller.CloseConsole)
}() }()
} }