The other package is closing stdin....

> On Mar 8, 2019, at 2:43 PM, Everton Marques <everton.marq...@gmail.com> wrote:
> 
> I am debugging an issue that randomly makes the code below to hit io.EOF 
> instead of reporting first byte 'u' from "ugh":
> 
> $ echo "ugh" | eraseme ;# this randomly reports EOF instead of first byte 'u' 
> from "ugh"
> 
> $ more eraseme/main.go
> // (snip)
> func main() {
>         input := bufio.NewReader(os.Stdin)
>         b, err := input.ReadByte()
>         log.Printf("byte='%c' error=%v", b, err)
>         if err != nil {
>                 os.Exit(1)
>         }
> }
> 
> I suspect the offending code is a variable initialization from an imported 
> package:
> 
> var Result = newResult() // in imported package
> 
> I can suppress the race by not importing that package or by turning 
> newResult() into a no-op function.
> 
> However, all newResult() does it to allocate/initialize variables and 
> log.Printf() messages.
> 
> I fail to see how newResult() could directly affect reading from os.Stdin.
> 
> Question: Can anyone figure out how initialization timing (?) would insert 
> io.EOF in the stream created by bufio.NewReader(os.Stdin) ?
> 
> System is: go version go1.12 linux/amd64
> 
> The code does NOT launch any goroutine.
> 
> Thanks,
> Everton
> 
> -- 
> 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.
> For more options, visit https://groups.google.com/d/optout.

-- 
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.
For more options, visit https://groups.google.com/d/optout.

Reply via email to