Skip to content

Getting a segfault on a bad wifi connection #385

@ohnorobo

Description

@ohnorobo

I was having a wifi issue (my outline connection had stalled silently) where all my connection were hanging. When I tried to run essentially (simplified)

ssURL = "ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTprSzdEdHQ0MkJLOE9hRjBKYjdpWGFK@1.1.1.1:9953/?outline=1"
config, err := configurl.ParseConfig(ssURL)
ctx := context.Background()
streamDialer, err := providers.NewStreamDialer(ctx, config.URL.String())
testAddr := net.JoinHostPort("www.rferl.org", "443")
ctx, cancel := context.WithTimeout(ctx, f.TestTimeout)
defer cancel()
testConn, err := dialer.DialStream(ctx, testAddr)

(in reality I was calling
go run -C ./x/examples/smart-proxy/ . -v -localAddr=localhost:1080 --transport="" --domain www.rferl.org --config=/Users/2385180/Projects/outline-sdk/x/examples/smart-proxy/config_proxy_only.yaml against 8149786 )

I got an unexpected segfault.

Expected

I should get a timeout error, or some kind of failure (the server doesn't exist anyway)

Actual

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x2 addr=0x18 pc=0x1029bd890]

goroutine 41 [running]:
crypto/tls.(*Conn).handshakeContext.func2()
	/usr/local/go/src/crypto/tls/conn.go:1547 +0xa0
created by crypto/tls.(*Conn).handshakeContext in goroutine 1
	/usr/local/go/src/crypto/tls/conn.go:1543 +0x1e8
exit status 2

I'm not certain if it's an error in StreamDialer, or actually in the golang tls code.

I'm not going to look more into replicating this now, but maybe later.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions