go-socket.io
go-socket.io copied to clipboard
[BUG] runtime error: invalid memory address or nil pointer dereference
Describe the bug I tried to test this using the code in default-server and asset directories, but every time I open index.html the go server crashes
To Reproduce Make a request to localhost:8000/socket.io/
Expected behavior The client should connect without the server crashing
Environment (please complete the following information):
- Go version: go1.14.2
- Server version: 1.4.3
- Client version: 2.3.0
Additional context Here's the entire error output:
net/http.(*conn).serve.func1(0xa908720)
/usr/local/go/src/net/http/server.go:1772 +0xed
panic(0x839ca80, 0x86d2c40)
/usr/local/go/src/runtime/panic.go:975 +0x373
runtime/internal/atomic.Cas64(0xaa1a06c, 0x0, 0x0, 0x1, 0x0)
/usr/local/go/src/runtime/internal/atomic/asm_386.s:60 +0xc
github.com/googollee/go-engine.io/payload.(*Payload).FlushOut(0xaa1a000, 0x846d470, 0xaa12000, 0x0, 0x0)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/payload/payload.go:129 +0x121
github.com/googollee/go-engine.io/transport/polling.(*serverConn).ServeHTTP(0xaa1c000, 0x8470b60, 0xaa12000, 0xa90e280)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/transport/polling/server.go:80 +0x1ce
github.com/googollee/go-engine%2eio.(*session).serveHTTP(0xaa1c070, 0x8470b60, 0xaa12000, 0xa90e280)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/session.go:209 +0x9f
github.com/googollee/go-engine%2eio.(*Server).ServeHTTP(0xa86a120, 0x8470b60, 0xaa12000, 0xa90e280)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/server.go:195 +0x372
github.com/googollee/go-socket%2eio.(*Server).ServeHTTP(0xa8106c0, 0x8470b60, 0xaa12000, 0xa90e280)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/server.go:33 +0x3c
net/http.(*ServeMux).ServeHTTP(0x86db320, 0x8470b60, 0xaa12000, 0xa90e280)
/usr/local/go/src/net/http/server.go:2387 +0x158
net/http.serverHandler.ServeHTTP(0xa900900, 0x8470b60, 0xaa12000, 0xa90e280)
/usr/local/go/src/net/http/server.go:2807 +0x7f
net/http.(*conn).serve(0xa908720, 0x84711c0, 0xa85ef00)
/usr/local/go/src/net/http/server.go:1895 +0x7a4
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:2933 +0x2b9
2020/07/06 12:52:18 http: panic serving [::1]:53302: runtime error: invalid memory address or nil pointer dereference
goroutine 20 [running]:
net/http.(*conn).serve.func1(0xaa34000)
/usr/local/go/src/net/http/server.go:1772 +0xed
panic(0x839ca80, 0x86d2c40)
/usr/local/go/src/runtime/panic.go:975 +0x373
runtime/internal/atomic.Cas64(0xaa1a13c, 0x0, 0x0, 0x1, 0x0)
/usr/local/go/src/runtime/internal/atomic/asm_386.s:60 +0xc
github.com/googollee/go-engine.io/payload.(*Payload).FlushOut(0xaa1a0d0, 0x846d470, 0xaa12120, 0x0, 0x0)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/payload/payload.go:129 +0x121
github.com/googollee/go-engine.io/transport/polling.(*serverConn).ServeHTTP(0xaa1c150, 0x8470b60, 0xaa12120, 0xaa36000)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/transport/polling/server.go:80 +0x1ce
github.com/googollee/go-engine%2eio.(*session).serveHTTP(0xaa1c1c0, 0x8470b60, 0xaa12120, 0xaa36000)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/session.go:209 +0x9f
github.com/googollee/go-engine%2eio.(*Server).ServeHTTP(0xa86a120, 0x8470b60, 0xaa12120, 0xaa36000)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/server.go:195 +0x372
github.com/googollee/go-socket%2eio.(*Server).ServeHTTP(0xa8106c0, 0x8470b60, 0xaa12120, 0xaa36000)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/server.go:33 +0x3c
net/http.(*ServeMux).ServeHTTP(0x86db320, 0x8470b60, 0xaa12120, 0xaa36000)
/usr/local/go/src/net/http/server.go:2387 +0x158
net/http.serverHandler.ServeHTTP(0xa900900, 0x8470b60, 0xaa12120, 0xaa36000)
/usr/local/go/src/net/http/server.go:2807 +0x7f
net/http.(*conn).serve(0xaa34000, 0x84711c0, 0xaa06200)
/usr/local/go/src/net/http/server.go:1895 +0x7a4
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:2933 +0x2b9
2020/07/06 12:52:19 http: panic serving [::1]:53312: runtime error: invalid memory address or nil pointer dereference
goroutine 34 [running]:
net/http.(*conn).serve.func1(0xa898000)
/usr/local/go/src/net/http/server.go:1772 +0xed
panic(0x839ca80, 0x86d2c40)
/usr/local/go/src/runtime/panic.go:975 +0x373
runtime/internal/atomic.Cas64(0xaa1a20c, 0x0, 0x0, 0x1, 0x0)
/usr/local/go/src/runtime/internal/atomic/asm_386.s:60 +0xc
github.com/googollee/go-engine.io/payload.(*Payload).FlushOut(0xaa1a1a0, 0x846d470, 0xaa121b0, 0x0, 0x0)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/payload/payload.go:129 +0x121
github.com/googollee/go-engine.io/transport/polling.(*serverConn).ServeHTTP(0xaa1c230, 0x8470b60, 0xaa121b0, 0xa8a8000)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/transport/polling/server.go:80 +0x1ce
github.com/googollee/go-engine%2eio.(*session).serveHTTP(0xaa1c2a0, 0x8470b60, 0xaa121b0, 0xa8a8000)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/session.go:209 +0x9f
github.com/googollee/go-engine%2eio.(*Server).ServeHTTP(0xa86a120, 0x8470b60, 0xaa121b0, 0xa8a8000)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/server.go:195 +0x372
github.com/googollee/go-socket%2eio.(*Server).ServeHTTP(0xa8106c0, 0x8470b60, 0xaa121b0, 0xa8a8000)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/server.go:33 +0x3c
net/http.(*ServeMux).ServeHTTP(0x86db320, 0x8470b60, 0xaa121b0, 0xa8a8000)
/usr/local/go/src/net/http/server.go:2387 +0x158
net/http.serverHandler.ServeHTTP(0xa900900, 0x8470b60, 0xaa121b0, 0xa8a8000)
/usr/local/go/src/net/http/server.go:2807 +0x7f
net/http.(*conn).serve(0xa898000, 0x84711c0, 0xa890080)
/usr/local/go/src/net/http/server.go:1895 +0x7a4
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:2933 +0x2b9
2020/07/06 12:52:20 http: panic serving [::1]:53324: runtime error: invalid memory address or nil pointer dereference
goroutine 25 [running]:
net/http.(*conn).serve.func1(0xaa34060)
/usr/local/go/src/net/http/server.go:1772 +0xed
panic(0x839ca80, 0x86d2c40)
/usr/local/go/src/runtime/panic.go:975 +0x373
runtime/internal/atomic.Cas64(0xaa1a2dc, 0x0, 0x0, 0x1, 0x0)
/usr/local/go/src/runtime/internal/atomic/asm_386.s:60 +0xc
github.com/googollee/go-engine.io/payload.(*Payload).FlushOut(0xaa1a270, 0x846d470, 0xaa12240, 0x0, 0x0)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/payload/payload.go:129 +0x121
github.com/googollee/go-engine.io/transport/polling.(*serverConn).ServeHTTP(0xaa1c310, 0x8470b60, 0xaa12240, 0xaa36080)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/transport/polling/server.go:80 +0x1ce
github.com/googollee/go-engine%2eio.(*session).serveHTTP(0xaa1c380, 0x8470b60, 0xaa12240, 0xaa36080)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/session.go:209 +0x9f
github.com/googollee/go-engine%2eio.(*Server).ServeHTTP(0xa86a120, 0x8470b60, 0xaa12240, 0xaa36080)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/server.go:195 +0x372
github.com/googollee/go-socket%2eio.(*Server).ServeHTTP(0xa8106c0, 0x8470b60, 0xaa12240, 0xaa36080)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/server.go:33 +0x3c
net/http.(*ServeMux).ServeHTTP(0x86db320, 0x8470b60, 0xaa12240, 0xaa36080)
/usr/local/go/src/net/http/server.go:2387 +0x158
net/http.serverHandler.ServeHTTP(0xa900900, 0x8470b60, 0xaa12240, 0xaa36080)
/usr/local/go/src/net/http/server.go:2807 +0x7f
net/http.(*conn).serve(0xaa34060, 0x84711c0, 0xaa066a0)
/usr/local/go/src/net/http/server.go:1895 +0x7a4
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:2933 +0x2b9
2020/07/06 12:52:25 http: panic serving [::1]:53366: runtime error: invalid memory address or nil pointer dereference
goroutine 35 [running]:
net/http.(*conn).serve.func1(0xa898060)
/usr/local/go/src/net/http/server.go:1772 +0xed
panic(0x839ca80, 0x86d2c40)
/usr/local/go/src/runtime/panic.go:975 +0x373
runtime/internal/atomic.Cas64(0xa8b606c, 0x0, 0x0, 0x1, 0x0)
/usr/local/go/src/runtime/internal/atomic/asm_386.s:60 +0xc
github.com/googollee/go-engine.io/payload.(*Payload).FlushOut(0xa8b6000, 0x846d470, 0xa8b0000, 0x0, 0x0)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/payload/payload.go:129 +0x121
github.com/googollee/go-engine.io/transport/polling.(*serverConn).ServeHTTP(0xa8b8000, 0x8470b60, 0xa8b0000, 0xa8a8080)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/transport/polling/server.go:80 +0x1ce
github.com/googollee/go-engine%2eio.(*session).serveHTTP(0xa8b8070, 0x8470b60, 0xa8b0000, 0xa8a8080)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/session.go:209 +0x9f
github.com/googollee/go-engine%2eio.(*Server).ServeHTTP(0xa86a120, 0x8470b60, 0xa8b0000, 0xa8a8080)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/server.go:195 +0x372
github.com/googollee/go-socket%2eio.(*Server).ServeHTTP(0xa8106c0, 0x8470b60, 0xa8b0000, 0xa8a8080)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/server.go:33 +0x3c
net/http.(*ServeMux).ServeHTTP(0x86db320, 0x8470b60, 0xa8b0000, 0xa8a8080)
/usr/local/go/src/net/http/server.go:2387 +0x158
net/http.serverHandler.ServeHTTP(0xa900900, 0x8470b60, 0xa8b0000, 0xa8a8080)
/usr/local/go/src/net/http/server.go:2807 +0x7f
net/http.(*conn).serve(0xa898060, 0x84711c0, 0xa890180)
/usr/local/go/src/net/http/server.go:1895 +0x7a4
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:2933 +0x2b9
2020/07/06 12:52:30 http: panic serving [::1]:53408: runtime error: invalid memory address or nil pointer dereference
goroutine 9 [running]:
net/http.(*conn).serve.func1(0xa908840)
/usr/local/go/src/net/http/server.go:1772 +0xed
panic(0x839ca80, 0x86d2c40)
/usr/local/go/src/runtime/panic.go:975 +0x373
runtime/internal/atomic.Cas64(0xa91a3ac, 0x0, 0x0, 0x1, 0x0)
/usr/local/go/src/runtime/internal/atomic/asm_386.s:60 +0xc
github.com/googollee/go-engine.io/payload.(*Payload).FlushOut(0xa91a340, 0x846d470, 0xa98f8c0, 0x0, 0x0)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/payload/payload.go:129 +0x121
github.com/googollee/go-engine.io/transport/polling.(*serverConn).ServeHTTP(0xa877b20, 0x8470b60, 0xa98f8c0, 0xa90e300)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/transport/polling/server.go:80 +0x1ce
github.com/googollee/go-engine%2eio.(*session).serveHTTP(0xa877b90, 0x8470b60, 0xa98f8c0, 0xa90e300)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/session.go:209 +0x9f
github.com/googollee/go-engine%2eio.(*Server).ServeHTTP(0xa86a120, 0x8470b60, 0xa98f8c0, 0xa90e300)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/server.go:195 +0x372
github.com/googollee/go-socket%2eio.(*Server).ServeHTTP(0xa8106c0, 0x8470b60, 0xa98f8c0, 0xa90e300)
/home/damir/go/pkg/mod/github.com/googollee/[email protected]/server.go:33 +0x3c
net/http.(*ServeMux).ServeHTTP(0x86db320, 0x8470b60, 0xa98f8c0, 0xa90e300)
/usr/local/go/src/net/http/server.go:2387 +0x158
net/http.serverHandler.ServeHTTP(0xa900900, 0x8470b60, 0xa98f8c0, 0xa90e300)
/usr/local/go/src/net/http/server.go:2807 +0x7f
net/http.(*conn).serve(0xa908840, 0x84711c0, 0xa9909c0)
/usr/local/go/src/net/http/server.go:1895 +0x7a4
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:2933 +0x2b9
Hi, I'm in a very similar situation. I'm currently experiencing the same bug but only when I cross compile a project that has to be executed on a docker container on a Raspberry Pi 3B, on an armv7 architecture.
No problems at all when compiling and executing on an amd64 laptop with go 1.14 under Docker Desktop (with WSL2); the project is the following, https://github.com/Abathargh/moody-go, the problem arises when executing the gateway/admin_panel containers.
EDIT: Since it seemed like an impossible issue to solve with a workaround, I tried flashing the beta version of the 64-bit Raspberry Pi OS on the aforementioned board and running the exact same project, using the appropriate container from the arm64v8 org on docker hub and everything works fine. So it seems like this is a bug that only comes out for me on the 32bit armv7 version of the RPi OS.
The output is the following, coming form the gateway container:
/usr/local/go/src/net/http/server.go:2969 +0x2d0, 2020/08/14 22:49:58 api.go:26: GET /socket.io/, 2020/08/14 22:49:58 server.go:3095: http: panic serving 192.168.1.192:53001: runtime error: invalid memory address or nil pointer dereference, goroutine 3813 [running]:, net/http.(*conn).serve.func1(0x89c480), /usr/local/go/src/net/http/server.go:1801 +0xf0, panic(0x30b678, 0x555cc8), /usr/local/go/src/runtime/panic.go:975 +0x3c4, github.com/googollee/go-engine.io/payload.(*Payload).FlushOut(0x96cd00, 0x66c4d4c8, 0xa02d40, 0x0, 0x0), /go/pkg/mod/github.com/googollee/[email protected]/payload/payload.go:129 +0xf4, github.com/googollee/go-engine.io/transport/polling.(*serverConn).ServeHTTP(0x8afab0, 0x3b75c8, 0xa02d40, 0x87b600), /go/pkg/mod/github.com/googollee/[email protected]/transport/polling/server.go:80 +0x1ac, github.com/googollee/go-engine%2eio.(*session).serveHTTP(0x8afb20, 0x3b75c8, 0xa02d40, 0x87b600), /go/pkg/mod/github.com/googollee/[email protected]/session.go:209 +0xa0, github.com/googollee/go-engine%2eio.(*Server).ServeHTTP(0x8a6030, 0x3b75c8, 0xa02d40, 0x87b600), /go/pkg/mod/github.com/googollee/[email protected]/server.go:195 +0x34c, github.com/googollee/go-socket%2eio.(*Server).ServeHTTP(0x894088, 0x3b75c8, 0xa02d40, 0x87b600), /go/pkg/mod/github.com/googollee/[email protected]/server.go:33 +0x38, main.logRequestResponseMiddleWare.func1(0x3b7728, 0x91e820, 0x87b600), /app/api.go:29 +0x12c, net/http.HandlerFunc.ServeHTTP(0x8a4390, 0x3b7728, 0x91e820, 0x87b600), /usr/local/go/src/net/http/server.go:2042 +0x34, main.allowAllCorsMiddleware.func1(0x3b7728, 0x91e820, 0x87b600), /app/api.go:19 +0xac, net/http.HandlerFunc.ServeHTTP(0x8a43a0, 0x3b7728, 0x91e820, 0x87b600), /usr/local/go/src/net/http/server.go:2042 +0x34, github.com/gorilla/mux.(*Router).ServeHTTP(0x9a4000, 0x3b7728, 0x91e820, 0x87b500), /go/pkg/mod/github.com/gorilla/[email protected]/mux.go:210 +0x98, net/http.serverHandler.ServeHTTP(0x9b6120, 0x3b7728, 0x91e820, 0x87b500), /usr/local/go/src/net/http/server.go:2843 +0x88, net/http.(*conn).serve(0x89c480, 0x3b7ba8, 0xa02bc0), /usr/local/go/src/net/http/server.go:1925 +0x7d0, created by net/http.(*Server).Serve, /usr/local/go/src/net/http/server.go:2969 +0x2d0
This was resolved in https://github.com/googollee/go-engine.io/pull/86, with fix in current go-socket.io code.