New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

net/http: Server hangs and cannot receive any more requests when using ReverseProxy #20028

Open
hleong25 opened this Issue Apr 18, 2017 · 15 comments

Comments

Projects
None yet
3 participants
@hleong25

hleong25 commented Apr 18, 2017

Please answer these questions before submitting your issue. Thanks!

What version of Go are you using (go version)?

$ go version
go version go1.7.5 linux/amd64

What operating system and processor architecture are you using (go env)?

$ go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/user/tmp/github/reverse-proxy-test"
GORACE=""
GOROOT="/opt/emc/apps/golang/go"
GOTOOLDIR="/opt/emc/apps/golang/go/pkg/tool/linux_amd64"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build252819066=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"

What did you do?

Source: https://github.com/hleong25/reverse-proxy-test

I cross compiled from linux to windows: GOOS=windows go build henryleong.com/...

The binary will start an HTTP server and will act as a reverseproxy. I will refer to it as the agent. The agent will spawn the same binary but with a new port (agents port +1), read the stdout and stderr through separate pipes. The spawned binary will be referred to as plugin. The plugin will handle the actual HTTP request from the agent through a reverseproxy request.

On a separate machine, I do a loop to the agents endpoint: while true; do curl http://<host>:<port>/greetings; done;

What did you expect to see?

I expect the curl command will be processed very quickly.

What did you see instead?

Intermittently, after a short period, curl will hang waiting for the agents server to process the HTTP request.

I believe it has to do with the stdout/stderr pipes which is not being flushed and creates some sort of deadlock/race condition.

Workaround 1

If it gets into this situation, to get out of it, I would do a HTTP request to the plugin directly, and the agent starts processing the HTTP requests. Which after a while, the agent will get into this issue again and I would need to do a HTTP request to the plugin directly.

Workaround 2

If I modify the plugin to output something to stdout or to stderr periodically, the agents HTTP server will start responding to HTTP requests.

@bradfitz

This comment has been minimized.

Member

bradfitz commented Apr 19, 2017

There might be a bug in Go, but it's not clear from this report that there is. This is a little high level and I don't have time at the moment to debug it.

Have you discussed this yet on the mailing lists or other forums?

Could you put your bug report in one self-contained file and put it on play.golang.org? (And remove anything unnecessary like graceful shutdown)

I see some missing error checks and data races, but those are probably not relevant.

Is the Windows cross-compiled part relevant?

What are the goroutine stacks of the parent and child process when things get wedged?

@bradfitz bradfitz changed the title from HTTP Server hangs and cannot receive any more requests when using ReverseProxy to net/http: Server hangs and cannot receive any more requests when using ReverseProxy Apr 19, 2017

@bradfitz bradfitz added this to the Unplanned milestone Apr 19, 2017

@bradfitz

This comment has been minimized.

Member

bradfitz commented Apr 19, 2017

Also: any difference with Go 1.8.1?

@hleong25

This comment has been minimized.

hleong25 commented Apr 19, 2017

While I did mention that it was cross compiled, I did built it natively on windows (specifically windows 2012 server) and ran it. Same issue.

I also did build it with 1.8.1 but they was with the original application that I was working on. I will return it again with this stripped down version.

If I do it in 1 self contained source in play.golang.org, does it need to be able to execute? Just asking because it needs to spawn another process to receive the http reverseproxy as well as having an external tool to call the http endpoint.

@bradfitz

This comment has been minimized.

Member

bradfitz commented Apr 19, 2017

No, it doesn't need to be able to execute. That's just where we tend to share things. Please make the example as small as possible to still be able to demonstrate your problem. Remove anything unnecessary.

@hleong25

This comment has been minimized.

hleong25 commented Apr 19, 2017

Here is the self contained source https://play.golang.org/p/FCNCSSLGkD

@hleong25

This comment has been minimized.

hleong25 commented Apr 19, 2017

I compiled with go 1.8.1 on windows, and has the same issue

Administrator@irv-vm-app130 MINGW64 /c/Shares/HenryShare/tmp/reverse-proxy-test (master)
$ go version
go version go1.8.1 windows/amd64

Administrator@irv-vm-app130 MINGW64 /c/Shares/HenryShare/tmp/reverse-proxy-test (master)
$ go env
set GOARCH=amd64
set GOBIN=
set GOEXE=.exe
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=C:/Shares/HenryShare/tmp/reverse-proxy-test
set GORACE=
set GOROOT=C:\Shares\HenryShare\tmp\go1.8.1.windows-amd64\go
set GOTOOLDIR=C:\Shares\HenryShare\tmp\go1.8.1.windows-amd64\go\pkg\tool\windows_amd64
set GCCGO=gccgo
set CC=gcc
set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0
set CXX=g++
set CGO_ENABLED=1
set PKG_CONFIG=pkg-config
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2

@bradfitz

This comment has been minimized.

Member

bradfitz commented Apr 19, 2017

Is the signal handling relevant?

These commented-out lines definitely aren't relevant:

			// fmt.Fprintf(os.Stdout, "%s", str)
			// fmt.Fprintf(os.Stderr, "%s", str)

Please delete everything that's not applicable to the bug report.

@hleong25

This comment has been minimized.

hleong25 commented Apr 19, 2017

I have removed the signal handler and irrelevant comments.

https://play.golang.org/p/TDQg0FmfEt

@bradfitz

This comment has been minimized.

Member

bradfitz commented Apr 19, 2017

Can you reproduce on Linux, or only on Windows?

When it gets hung and you do a goroutine dump (SIGQUIT on Unix or runtime.Stack(buf, true) in SIGINT or http on Windows), what do you see the goroutines stuck doing?

@hleong25

This comment has been minimized.

hleong25 commented Apr 19, 2017

So far, I cannot reproduce in linux.

How do i do a "goroutine dump"? I build the binary and run it. I don't have a debugger attached.

I did use attach dlv before and looked through all threads and did a backtrace, but nothing seemed weird.

@bradfitz

This comment has been minimized.

Member

bradfitz commented Apr 19, 2017

See my comment. Wire up SIGINT to do something like:

      buf := make([]byte, 1<<20)
      buf = buf[:runtime.Stack(buf, true)]
      println(string(buf))

On Linux you can just send SIGQUIT (Control-) to get a goroutine dump, but I don't think you can SIGQUIT on Windows, so you'll need to write that code above.

@hleong25

This comment has been minimized.

hleong25 commented Apr 19, 2017

PS C:\Shares\HenryShare\tmp> .\singlesource.exe --port=7100
2017/04/19 13:28:40 Executing C:\Shares\HenryShare\tmp\singlesource.exe with [--plugin=true --port=7101]
2017/04/19 13:28:40 setting up reverse proxy
2017/04/19 13:28:40 Binding server at :7100
2017/04/19 13:28:40 New process id: 2404
2017/04/19 13:28:40 [plugin stdout] 2017/04/19 13:28:40 Binding server at :7101
2017/04/19 13:28:44 [plugin stdout] 2017/04/19 13:28:44 greetings[7101]:1
2017/04/19 13:28:44 [plugin stdout] 2017/04/19 13:28:44 greetings[7101]:2
2017/04/19 13:28:44 [plugin stdout] 2017/04/19 13:28:44 greetings[7101]:3
2017/04/19 13:28:44 [plugin stdout] 2017/04/19 13:28:44 greetings[7101]:4
2017/04/19 13:28:45 [plugin stdout] 2017/04/19 13:28:45 greetings[7101]:5
2017/04/19 13:28:45 [plugin stdout] 2017/04/19 13:28:45 greetings[7101]:6
2017/04/19 13:28:45 [plugin stdout] 2017/04/19 13:28:45 greetings[7101]:7
2017/04/19 13:28:45 [plugin stdout] 2017/04/19 13:28:45 greetings[7101]:8
2017/04/19 13:28:45 [plugin stdout] 2017/04/19 13:28:45 greetings[7101]:9
2017/04/19 13:28:49 Caught SIG interrupt
goroutine 6 [running]:
main.init.2.func1(0xc042036360)
/home/user/tmp/github/reverse-proxy-test/src/henryleong.com/singlesource/main.go:41 +0xf5
created by main.init.2
/home/user/tmp/github/reverse-proxy-test/src/henryleong.com/singlesource/main.go:47 +0xbc

goroutine 1 [chan receive]:
main.main()
/home/user/tmp/github/reverse-proxy-test/src/henryleong.com/singlesource/main.go:72 +0xd2

goroutine 5 [syscall]:
os/signal.signal_recv(0x76dac0)
/opt/emc/apps/golang/go/src/runtime/sigqueue.go:116 +0x15e
os/signal.loop()
/opt/emc/apps/golang/go/src/os/signal/signal_unix.go:22 +0x29
created by os/signal.init.1
/opt/emc/apps/golang/go/src/os/signal/signal_unix.go:28 +0x48

goroutine 7 [IO wait]:
net.runtime_pollWait(0x27f0f00, 0x72, 0xc0420d4458)
/opt/emc/apps/golang/go/src/runtime/netpoll.go:160 +0x60
net.(*pollDesc).wait(0xc04210a170, 0x72, 0xc0420d4458, 0xc0420bba90)
/opt/emc/apps/golang/go/src/net/fd_poll_runtime.go:73 +0x3f
net.(*ioSrv).ExecIO(0xc042108000, 0xc04210a060, 0x67055d, 0x8, 0xc0420d8520, 0xc04210a480, 0x0, 0x0)
/opt/emc/apps/golang/go/src/net/fd_windows.go:171 +0x183
net.(*netFD).acceptOne(0xc04210a000, 0xc0421121c0, 0x2, 0x2, 0xc04210a060, 0xc042072820, 0x0, 0x0)
/opt/emc/apps/golang/go/src/net/fd_windows.go:529 +0x1f8
net.(*netFD).accept(0xc04210a000, 0x0, 0x0, 0x0)
/opt/emc/apps/golang/go/src/net/fd_windows.go:559 +0x131
net.(*TCPListener).accept(0xc042108010, 0x29e8d60800, 0x0, 0x0)
/opt/emc/apps/golang/go/src/net/tcpsock_posix.go:132 +0x35
net.(*TCPListener).AcceptTCP(0xc042108010, 0xc0420bbd80, 0xc0420bbd88, 0xc0420bbd78)
/opt/emc/apps/golang/go/src/net/tcpsock.go:209 +0x50
net/http.tcpKeepAliveListener.Accept(0xc042108010, 0x690ab8, 0xc0420da300, 0x76e980, 0xc0420dc0f0)
/opt/emc/apps/golang/go/src/net/http/server.go:2608 +0x36
net/http.(*Server).Serve(0xc0420da080, 0x76e540, 0xc042108010, 0x0, 0x0)
/opt/emc/apps/golang/go/src/net/http/server.go:2273 +0x1d5
net/http.(*Server).ListenAndServe(0xc0420da080, 0xc0420da080, 0x0)
/opt/emc/apps/golang/go/src/net/http/server.go:2219 +0xbb
net/http.ListenAndServe(0xc0420d4020, 0x5, 0x0, 0x0, 0x1, 0xc0420d4020)
/opt/emc/apps/golang/go/src/net/http/server.go:2351 +0xa7
main.startServer(0x1bbc)
/home/user/tmp/github/reverse-proxy-test/src/henryleong.com/singlesource/main.go:143 +0x254
created by main.main
/home/user/tmp/github/reverse-proxy-test/src/henryleong.com/singlesource/main.go:56 +0x9f

goroutine 8 [semacquire]:
sync.runtime_notifyListWait(0xc04200e1c0, 0xa)
/opt/emc/apps/golang/go/src/runtime/sema.go:267 +0x130
sync.(*Cond).Wait(0xc04200e1b0)
/opt/emc/apps/golang/go/src/sync/cond.go:57 +0x87
io.(*pipe).read(0xc04200e180, 0xc0420d0000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/opt/emc/apps/golang/go/src/io/pipe.go:47 +0x109
io.(*PipeReader).Read(0xc042022028, 0xc0420d0000, 0x1000, 0x1000, 0x0, 0xc0420b5d40, 0x4d9340)
/opt/emc/apps/golang/go/src/io/pipe.go:129 +0x53
bufio.(*Reader).fill(0xc0420b5ec8)
/opt/emc/apps/golang/go/src/bufio/bufio.go:97 +0x113
bufio.(*Reader).ReadSlice(0xc0420b5ec8, 0xc04202e00a, 0x4a, 0x70, 0x4a, 0x0, 0x0)
/opt/emc/apps/golang/go/src/bufio/bufio.go:330 +0xbc
bufio.(*Reader).ReadBytes(0xc0420b5ec8, 0xa, 0xc0420b5ea8, 0x2, 0x2, 0x26, 0x0)
/opt/emc/apps/golang/go/src/bufio/bufio.go:408 +0x6d
main.readPipe(0x670172, 0x6, 0xc042022028)
/home/user/tmp/github/reverse-proxy-test/src/henryleong.com/singlesource/main.go:104 +0xb1
created by main.startPlugin
/home/user/tmp/github/reverse-proxy-test/src/henryleong.com/singlesource/main.go:89 +0x4cb

goroutine 9 [semacquire]:
sync.runtime_notifyListWait(0xc04200e280, 0x0)
/opt/emc/apps/golang/go/src/runtime/sema.go:267 +0x130
sync.(*Cond).Wait(0xc04200e270)
/opt/emc/apps/golang/go/src/sync/cond.go:57 +0x87
io.(*pipe).read(0xc04200e240, 0xc0420d1000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/opt/emc/apps/golang/go/src/io/pipe.go:47 +0x109
io.(*PipeReader).Read(0xc042022038, 0xc0420d1000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/opt/emc/apps/golang/go/src/io/pipe.go:129 +0x53
bufio.(*Reader).fill(0xc0420b7ec8)
/opt/emc/apps/golang/go/src/bufio/bufio.go:97 +0x113
bufio.(*Reader).ReadSlice(0xc0420b7ec8, 0xa, 0x0, 0x100000000000000, 0x0, 0x1000, 0xc0420d1000)
/opt/emc/apps/golang/go/src/bufio/bufio.go:330 +0xbc
bufio.(*Reader).ReadBytes(0xc0420b7ec8, 0x100a, 0x1000, 0xc0420d1000, 0x1000, 0x1000, 0x0)
/opt/emc/apps/golang/go/src/bufio/bufio.go:408 +0x6d
main.readPipe(0x67016c, 0x6, 0xc042022038)
/home/user/tmp/github/reverse-proxy-test/src/henryleong.com/singlesource/main.go:104 +0xb1
created by main.startPlugin
/home/user/tmp/github/reverse-proxy-test/src/henryleong.com/singlesource/main.go:93 +0x5e4

goroutine 10 [syscall, locked to thread]:
syscall.Syscall6(0x7fd90832e60, 0x5, 0x150, 0xc0420f2000, 0x8000, 0xc0420efd34, 0x0, 0x0, 0x42e52f, 0x691040, ...)
/opt/emc/apps/golang/go/src/runtime/syscall_windows.go:174 +0x6b
syscall.ReadFile(0x150, 0xc0420f2000, 0x8000, 0x8000, 0xc0420efd34, 0x0, 0x451df0, 0xc0420efd60)
/opt/emc/apps/golang/go/src/syscall/zsyscall_windows.go:286 +0xe6
syscall.Read(0x150, 0xc0420f2000, 0x8000, 0x8000, 0xc0420efdb8, 0x46faa5, 0xc04200e188)
/opt/emc/apps/golang/go/src/syscall/syscall_windows.go:300 +0x75
os.(*File).read(0xc042022058, 0xc0420f2000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
/opt/emc/apps/golang/go/src/os/file_windows.go:319 +0x125
os.(*File).Read(0xc042022058, 0xc0420f2000, 0x8000, 0x8000, 0x26, 0x0, 0x0)
/opt/emc/apps/golang/go/src/os/file.go:101 +0x60
io.copyBuffer(0x76a840, 0xc042022030, 0x76b080, 0xc042022058, 0xc0420f2000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
/opt/emc/apps/golang/go/src/io/io.go:390 +0x14e
io.Copy(0x76a840, 0xc042022030, 0x76b080, 0xc042022058, 0x0, 0x0, 0x0)
/opt/emc/apps/golang/go/src/io/io.go:360 +0x6f
os/exec.(*Cmd).writerDescriptor.func1(0x0, 0x0)
/opt/emc/apps/golang/go/src/os/exec/exec.go:253 +0x54
os/exec.(*Cmd).Start.func1(0xc04206c6e0, 0xc0420aee80)
/opt/emc/apps/golang/go/src/os/exec/exec.go:370 +0x2e
created by os/exec.(*Cmd).Start
/opt/emc/apps/golang/go/src/os/exec/exec.go:371 +0x558

goroutine 11 [syscall, locked to thread]:
syscall.Syscall6(0x7fd90832e60, 0x5, 0x158, 0xc0420fc000, 0x8000, 0xc0420f1d34, 0x0, 0x0, 0x1, 0x1, ...)
/opt/emc/apps/golang/go/src/runtime/syscall_windows.go:174 +0x6b
syscall.ReadFile(0x158, 0xc0420fc000, 0x8000, 0x8000, 0xc0420f1d34, 0x0, 0x451df0, 0xc0420f1d60)
/opt/emc/apps/golang/go/src/syscall/zsyscall_windows.go:286 +0xe6
syscall.Read(0x158, 0xc0420fc000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
/opt/emc/apps/golang/go/src/syscall/syscall_windows.go:300 +0x75
os.(*File).read(0xc042022070, 0xc0420fc000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
/opt/emc/apps/golang/go/src/os/file_windows.go:319 +0x125
os.(*File).Read(0xc042022070, 0xc0420fc000, 0x8000, 0x8000, 0x8000, 0x8000, 0x0)
/opt/emc/apps/golang/go/src/os/file.go:101 +0x60
io.copyBuffer(0x76a840, 0xc042022040, 0x76b080, 0xc042022070, 0xc0420fc000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
/opt/emc/apps/golang/go/src/io/io.go:390 +0x14e
io.Copy(0x76a840, 0xc042022040, 0x76b080, 0xc042022070, 0x0, 0x0, 0x0)
/opt/emc/apps/golang/go/src/io/io.go:360 +0x6f
os/exec.(*Cmd).writerDescriptor.func1(0x0, 0x0)
/opt/emc/apps/golang/go/src/os/exec/exec.go:253 +0x54
os/exec.(*Cmd).Start.func1(0xc04206c6e0, 0xc0420aeec0)
/opt/emc/apps/golang/go/src/os/exec/exec.go:370 +0x2e
created by os/exec.(*Cmd).Start
/opt/emc/apps/golang/go/src/os/exec/exec.go:371 +0x558

goroutine 16 [IO wait]:
net.runtime_pollWait(0x27f0cc0, 0x72, 0xc0420be3f8)
/opt/emc/apps/golang/go/src/runtime/netpoll.go:160 +0x60
net.(*pollDesc).wait(0xc042132170, 0x72, 0xc0420be3f8, 0xc0421298d8)
/opt/emc/apps/golang/go/src/net/fd_poll_runtime.go:73 +0x3f
net.(*ioSrv).ExecIO(0xc042108000, 0xc042132060, 0x6703a7, 0x7, 0x690948, 0xc042129a30, 0x406011, 0xc0420b2020)
/opt/emc/apps/golang/go/src/net/fd_windows.go:171 +0x183
net.(*netFD).Read(0xc042132000, 0xc042127000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/opt/emc/apps/golang/go/src/net/fd_windows.go:426 +0x14a
net.(*conn).Read(0xc042022088, 0xc042127000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/opt/emc/apps/golang/go/src/net/net.go:173 +0x77
net/http.(*persistConn).Read(0xc042000800, 0xc042127000, 0x1000, 0x1000, 0x4c0037, 0xc042129b48, 0x40524d)
/opt/emc/apps/golang/go/src/net/http/transport.go:1261 +0x15b
bufio.(*Reader).fill(0xc0420371a0)
/opt/emc/apps/golang/go/src/bufio/bufio.go:97 +0x113
bufio.(*Reader).Peek(0xc0420371a0, 0x1, 0xc042129bad, 0x1, 0x0, 0xc042037740, 0x0)
/opt/emc/apps/golang/go/src/bufio/bufio.go:129 +0x69
net/http.(*persistConn).readLoop(0xc042000800)
/opt/emc/apps/golang/go/src/net/http/transport.go:1418 +0x1a8
created by net/http.(*Transport).dialConn
/opt/emc/apps/golang/go/src/net/http/transport.go:1062 +0x4f0

goroutine 33 [select]:
net/http.(*persistConn).writeLoop(0xc042000800)
/opt/emc/apps/golang/go/src/net/http/transport.go:1646 +0x3c4
created by net/http.(*Transport).dialConn
/opt/emc/apps/golang/go/src/net/http/transport.go:1063 +0x515
2017/04/19 13:28:49 [plugin stdout] 2017/04/19 13:28:49 Caught SIG interrupt
2017/04/19 13:28:49 [plugin stdout] goroutine 19 [running]:
2017/04/19 13:28:49 [plugin stdout] main.init.2.func1(0xc042036300)
2017/04/19 13:28:49 [plugin stdout] /home/user/tmp/github/reverse-proxy-test/src/henryleong.com/singlesource/main.go
:41 +0xf5
2017/04/19 13:28:49 [plugin stdout] created by main.init.2
2017/04/19 13:28:49 [plugin stdout] /home/user/tmp/github/reverse-proxy-test/src/henryleong.com/singlesource/main.go
:47 +0xbc
2017/04/19 13:28:49 [plugin stdout]
2017/04/19 13:28:49 [plugin stdout] goroutine 1 [chan receive]:
2017/04/19 13:28:49 [plugin stdout] main.main()
2017/04/19 13:28:49 [plugin stdout] /home/user/tmp/github/reverse-proxy-test/src/henryleong.com/singlesource/main.go
:72 +0xd2
2017/04/19 13:28:49 [plugin stdout]
2017/04/19 13:28:49 [plugin stdout] goroutine 18 [syscall]:
2017/04/19 13:28:49 [plugin stdout] os/signal.signal_recv(0x76dac0)
2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/runtime/sigqueue.go:116 +0x15e
2017/04/19 13:28:49 [plugin stdout] os/signal.loop()
2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/os/signal/signal_unix.go:22 +0x29
2017/04/19 13:28:49 [plugin stdout] created by os/signal.init.1
2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/os/signal/signal_unix.go:28 +0x48
2017/04/19 13:28:49 [plugin stdout]
2017/04/19 13:28:49 [plugin stdout] goroutine 20 [IO wait]:
2017/04/19 13:28:49 [plugin stdout] net.runtime_pollWait(0x3a5088, 0x72, 0xc042038f60)
2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/runtime/netpoll.go:160 +0x60
2017/04/19 13:28:49 [plugin stdout] net.(*pollDesc).wait(0xc0420d2170, 0x72, 0xc042038f60, 0xc0420cda90)
2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/net/fd_poll_runtime.go:73 +0x3f
2017/04/19 13:28:49 [plugin stdout] net.(*ioSrv).ExecIO(0xc04206e020, 0xc0420d2060, 0x67055d, 0x8, 0xc0420bece0, 0xc0420
d2300, 0x0, 0x0)
2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/net/fd_windows.go:171 +0x183
2017/04/19 13:28:49 [plugin stdout] net.(*netFD).acceptOne(0xc0420d2000, 0xc0420d40e0, 0x2, 0x2, 0xc0420d2060, 0xc042035
a00, 0x0, 0x0)
2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/net/fd_windows.go:529 +0x1f8
2017/04/19 13:28:49 [plugin stdout] net.(*netFD).accept(0xc0420d2000, 0x0, 0x0, 0x0)
2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/net/fd_windows.go:559 +0x131
2017/04/19 13:28:49 [plugin stdout] net.(*TCPListener).accept(0xc04206e030, 0x29e8d60800, 0x0, 0x0)
2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/net/tcpsock_posix.go:132 +0x35
2017/04/19 13:28:49 [plugin stdout] net.(*TCPListener).AcceptTCP(0xc04206e030, 0xc0420cdd80, 0xc0420cdd88, 0xc0420cdd78)

2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/net/tcpsock.go:209 +0x50
2017/04/19 13:28:49 [plugin stdout] net/http.tcpKeepAliveListener.Accept(0xc04206e030, 0x690ab8, 0xc042074280, 0x76e980,
0xc04207ea80)
2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/net/http/server.go:2608 +0x36
2017/04/19 13:28:49 [plugin stdout] net/http.(*Server).Serve(0xc042074200, 0x76e540, 0xc04206e030, 0x0, 0x0)
2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/net/http/server.go:2273 +0x1d5
2017/04/19 13:28:49 [plugin stdout] net/http.(*Server).ListenAndServe(0xc042074200, 0xc042074200, 0x0)
2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/net/http/server.go:2219 +0xbb
2017/04/19 13:28:49 [plugin stdout] net/http.ListenAndServe(0xc042038e90, 0x5, 0x0, 0x0, 0x1, 0xc042038e90)
2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/net/http/server.go:2351 +0xa7
2017/04/19 13:28:49 [plugin stdout] main.startServer(0x1bbd)
2017/04/19 13:28:49 [plugin stdout] /home/user/tmp/github/reverse-proxy-test/src/henryleong.com/singlesource/main.go
:143 +0x254
2017/04/19 13:28:49 [plugin stdout] created by main.main
2017/04/19 13:28:49 [plugin stdout] /home/user/tmp/github/reverse-proxy-test/src/henryleong.com/singlesource/main.go
:56 +0x9f
2017/04/19 13:28:49 [plugin stdout]
2017/04/19 13:28:49 [plugin stdout] goroutine 21 [IO wait]:
2017/04/19 13:28:49 [plugin stdout] net.runtime_pollWait(0x3a4fc8, 0x72, 0xc0420d63c8)
2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/runtime/netpoll.go:160 +0x60
2017/04/19 13:28:49 [plugin stdout] net.(*pollDesc).wait(0xc0420d22f0, 0x72, 0xc0420d63c8, 0xc0420296a8)
2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/net/fd_poll_runtime.go:73 +0x3f
2017/04/19 13:28:49 [plugin stdout] net.(*ioSrv).ExecIO(0xc04206e020, 0xc0420d21e0, 0x6703a7, 0x7, 0x690948, 0x0, 0x0, 0
xc0420298b8)
2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/net/fd_windows.go:171 +0x183
2017/04/19 13:28:49 [plugin stdout] net.(*netFD).Read(0xc0420d2180, 0xc0420e0000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/net/fd_windows.go:426 +0x14a
2017/04/19 13:28:49 [plugin stdout] net.(*conn).Read(0xc04206e038, 0xc0420e0000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/net/net.go:173 +0x77
2017/04/19 13:28:49 [plugin stdout] net/http.(*connReader).Read(0xc0420da000, 0xc0420e0000, 0x1000, 0x1000, 0x789828, 0x
0, 0x42029900)
2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/net/http/server.go:586 +0x14b
2017/04/19 13:28:49 [plugin stdout] bufio.(*Reader).fill(0xc0420de000)
2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/bufio/bufio.go:97 +0x113
2017/04/19 13:28:49 [plugin stdout] bufio.(*Reader).ReadSlice(0xc0420de000, 0xa, 0x0, 0x1e, 0x6, 0x0, 0x0)
2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/bufio/bufio.go:330 +0xbc
2017/04/19 13:28:49 [plugin stdout] bufio.(*Reader).ReadLine(0xc0420de000, 0xc0420e4870, 0xf0, 0xf0, 0x6665c0, 0x51923a,
0x788298)
2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/bufio/bufio.go:359 +0x3e
2017/04/19 13:28:49 [plugin stdout] net/textproto.(*Reader).readLineSlice(0xc0420e2030, 0xc042029a88, 0xc042029a88, 0x41
10ef, 0xf0, 0x6665c0)
2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/net/textproto/reader.go:55 +0x65
2017/04/19 13:28:49 [plugin stdout] net/textproto.(*Reader).ReadLine(0xc0420e2030, 0xc0420e4870, 0xc, 0x0, 0x42bd03)
2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/net/textproto/reader.go:36 +0x36
2017/04/19 13:28:49 [plugin stdout] net/http.readRequest(0xc0420de000, 0xc0420e1000, 0xc0420e4870, 0x0, 0x0)
2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/net/http/request.go:793 +0xac
2017/04/19 13:28:49 [plugin stdout] net/http.(*conn).readRequest(0xc042074280, 0x76e8c0, 0xc0420d80c0, 0x0, 0x0, 0x0)
2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/net/http/server.go:765 +0x114
2017/04/19 13:28:49 [plugin stdout] net/http.(*conn).serve(0xc042074280, 0x76e8c0, 0xc0420d80c0)
2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/net/http/server.go:1532 +0x3da
2017/04/19 13:28:49 [plugin stdout] created by net/http.(*Server).Serve
2017/04/19 13:28:49 [plugin stdout] /opt/emc/apps/golang/go/src/net/http/server.go:2293 +0x454
2017/04/19 13:28:49 Killing process id: 2404
2017/04/19 13:28:49 http: proxy error: read tcp 127.0.0.1:61187->127.0.0.1:7101: wsarecv: An existing connection was for
cibly closed by the remote host.
2017/04/19 13:28:49 Kill err: TerminateProcess: Access is denied.
PS C:\Shares\HenryShare\tmp>

@hleong25

This comment has been minimized.

hleong25 commented May 8, 2017

Hello, is there an update?

@bradfitz

This comment has been minimized.

Member

bradfitz commented May 8, 2017

Any update would be posted here. There is no update, sorry.

@broady

This comment has been minimized.

Member

broady commented Oct 12, 2018

I think this might be #28168.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment