go: net/http, x/net/http2: page fails to load with http2 server push due to underflow
What version of Go are you using (go version
)?
$ go version go version go1.21.3 linux/amd64
Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (go env
)?
go env
Output
$ go env GO111MODULE='' GOARCH='amd64' GOBIN='' GOCACHE='/home/magicaltux/.cache/go-build' GOENV='/home/magicaltux/.config/go/env' GOEXE='' GOEXPERIMENT='' GOFLAGS='' GOHOSTARCH='amd64' GOHOSTOS='linux' GOINSECURE='' GOMODCACHE='/home/magicaltux/go/pkg/mod' GONOPROXY='git.atonline.com' GONOSUMDB='git.atonline.com' GOOS='linux' GOPATH='/home/magicaltux/go' GOPRIVATE='git.atonline.com' GOPROXY='https://proxy.golang.org,direct' GOROOT='/pkg/main/dev-lang.go.dev.1.21.3.linux.amd64' GOSUMDB='sum.golang.org' GOTMPDIR='' GOTOOLCHAIN='auto' GOTOOLDIR='/pkg/main/dev-lang.go.dev.1.21.3.linux.amd64/pkg/tool/linux_amd64' GOVCS='' GOVERSION='go1.21.3' GCCGO='gccgo' GOAMD64='v1' AR='ar' CC='gcc' CXX='g++' CGO_ENABLED='1' GOMOD='/home/magicaltux/projects/platform-fe/go.mod' GOWORK='' CGO_CFLAGS='-O2 -g' CGO_CPPFLAGS='' CGO_CXXFLAGS='-O2 -g' CGO_FFLAGS='-O2 -g' CGO_LDFLAGS='-O2 -g' PKG_CONFIG='pkg-config' GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build1840746337=/tmp/go-build -gno-record-gcc-switches'
What did you do?
Running a http server using http.Pusher
to push a specific resource to the brower.
We updated in emergency to go1.21.3
following the http2 fast reset issue, this caused all the sites we use to fail to load on firefox and safari until we commented the use of http.Pusher
.
I think this looks suspiciously a lot similar to https://github.com/golang/go/issues/17777
What did you expect to see?
Page should work fine.
What did you see instead?
Only the initial page loads, and somehow firefox refuses to load the rest, either remaining blank or erroring with NS_BINDING_ABORTED
. Firefox didn’t provide any useful information to debug this issue, but not using http.Pusher
fixed it.
About this issue
- Original URL
- State: closed
- Created 9 months ago
- Reactions: 1
- Comments: 19 (10 by maintainers)
Commits related to this issue
- net/http: fix underflow in http2 push After CL534295 was merged to fix a CVE it introduced an underflow when we try to decrement sc.curHandlers. There is one place that calls runHandler without incre... — committed to mauri870/go by mauri870 9 months ago
- http2: fix underflow in http2 server push After CL 534215 was merged to fix a CVE it introduced an underflow when we try to decrement sc.curHandlers in handlerDone. There is one place that calls run... — committed to mauri870/net by mauri870 9 months ago
- http2: fix underflow in http2 server push After CL 534215 was merged to fix a CVE it introduced an underflow when we try to decrement sc.curHandlers in handlerDone. The func startPush calls runHandl... — committed to golang/net by mauri870 9 months ago
- http2: add test for push promise accounting underflow Verify that repeated requests resulting in a PUSH_PROMISE result all complete successfully, validating the fix in CL 535595. For golang/go#63511... — committed to golang/net by neild 8 months ago
- [internal-branch.go1.20-vendor] http2: fix underflow in http2 server push After CL 534215 was merged to fix a CVE it introduced an underflow when we try to decrement sc.curHandlers in handlerDone. T... — committed to golang/net by mauri870 9 months ago
- [internal-branch.go1.21-vendor] http2: fix underflow in http2 server push After CL 534215 was merged to fix a CVE it introduced an underflow when we try to decrement sc.curHandlers in handlerDone. T... — committed to golang/net by mauri870 9 months ago
- [release-branch.go1.20] net/http: pull http2 underflow fix from x/net/http2 After CL 534295 was merged to fix a CVE it introduced an underflow when we try to decrement sc.curHandlers in handlerDone. ... — committed to golang/go by mauri870 8 months ago
- [release-branch.go1.21] net/http: pull http2 underflow fix from x/net/http2 After CL 534295 was merged to fix a CVE it introduced an underflow when we try to decrement sc.curHandlers in handlerDone. ... — committed to golang/go by mauri870 8 months ago
Also needs a 1.20 backport.
@seankhliao could you please update the issue title to smth akin to
net/http, x/net/http2: page fails to load with http2 server push due to underflow
. Thanks