cronet-go icon indicating copy to clipboard operation
cronet-go copied to clipboard

Panic when CheckRedirect is false

Open djsousuo opened this issue 3 years ago • 1 comments

Run at Linux docker image golang:1.18.3

cmd/build/a.go

package main

import (
	"github.com/sagernet/cronet-go"
	"net/http"
	"os"
	
)

func main() {
	client := &http.Client{
		Transport: &cronet.RoundTripper{
			CheckRedirect: func(newLocationUrl string) bool {
				return false
			},
		},
	}
	response, _ := client.Get("https://httpbin.org/status/302")
	response.Write(os.Stderr)
	response.Body.Close()

}

Error stack after running:

root@80b5520f4a27:/code/cronet-go# 
root@80b5520f4a27:/code/cronet-go# 
root@80b5520f4a27:/code/cronet-go# ./main  cmd/build/a.go
HOSTNAME=80b5520f4a27
PWD=/code/cronet-go
HOME=/root
GOLANG_VERSION=1.18.3
TERM=xterm
SHLVL=1
PATH=/code/cronet-go/llvm/bin:/go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
GOPATH=/go
OLDPWD=/go
_=./main
CGO_LDFLAGS=-pie -I /code/cronet-go --sysroot=/code/cronet-go/sysroot -fuse-ld=lld -m64
CGO_CFLAGS=-I /code/cronet-go --sysroot=/code/cronet-go/sysroot -m64 -march=x86-64 -msse3
CC=clang
CGO_ENABLED=1
CGO_LDFLAGS_ALLOW=.*
root@80b5520f4a27:/code/cronet-go# 
root@80b5520f4a27:/code/cronet-go# 
root@80b5520f4a27:/code/cronet-go# ./a 
SIGTRAP: trace trap
PC=0x7f2f61201f03 m=5 sigcode=128
signal arrived during cgo execution

goroutine 1 [syscall]:
runtime.cgocall(0x55641c3e1740, 0xc000119a88)
	/usr/local/go/src/runtime/cgocall.go:157 +0x5c fp=0xc000119a60 sp=0xc000119a28 pc=0x55641c1c25dc
github.com/sagernet/cronet-go._Cfunc_Cronet_UrlRequest_Read(0x16c8002382a0, 0x16c80023e070)
	_cgo_gotypes.go:2553 +0x50 fp=0xc000119a88 sp=0xc000119a60 pc=0x55641c3d8810
github.com/sagernet/cronet-go.URLRequest.Read.func1({0xc000119af0?}, {0xc000119ae8?})
	/code/cronet-go/url_request.go:73 +0x70 fp=0xc000119ac8 sp=0xc000119a88 pc=0x55641c3dc490
github.com/sagernet/cronet-go.URLRequest.Read({0x0?}, {0xc000152000?})
	/code/cronet-go/url_request.go:73 +0x19 fp=0xc000119ae8 sp=0xc000119ac8 pc=0x55641c3dc3d9
github.com/sagernet/cronet-go.(*urlResponse).Read(0xc00014c000, {0xc000152000, 0x800, 0x2000})
	/code/cronet-go/transport.go:184 +0x128 fp=0xc000119b78 sp=0xc000119ae8 pc=0x55641c3d5588
io.(*LimitedReader).Read(0xc00000e138, {0xc000152000?, 0x1d?, 0xc000119c70?})
	/usr/local/go/src/io/io.go:476 +0x45 fp=0xc000119ba8 sp=0xc000119b78 pc=0x55641c240ea5
io.discard.ReadFrom({}, {0x55641c44a768, 0xc00000e138})
	/usr/local/go/src/io/io.go:610 +0x72 fp=0xc000119c00 sp=0xc000119ba8 pc=0x55641c241072
io.(*discard).ReadFrom(0x641c4073e0?, {0x55641c44a768?, 0xc00000e138?})
	<autogenerated>:1 +0x37 fp=0xc000119c20 sp=0xc000119c00 pc=0x55641c241757
io.copyBuffer({0x55641c44af08, 0x55641c5e7700}, {0x55641c44a768, 0xc00000e138}, {0x0, 0x0, 0x0})
	/usr/local/go/src/io/io.go:412 +0x14b fp=0xc000119ca0 sp=0xc000119c20 pc=0x55641c240c8b
io.Copy(...)
	/usr/local/go/src/io/io.go:385
io.CopyN({0x55641c44af08, 0x55641c5e7700}, {0x7f2f376cb848?, 0xc00014c000}, 0x800)
	/usr/local/go/src/io/io.go:361 +0x9a fp=0xc000119cf0 sp=0xc000119ca0 pc=0x55641c240aba
net/http.(*Client).do(0xc00006edb0, 0xc00014a100)
	/usr/local/go/src/net/http/client.go:707 +0x81d fp=0xc000119ef0 sp=0xc000119cf0 pc=0x55641c39559d
net/http.(*Client).Do(...)
	/usr/local/go/src/net/http/client.go:593
net/http.(*Client).Get(0x55641c3e2f10?, {0x55641c14f29c?, 0x0?})
	/usr/local/go/src/net/http/client.go:480 +0x6a fp=0xc000119f48 sp=0xc000119ef0 pc=0x55641c394aea
main.main()
	/code/cronet-go/cmd/build/a.go:18 +0x85 fp=0xc000119f80 sp=0xc000119f48 pc=0x55641c3de105
runtime.main()
	/usr/local/go/src/runtime/proc.go:250 +0x213 fp=0xc000119fe0 sp=0xc000119f80 pc=0x55641c1f4d33
runtime.goexit()
	/usr/local/go/src/runtime/asm_amd64.s:1571 +0x1 fp=0xc000119fe8 sp=0xc000119fe0 pc=0x55641c220b61

rax    0xffffff2f
rbx    0x16c8002382a0
rcx    0x0
rdx    0x1
rdi    0x16c8002180c0
rsi    0xffffff2f
rbp    0x7f2f38706d50
rsp    0x7f2f38706d18
r8     0xc000080000
r9     0x0
r10    0x8
r11    0x10
r12    0xc0000184a0
r13    0x0
r14    0x16c8002382b0
r15    0x16c80023e070
rip    0x7f2f61201f03
rflags 0x202
cs     0x33
fs     0x0
gs     0x0
root@80b5520f4a27:/code/cronet-go# 

djsousuo avatar Aug 15 '22 12:08 djsousuo

@nekohasekai Please help to see this bug

djsousuo avatar Aug 15 '22 13:08 djsousuo