fix pipe in broken may cause shim lock forever for runtime v1
Signed-off-by: Lifubang <lifubang@acmcoder.com>
This commit is contained in:
		@@ -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)
 | 
				
			||||||
		}()
 | 
							}()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -52,6 +52,7 @@ func (p *linuxPlatform) CopyConsole(ctx context.Context, console console.Console
 | 
				
			|||||||
			bp := bufPool.Get().(*[]byte)
 | 
								bp := bufPool.Get().(*[]byte)
 | 
				
			||||||
			defer bufPool.Put(bp)
 | 
								defer bufPool.Put(bp)
 | 
				
			||||||
			io.CopyBuffer(epollConsole, in, *bp)
 | 
								io.CopyBuffer(epollConsole, in, *bp)
 | 
				
			||||||
 | 
								// we need to shutdown epollConsole when pipe broken
 | 
				
			||||||
			epollConsole.Shutdown(p.epoller.CloseConsole)
 | 
								epollConsole.Shutdown(p.epoller.CloseConsole)
 | 
				
			||||||
		}()
 | 
							}()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user