cronet-go
cronet-go copied to clipboard
Panic when CheckRedirect is false
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#
@nekohasekai Please help to see this bug