On Fri, Jul 3, 2020 at 9:36 PM Ian Lance Taylor <i...@golang.org> wrote:
> That looks like the process is writing to a pipe that nothing is reading > from. > Yes, that is correct. The question is: why doesn't the reader read from the pipe? And why does it suddenly start reading when the Docker daemon process is terminated? At first I would believe this to be a starvation problem, but our investigation is still inconclusive. Here is what we know about the reader process / goroutine: - It is a goroutine that becomes active when Docker terminates. - This same goroutine gets stuck at io.CopyBuffer(epollConsole, in, *bp) before Docker terminates. During this time the writer writes 18778 characters (and then gets stuck). - All the configurations we tested, gave this or similar behaviour. However the behaviour is slightly timing dependent, ie. inserting logging statements may result in small changes to this behaviour. During the last few days of investigation we found one race in containerd and several bugs in our system call bindings for ppc (Ftruncate, Truncate, Fstatfs, Statfs, Lstat). We have fixed these, but the problem with the reader not reading / blocked I/O persists. It may be a case of starvation, or a race, or something else. More investigation is required. We are now looking further into the system call bindings, debugging the code of Docker and its tools, and the gccgo runtime. Thanks for your reply. Hugo -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CAARrXCTG2NcYVuw8GOZw8t0fYf%3DM_hY1h9%3DPor_H1_wgeBo8jQ%40mail.gmail.com.