goroutine 17899 [running]: runtime/pprof.writeGoroutineStacks({0x7fd8732d2068, 0xc0000787d0}) runtime/pprof/pprof.go:703 +0x6a runtime/pprof.writeGoroutine({0x7fd8732d2068?, 0xc0000787d0?}, 0xc0000e7570?) runtime/pprof/pprof.go:692 +0x25 runtime/pprof.(*Profile).WriteTo(0xd04040?, {0x7fd8732d2068?, 0xc0000787d0?}, 0xc?) runtime/pprof/pprof.go:329 +0x146 net/http/pprof.handler.ServeHTTP({0xc00003c461, 0x9}, {0x7fd8732d2038, 0xc0000787d0}, 0xebcaa0?) net/http/pprof/pprof.go:267 +0x4a8 net/http/pprof.Index({0x7fd8732d2038?, 0xc0000787d0}, 0xc00011a200?) net/http/pprof/pprof.go:384 +0xe5 net/http.HandlerFunc.ServeHTTP(0x40d39a?, {0x7fd8732d2038?, 0xc0000787d0?}, 0xc0000e79a0?) net/http/server.go:2136 +0x29 net/http.(*ServeMux).ServeHTTP(0xcc7120?, {0x7fd8732d2038, 0xc0000787d0}, 0xc00011a200) net/http/server.go:2514 +0x142 github.com/saucelabs/forwarder.(*APIHandler).ServeHTTP(0xc0000e79c8?, {0x7fd8732d2038?, 0xc0000787d0?}, 0xd481e0?) github.com/saucelabs/forwarder/api.go:129 +0x25 github.com/saucelabs/forwarder.withMiddleware.Logger.Wrap.func2({0x7fd8732d2038, 0xc0000787d0}, 0xc00011a200) github.com/saucelabs/forwarder/middleware/logger.go:33 +0xbb net/http.HandlerFunc.ServeHTTP(0xec3b40?, {0x7fd8732d2038?, 0xc0000787d0?}, 0x4103c5?) net/http/server.go:2136 +0x29 github.com/saucelabs/forwarder.withMiddleware.(*Prometheus).Wrap.func3({0xec3b40, 0xc0000b4460}, 0xc00011a200) github.com/saucelabs/forwarder/middleware/prometheus.go:89 +0xca net/http.HandlerFunc.ServeHTTP(0x161a9e0?, {0xec3b40?, 0xc0000b4460?}, 0xc0000e7b50?) net/http/server.go:2136 +0x29 net/http.serverHandler.ServeHTTP({0xc00008f0e0?}, {0xec3b40?, 0xc0000b4460?}, 0x6?) net/http/server.go:2938 +0x8e net/http.(*conn).serve(0xc000368240, {0xec5800, 0xc00008eea0}) net/http/server.go:2009 +0x5f4 created by net/http.(*Server).Serve in goroutine 37 net/http/server.go:3086 +0x5cb goroutine 1 [semacquire, 1035627 minutes]: sync.runtime_Semacquire(0xc00036d488?) runtime/sema.go:62 +0x25 sync.(*WaitGroup).Wait(0xcdf3a0?) sync/waitgroup.go:116 +0x48 golang.org/x/sync/errgroup.(*Group).Wait(0xc00036e340) golang.org/x/sync@v0.5.0/errgroup/errgroup.go:53 +0x25 github.com/saucelabs/forwarder/runctx.(*Group).RunContext(0xc000139b50, {0xec5640, 0x161a9e0}) github.com/saucelabs/forwarder/runctx/runctx.go:73 +0x24a github.com/saucelabs/forwarder/runctx.(*Group).Run(...) github.com/saucelabs/forwarder/runctx/runctx.go:47 github.com/saucelabs/forwarder/command/run.(*command).runE(0xc00011aa00, 0xc000004600, {0x0?, 0x0?, 0x0?}) github.com/saucelabs/forwarder/command/run/run.go:263 +0x217f github.com/spf13/cobra.(*Command).execute(0xc000004600, {0x161a9e0, 0x0, 0x0}) github.com/spf13/cobra@v1.8.0/command.go:983 +0xabc github.com/spf13/cobra.(*Command).ExecuteC(0xc000004300) github.com/spf13/cobra@v1.8.0/command.go:1115 +0x3ff github.com/spf13/cobra.(*Command).Execute(0xc000139f10?) github.com/spf13/cobra@v1.8.0/command.go:1039 +0x13 main.main() github.com/saucelabs/forwarder/cmd/forwarder/main.go:22 +0xaf goroutine 33 [syscall, 1035627 minutes]: os/signal.signal_recv() runtime/sigqueue.go:152 +0x29 os/signal.loop() os/signal/signal_unix.go:23 +0x13 created by os/signal.Notify.func1.1 in goroutine 1 os/signal/signal.go:151 +0x1f goroutine 34 [select, 1035627 minutes]: os/signal.NotifyContext.func1() os/signal/signal.go:288 +0x66 created by os/signal.NotifyContext in goroutine 1 os/signal/signal.go:287 +0x165 goroutine 35 [chan receive, 1035627 minutes]: github.com/saucelabs/forwarder/runctx.(*Group).RunContext.func1() github.com/saucelabs/forwarder/runctx/runctx.go:60 +0x2f golang.org/x/sync/errgroup.(*Group).Go.func1() golang.org/x/sync@v0.5.0/errgroup/errgroup.go:75 +0x56 created by golang.org/x/sync/errgroup.(*Group).Go in goroutine 1 golang.org/x/sync@v0.5.0/errgroup/errgroup.go:72 +0x96 goroutine 36 [IO wait, 1035627 minutes]: internal/poll.runtime_pollWait(0x7fd8735b0d88, 0x72) runtime/netpoll.go:343 +0x85 internal/poll.(*pollDesc).wait(0xc0000d8500?, 0x0?, 0x0) internal/poll/fd_poll_runtime.go:84 +0x27 internal/poll.(*pollDesc).waitRead(...) internal/poll/fd_poll_runtime.go:89 internal/poll.(*FD).Accept(0xc0000d8500) internal/poll/fd_unix.go:611 +0x2ac net.(*netFD).accept(0xc0000d8500) net/fd_unix.go:172 +0x29 net.(*TCPListener).accept(0xc000378000) net/tcpsock_posix.go:152 +0x1e net.(*TCPListener).Accept(0xc000378000) net/tcpsock.go:315 +0x30 github.com/saucelabs/forwarder/internal/martian.(*Proxy).Serve(0xc00022c460, {0xec3de0?, 0xc000378000}) github.com/saucelabs/forwarder/internal/martian/proxy.go:299 +0xdb github.com/saucelabs/forwarder.(*HTTPProxy).Run(0xc0002d3500, {0xec5838?, 0xc0002fa500}) github.com/saucelabs/forwarder/http_proxy.go:591 +0x1e8 github.com/saucelabs/forwarder/runctx.(*Group).RunContext.func2() github.com/saucelabs/forwarder/runctx/runctx.go:70 +0x25 golang.org/x/sync/errgroup.(*Group).Go.func1() golang.org/x/sync@v0.5.0/errgroup/errgroup.go:75 +0x56 created by golang.org/x/sync/errgroup.(*Group).Go in goroutine 1 golang.org/x/sync@v0.5.0/errgroup/errgroup.go:72 +0x96 goroutine 37 [IO wait]: internal/poll.runtime_pollWait(0x7fd8735b0c90, 0x72) runtime/netpoll.go:343 +0x85 internal/poll.(*pollDesc).wait(0xc0000d8700?, 0x0?, 0x0) internal/poll/fd_poll_runtime.go:84 +0x27 internal/poll.(*pollDesc).waitRead(...) internal/poll/fd_poll_runtime.go:89 internal/poll.(*FD).Accept(0xc0000d8700) internal/poll/fd_unix.go:611 +0x2ac net.(*netFD).accept(0xc0000d8700) net/fd_unix.go:172 +0x29 net.(*TCPListener).accept(0xc000379960) net/tcpsock_posix.go:152 +0x1e net.(*TCPListener).Accept(0xc000379960) net/tcpsock.go:315 +0x30 net/http.(*Server).Serve(0xc000324000, {0xec3de0, 0xc000379960}) net/http/server.go:3056 +0x364 github.com/saucelabs/forwarder.(*HTTPServer).Run(0xc0003ac000, {0xec5838?, 0xc0002fa500}) github.com/saucelabs/forwarder/http_server.go:214 +0x114 github.com/saucelabs/forwarder/runctx.(*Group).RunContext.func2() github.com/saucelabs/forwarder/runctx/runctx.go:70 +0x25 golang.org/x/sync/errgroup.(*Group).Go.func1() golang.org/x/sync@v0.5.0/errgroup/errgroup.go:75 +0x56 created by golang.org/x/sync/errgroup.(*Group).Go in goroutine 1 golang.org/x/sync@v0.5.0/errgroup/errgroup.go:72 +0x96 goroutine 38 [chan receive, 1035627 minutes]: github.com/saucelabs/forwarder.(*HTTPServer).Run.func1() github.com/saucelabs/forwarder/http_server.go:205 +0x66 created by github.com/saucelabs/forwarder.(*HTTPServer).Run in goroutine 37 github.com/saucelabs/forwarder/http_server.go:202 +0xc6 goroutine 39 [chan receive, 1035627 minutes]: github.com/saucelabs/forwarder.(*HTTPProxy).Run.func1() github.com/saucelabs/forwarder/http_proxy.go:570 +0x6f created by github.com/saucelabs/forwarder.(*HTTPProxy).Run in goroutine 36 github.com/saucelabs/forwarder/http_proxy.go:567 +0xea goroutine 17901 [runnable]: net/http.(*connReader).startBackgroundRead.func2() net/http/server.go:679 runtime.goexit() runtime/asm_amd64.s:1650 +0x1 created by net/http.(*connReader).startBackgroundRead in goroutine 17899 net/http/server.go:679 +0xba