Hi gophers, I hope someone can help finding out why a particular goroutine call can block the main goroutine.
In the following code, all "go" calls spawn off a goroutine and return as expected, except for the last one that blocks the main goroutine. Is this a bug, or am I missing something subtle or even obvious (obvious to all others only of course)? package main import ( "log" "net/http" ) func main() { // all of these work as expected go http.ListenAndServe("localhost:8080", nil) go log.Println("goroutine") go func() { log.Println(http.ListenAndServe("localhost:8081", nil)) }() // The following line blocks the main goroutine. go log.Println(http.ListenAndServe("localhost:8082", nil)) log.Println("after go log.Println(http.ListenAndServe())") // never prints select {} // remove this, and the code still never finishes } All three servers eventually run (try curl localhost:8080; curl localhost:8081; curl localhost:8082), In the playground <https://go.dev/play/p/vObgGGM7MJD>, the code even deadlocks. Any idea? -- 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/fd72b5b3-f01e-44d5-a1a0-f784fe7b884fn%40googlegroups.com.