Guards the connection read with a mutex, because typeStdin
asynchronously and concurrently writes to the underlying conn.
Fixes #41167
Change-Id: Ia2610f4fde0bd4b108c54164095ea293980b0301
Reviewed-on: https://go-review.googlesource.com/c/go/+/252417
Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
        defer c.cleanUp()
        var rec record
        for {
+               c.conn.mutex.Lock()
                if err := rec.read(c.conn.rwc); err != nil {
+                       c.conn.mutex.Unlock()
                        return
                }
+               c.conn.mutex.Unlock()
                if err := c.handleRecord(&rec); err != nil {
                        return
                }