cryptag / leapchat

Ephemeral, encrypted, in-browser chat rooms
https://www.leapchat.org/
Other
184 stars 32 forks source link

Go: Bizarre panic #332

Open elimisteve opened 1 year ago

elimisteve commented 1 year ago

Only ever happened once (just now, locally) --

$ ./leapchat -http :8080
INFO[0000] Listening on :8080                           
DEBU[0000] Just deleted expired messages                
unexpected fault address 0x0
fatal error: fault
[signal SIGSEGV: segmentation violation code=0x80 addr=0x0 pc=0x403535]

goroutine 19 [running]:
runtime.throw({0x7a213e?, 0xc00018a228?})
    /home/user/go/src/runtime/panic.go:1047 +0x5d fp=0xc00018f568 sp=0xc00018f538 pc=0x43699d
runtime.sigpanic()
    /home/user/go/src/runtime/signal_unix.go:842 +0x2c5 fp=0xc00018f5b8 sp=0xc00018f568 pc=0x44c345
runtime.memequal()
    /home/user/go/src/internal/bytealg/equal_amd64.s:20 +0x15 fp=0xc00018f5c0 sp=0xc00018f5b8 pc=0x403535
github.com/sirupsen/logrus.(*TextFormatter).Format(0xc0001c40f0, 0xc0001f3ce0)
    /home/user/gocode/pkg/mod/github.com/sirupsen/logrus@v1.4.1/text_formatter.go:181 +0xf7a fp=0xc00018fb30 sp=0xc00018f5c0 pc=0x6b10da
github.com/sirupsen/logrus.(*Entry).write(0xc0001f3ce0)
    /home/user/gocode/pkg/mod/github.com/sirupsen/logrus@v1.4.1/entry.go:255 +0xa5 fp=0xc00018fba8 sp=0xc00018fb30 pc=0x6ae9e5
github.com/sirupsen/logrus.Entry.log({0xc0001f2000, 0xc000183980, {0x0, 0x0, 0x0}, 0x0, 0x0, {0x0, 0x0}, 0x0, ...}, ...)
    /home/user/gocode/pkg/mod/github.com/sirupsen/logrus@v1.4.1/entry.go:231 +0x254 fp=0xc00018fc28 sp=0xc00018fba8 pc=0x6ae674
github.com/sirupsen/logrus.(*Entry).Log(0xc0001f3b90, 0x5, {0xc00018fd58?, 0x2?, 0x2?})
    /home/user/gocode/pkg/mod/github.com/sirupsen/logrus@v1.4.1/entry.go:268 +0xa8 fp=0xc00018fd30 sp=0xc00018fc28 pc=0x6aebe8
github.com/sirupsen/logrus.(*Entry).Logf(0xc0001f3b90, 0x5, {0x7a643b?, 0xc00018fdb8?}, {0xc00018fe50?, 0x10?, 0x738240?})
    /home/user/gocode/pkg/mod/github.com/sirupsen/logrus@v1.4.1/entry.go:314 +0x85 fp=0xc00018fd78 sp=0xc00018fd30 pc=0x6aecc5
github.com/sirupsen/logrus.(*Logger).Logf(0xc0001f2000, 0x5, {0x7a643b, 0x12}, {0xc00018fe50, 0x2, 0x2})
    /home/user/gocode/pkg/mod/github.com/sirupsen/logrus@v1.4.1/logger.go:145 +0x85 fp=0xc00018fdc8 sp=0xc00018fd78 pc=0x6af685
github.com/sirupsen/logrus.(*Logger).Debugf(...)
    /home/user/gocode/pkg/mod/github.com/sirupsen/logrus@v1.4.1/logger.go:155
github.com/sirupsen/logrus.Debugf(...)
    /home/user/gocode/pkg/mod/github.com/sirupsen/logrus@v1.4.1/exported.go:144
main.(*PGClient).Post(0xc000181000, {0x7aaefa, 0x1c}, {0x0?, 0x0?})
    /home/user/gocode/src/github.com/cryptag/leapchat/pg_types.go:38 +0x125 fp=0xc00018fe80 sp=0xc00018fdc8 pc=0x70e865
main.(*PGClient).PostWanted(0xc0001f2000?, {0x7aaefa?, 0x7ab82f?}, {0x0?, 0x0?}, 0xcc)
    /home/user/gocode/src/github.com/cryptag/leapchat/pg_types.go:50 +0x65 fp=0xc00018ff78 sp=0xc00018fe80 pc=0x70eba5
main.NewRoomManager.func1()
    /home/user/gocode/src/github.com/cryptag/leapchat/room.go:39 +0x74 fp=0xc00018ffe0 sp=0xc00018ff78 pc=0x70f9b4
runtime.goexit()
    /home/user/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc00018ffe8 sp=0xc00018ffe0 pc=0x4665a1
created by main.NewRoomManager
    /home/user/gocode/src/github.com/cryptag/leapchat/room.go:35 +0x5a

goroutine 1 [IO wait]:
runtime.gopark(0xd0?, 0xa?, 0x18?, 0x1b?, 0xc0001c1b00?)
    /home/user/go/src/runtime/proc.go:363 +0xd6 fp=0xc0001c1a90 sp=0xc0001c1a70 pc=0x4395b6
runtime.netpollblock(0xd0?, 0xa46100?, 0x0?)
    /home/user/go/src/runtime/netpoll.go:526 +0xf7 fp=0xc0001c1ac8 sp=0xc0001c1a90 pc=0x4320d7
internal/poll.runtime_pollWait(0x7f5fd8d4bfa8, 0x72)
    /home/user/go/src/runtime/netpoll.go:305 +0x89 fp=0xc0001c1ae8 sp=0xc0001c1ac8 pc=0x461329
internal/poll.(*pollDesc).wait(0xc0001f8480?, 0x2?, 0x0)
    /home/user/go/src/internal/poll/fd_poll_runtime.go:84 +0x32 fp=0xc0001c1b10 sp=0xc0001c1ae8 pc=0x4bc192
internal/poll.(*pollDesc).waitRead(...)
    /home/user/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Accept(0xc0001f8480)
    /home/user/go/src/internal/poll/fd_unix.go:614 +0x234 fp=0xc0001c1ba8 sp=0xc0001c1b10 pc=0x4bd814
net.(*netFD).accept(0xc0001f8480)
    /home/user/go/src/net/fd_unix.go:172 +0x35 fp=0xc0001c1c60 sp=0xc0001c1ba8 pc=0x58b3d5
net.(*TCPListener).accept(0xc00018a1f8)
    /home/user/go/src/net/tcpsock_posix.go:142 +0x28 fp=0xc0001c1c90 sp=0xc0001c1c60 pc=0x59d108
net.(*TCPListener).Accept(0xc00018a1f8)
    /home/user/go/src/net/tcpsock.go:288 +0x3d fp=0xc0001c1cc0 sp=0xc0001c1c90 pc=0x59c45d
net/http.(*onceCloseListener).Accept(0x83c0d0?)
    <autogenerated>:1 +0x2a fp=0xc0001c1cd8 sp=0xc0001c1cc0 pc=0x68efca
net/http.(*Server).Serve(0xc00021a000, {0x83ba40, 0xc00018a1f8})
    /home/user/go/src/net/http/server.go:3070 +0x385 fp=0xc0001c1e08 sp=0xc0001c1cd8 pc=0x66ce05
net/http.(*Server).ListenAndServe(0xc00021a000)
    /home/user/go/src/net/http/server.go:2999 +0x7d fp=0xc0001c1e38 sp=0xc0001c1e08 pc=0x66ca3d
main.main()
    /home/user/gocode/src/github.com/cryptag/leapchat/leapchat.go:72 +0x726 fp=0xc0001c1f80 sp=0xc0001c1e38 pc=0x70de66
runtime.main()
    /home/user/go/src/runtime/proc.go:250 +0x212 fp=0xc0001c1fe0 sp=0xc0001c1f80 pc=0x4391f2
runtime.goexit()
    /home/user/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc0001c1fe8 sp=0xc0001c1fe0 pc=0x4665a1

goroutine 2 [force gc (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
    /home/user/go/src/runtime/proc.go:363 +0xd6 fp=0xc00004cfb0 sp=0xc00004cf90 pc=0x4395b6
runtime.goparkunlock(...)
    /home/user/go/src/runtime/proc.go:369
runtime.forcegchelper()
    /home/user/go/src/runtime/proc.go:302 +0xad fp=0xc00004cfe0 sp=0xc00004cfb0 pc=0x43944d
runtime.goexit()
    /home/user/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc00004cfe8 sp=0xc00004cfe0 pc=0x4665a1
created by runtime.init.6
    /home/user/go/src/runtime/proc.go:290 +0x25

goroutine 3 [GC sweep wait]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
    /home/user/go/src/runtime/proc.go:363 +0xd6 fp=0xc00004d790 sp=0xc00004d770 pc=0x4395b6
runtime.goparkunlock(...)
    /home/user/go/src/runtime/proc.go:369
runtime.bgsweep(0x0?)
    /home/user/go/src/runtime/mgcsweep.go:278 +0x8e fp=0xc00004d7c8 sp=0xc00004d790 pc=0x425d6e
runtime.gcenable.func1()
    /home/user/go/src/runtime/mgc.go:178 +0x26 fp=0xc00004d7e0 sp=0xc00004d7c8 pc=0x41ac26
runtime.goexit()
    /home/user/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc00004d7e8 sp=0xc00004d7e0 pc=0x4665a1
created by runtime.gcenable
    /home/user/go/src/runtime/mgc.go:178 +0x6b

goroutine 4 [GC scavenge wait]:
runtime.gopark(0xc000026150?, 0x837850?, 0x1?, 0x0?, 0x0?)
    /home/user/go/src/runtime/proc.go:363 +0xd6 fp=0xc00004df70 sp=0xc00004df50 pc=0x4395b6
runtime.goparkunlock(...)
    /home/user/go/src/runtime/proc.go:369
runtime.(*scavengerState).park(0xa458c0)
    /home/user/go/src/runtime/mgcscavenge.go:389 +0x53 fp=0xc00004dfa0 sp=0xc00004df70 pc=0x423e13
runtime.bgscavenge(0x0?)
    /home/user/go/src/runtime/mgcscavenge.go:617 +0x45 fp=0xc00004dfc8 sp=0xc00004dfa0 pc=0x4243e5
runtime.gcenable.func2()
    /home/user/go/src/runtime/mgc.go:179 +0x26 fp=0xc00004dfe0 sp=0xc00004dfc8 pc=0x41abc6
runtime.goexit()
    /home/user/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc00004dfe8 sp=0xc00004dfe0 pc=0x4665a1
created by runtime.gcenable
    /home/user/go/src/runtime/mgc.go:179 +0xaa

goroutine 18 [finalizer wait]:
runtime.gopark(0xa46100?, 0xc000007860?, 0x0?, 0x0?, 0xc00004c770?)
    /home/user/go/src/runtime/proc.go:363 +0xd6 fp=0xc00004c628 sp=0xc00004c608 pc=0x4395b6
runtime.goparkunlock(...)
    /home/user/go/src/runtime/proc.go:369
runtime.runfinq()
    /home/user/go/src/runtime/mfinal.go:180 +0x10f fp=0xc00004c7e0 sp=0xc00004c628 pc=0x419d2f
runtime.goexit()
    /home/user/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc00004c7e8 sp=0xc00004c7e0 pc=0x4665a1
created by runtime.createfing
    /home/user/go/src/runtime/mfinal.go:157 +0x45
elimisteve commented 1 year ago

I believe this binary is from #310