status-im / status-desktop

Status Desktop client made in Nim & QML
https://status.app
Mozilla Public License 2.0
287 stars 78 forks source link

Freezing when using sharded community #16153

Open fryorcraken opened 3 weeks ago

fryorcraken commented 3 weeks ago

Bug Report

Description

When joining a sharded community, I got a core dump. Only happens shortly after joining.

Ran it with gdb, no core dump this time.

Here is a test community to play with: https://status.app/c/G3sAAGR0G-LpeyL9SEh49lDJItpwgwOnLKSkMIz5PcbOgmNTHtIhoTQbLqVYpumau_PrEkiplEtTL0s2C5Ol-M6Q0LhyLspZHacSOxUbfLAL7kGmNV43bM_xQ8gKAPwk#zQ3shuLkEVfyH9deCCn54C6WFSgrwZ927RkjZqCu8Zpq57QPV

When I ran it with gdb, after leaving and rejoining community, got this:

DBG 2024-08-20 14:41:32.704+10:00 NewBE_callPrivateRPC                       topics="rpc" tid=2620929 file=core.nim:27 rpc_method=wakuext_getTextURLsToUnfurl
DBG 2024-08-20 14:41:32.705+10:00 [threadpool task thread] initiating task   topics="task-threadpool" tid=2620930 file=threadpool.nim:56 messageType=AsyncSendMessageTaskArg:ObjectType threadid=2620930 task="{\"$type\":\"AsyncSendMessageTaskArg:ObjectType\",\"chatId\":\"0x03da6cce2f9076e6ceed341e43dab0416e9f6a0aad6e337c5fb3825df14b17e344c0926640-20ed-4867-b9d3-392fef2d485f\",\"processedMsg\":\"Ok I am back\",\"replyTo\":\"\",\"contentType\":1,\"preferredUsername\":\"\",\"communityId\":\"\",\"standardLinkPreviews\":[],\"statusLinkPreviews\":[],\"vptr\":22693152,\"slot\":\"onAsyncSendMessageDone\"}"
DBG 2024-08-20 14:41:32.705+10:00 NewBE_callPrivateRPC                       topics="rpc" tid=2620930 file=core.nim:27 rpc_method=wakuext_sendChatMessage
[New Thread 0x7ffe48e006c0 (LWP 2623148)]
[Thread 0x7ffe48e006c0 (LWP 2623148) exited]
[Thread 0x7ffe4a2006c0 (LWP 2622888) exited]
[Thread 0x7ffe26a006c0 (LWP 2622887) exited]
[Thread 0x7ffe274006c0 (LWP 2622886) exited]

Thread 38 "nim_status_clie" received signal SIGPIPE, Broken pipe.
[Switching to Thread 0x7fff316006c0 (LWP 2620944)]

App did not crash but is frozen.

Here is the backtrace of thread 38:

(gdb) bt
#0  runtime/internal/syscall.Syscall6 () at /usr/lib/golang/src/runtime/internal/syscall/asm_linux_amd64.s:36
#1  0x00007fffef308a2d in syscall.RawSyscall6 (num=18446744073709551584, a1=91, a2=140737206323790, a3=91, a4=1924237410304, a5=0, a6=0, r1=<optimized out>, r2=<optimized out>, errno=<optimized out>)
    at /usr/lib/golang/src/runtime/internal/syscall/syscall_linux.go:38
#2  0x00007fffef390f66 in syscall.Syscall (trap=1, a1=91, a2=1924237410304, a3=24, r1=<optimized out>, r2=<optimized out>, err=<optimized out>) at /usr/lib/golang/src/syscall/syscall_linux.go:82
#3  0x00007fffef38f23b in syscall.write (fd=<optimized out>, p=Python Exception <class 'gdb.error'>: value has been optimized out
[]uint8, n=<optimized out>, err=...) at /usr/lib/golang/src/syscall/zsyscall_linux_amd64.go:964
#4  0x00007fffef3f7e08 in syscall.Write (fd=91, p=[]uint8 = {...}, n=<optimized out>, err=...) at /usr/lib/golang/src/syscall/syscall_unix.go:209
#5  internal/poll.ignoringEINTRIO (fd=91, p=[]uint8 = {...}, fn=<optimized out>) at /usr/lib/golang/src/internal/poll/fd_unix.go:736
#6  internal/poll.(*FD).Write (fd=0x1c001bc3280, p=[]uint8 = {...}, ~r0=<optimized out>, ~r0=<optimized out>, ~r1=..., ~r1=...) at /usr/lib/golang/src/internal/poll/fd_unix.go:380
#7  0x00007fffef4f7085 in net.(*netFD).Write (fd=0xffffffffffffffe0, p=[]uint8, nn=<optimized out>, err=...) at /usr/lib/golang/src/net/fd_posix.go:96
#8  0x00007fffef509a05 in net.(*conn).Write (c=0x1c004d42150, b=[]uint8, ~r0=<optimized out>, ~r1=...) at /usr/lib/golang/src/net/net.go:197
#9  0x00007fffeff06d86 in go:(*struct { *net.TCPConn; github.com/multiformats/go-multiaddr/net.maEndpoints }).Write (c=<optimized out>, b=[]uint8, ~r0=<optimized out>, ~r1=...) at <autogenerated>:1
#10 0x00007fffef719709 in crypto/tls.(*Conn).write (c=0x1c006ca8008, data=[]uint8, ~r0=<optimized out>, ~r1=...) at /usr/lib/golang/src/crypto/tls/conn.go:945
#11 0x00007fffef719ea5 in crypto/tls.(*Conn).writeRecordLocked (c=0x1c006ca8008, typ=21 '\025', data=[]uint8 = {...}, ~r0=<optimized out>, ~r0=<optimized out>, ~r1=..., ~r1=...)
    at /usr/lib/golang/src/crypto/tls/conn.go:1026
#12 0x00007fffef718fff in crypto/tls.(*Conn).sendAlertLocked (c=0x1c006ca8008, err=0 '\000', ~r0=...) at /usr/lib/golang/src/crypto/tls/conn.go:846
#13 0x00007fffef71cdbe in crypto/tls.(*Conn).closeNotify (c=0x1c006ca8008, ~r0=..., ~r0=...) at /usr/lib/golang/src/crypto/tls/conn.go:1455
#14 0x00007fffef71cbc6 in crypto/tls.(*Conn).Close (c=<optimized out>, ~r0=...) at /usr/lib/golang/src/crypto/tls/conn.go:1424
#15 0x00007ffff0146cff in github.com/libp2p/go-libp2p/p2p/security/tls.(*conn).Close (c=<optimized out>, ~r0=...) at <autogenerated>:1
#16 0x00007ffff00a575c in github.com/libp2p/go-yamux/v4.(*Session).Close (s=0x1c003801900, ~r0=..., ~r0=...)
    at /home/fryorcraken/src/status-im/status-desktop/vendor/status-go/vendor/github.com/libp2p/go-yamux/v4/session.go:300
#17 0x00007ffff00a5ad2 in github.com/libp2p/go-yamux/v4.(*Session).exitErr (s=0x1c003801900, err=...)
    at /home/fryorcraken/src/status-im/status-desktop/vendor/status-go/vendor/github.com/libp2p/go-yamux/v4/session.go:323
#18 0x00007ffff00a7bcd in github.com/libp2p/go-yamux/v4.(*Session).recv (s=0x1c003801900) at /home/fryorcraken/src/status-im/status-desktop/vendor/status-go/vendor/github.com/libp2p/go-yamux/v4/session.go:641
#19 0x00007ffff00a4ac5 in github.com/libp2p/go-yamux/v4.newSession.gowrap1 () at /home/fryorcraken/src/status-im/status-desktop/vendor/status-go/vendor/github.com/libp2p/go-yamux/v4/session.go:162
#20 0x00007fffef37c1e1 in runtime.goexit () at /usr/lib/golang/src/runtime/asm_amd64.s:1695
#21 0x3033626336353537 in ??? ()
#22 0x6237343935333964 in ??? ()
#23 0x3965623862643465 in ??? ()
#24 0x6631393732633365 in ??? ()
#25 0x000001c001f7e000 in ??? ()
#26 0x0000000000000000 in ??? ()

and thread 36:

(gdb) bt
#0  runtime.futex () at /usr/lib/golang/src/runtime/sys_linux_amd64.s:558
#1  0x00007fffef33d470 in runtime.futexsleep (addr=0xfffffffffffffe00, val=0, ns=140737206804515) at /usr/lib/golang/src/runtime/os_linux.go:69
#2  0x00007fffef312e47 in runtime.notesleep (n=0x1c000601148) at /usr/lib/golang/src/runtime/lock_futex.go:170
#3  0x00007fffef3483cc in runtime.mPark () at /usr/lib/golang/src/runtime/proc.go:1761
#4  runtime.stopm () at /usr/lib/golang/src/runtime/proc.go:2782
#5  0x00007fffef349f3f in runtime.findRunnable (gp=<optimized out>, inheritTime=<optimized out>, tryWakeP=<optimized out>) at /usr/lib/golang/src/runtime/proc.go:3512
#6  0x00007fffef34b011 in runtime.schedule () at /usr/lib/golang/src/runtime/proc.go:3868
#7  0x00007fffef34b5ec in runtime.park_m (gp=0x1c0005801c0) at /usr/lib/golang/src/runtime/proc.go:4036
#8  0x00007fffef37a190 in runtime.mcall () at /usr/lib/golang/src/runtime/asm_amd64.s:458
#9  0x01ffffffffffcbc8 in ??? ()
#10 0x0000000000800000 in verifiedUntrustworthy__app95serviceZserviceZcontactsZservice_19353 (self=<optimized out>, publicKey=<optimized out>)
    at /home/fryorcraken/src/status-im/status-desktop/vendor/nim-chronicles/chronicles/log_output.nim:786
#11 0x0000000000000000 in ??? ()

Steps to reproduce

make run-linux-gdb

Additional Information

app_20240820_143419.log

fryorcraken commented 3 weeks ago

Happened again. This time, I had already joined the community:

DBG 2024-08-20 14:50:07.910+10:00 NewBE_callPrivateRPC                       topics="rpc" tid=2624801 file=core.nim:27 rpc_method=wakuext_activityCenterNotificationsCount
DBG 2024-08-20 14:50:07.919+10:00 NewBE_callPrivateRPC                       topics="rpc" tid=2624801 file=core.nim:27 rpc_method=wakuext_activityCenterNotificationsCount
INF 2024-08-20 14:50:20.937+10:00 received                                   topics="signals-manager" tid=2624801 file=messages.nim:68 signal=messages.new messageID=0x97eabc92a37f2e2b1b413b07a669d6c43a12bb74cbaadbb1440ec5aa69d34b9d
INF 2024-08-20 14:50:20.937+10:00 received                                   topics="signals-manager" tid=2624801 file=messages.nim:68 signal=messages.new messageID=0x188a2b27f621e1333455bc3e01dd478ee4240cba8d6a8458ce81705122e34390
DBG 2024-08-20 14:50:20.938+10:00 NewBE_callPrivateRPC                       topics="rpc" tid=2624801 file=core.nim:27 rpc_method=wakuext_activityCenterNotificationsCount
DBG 2024-08-20 14:50:25.922+10:00 NewBE_callPrivateRPC                       topics="rpc" tid=2624801 file=core.nim:27 rpc_method=wakuext_activityCenterNotificationsCount
[Thread 0x7ffe4ce006c0 (LWP 2625909) exited]
[Thread 0x7ffe374006c0 (LWP 2625912) exited]
[Thread 0x7ffe37e006c0 (LWP 2625911) exited]
[Thread 0x7ffe3cc006c0 (LWP 2625910) exited]
[Thread 0x7ffe2be006c0 (LWP 2625917) exited]
[Thread 0x7ffe296006c0 (LWP 2625921) exited]
[Thread 0x7ffe2b4006c0 (LWP 2625918) exited]
[Thread 0x7ffe1f4006c0 (LWP 2625924) exited]
[Thread 0x7ffe1fe006c0 (LWP 2625923) exited]
[Thread 0x7ffe360006c0 (LWP 2625914) exited]
[Thread 0x7ffe2aa006c0 (LWP 2625919) exited]
[Thread 0x7ffe34c006c0 (LWP 2625916) exited]
[Thread 0x7ffe36a006c0 (LWP 2625913) exited]
[Thread 0x7ffe2a0006c0 (LWP 2625920) exited]
[Thread 0x7ffe356006c0 (LWP 2625915) exited]
[Thread 0x7ffe28c006c0 (LWP 2625922) exited]
[Thread 0x7ffe1ea006c0 (LWP 2625925) exited]
[Thread 0x7ffe1e0006c0 (LWP 2625929) exited]
INF 2024-08-20 14:50:28.945+10:00 received                                   topics="signals-manager" tid=2624801 file=messages.nim:68 signal=messages.new messageID=0xe84624241c71e0d6888af3a194d44b574009d1c71582f37500a2577849c63302
INF 2024-08-20 14:50:28.945+10:00 received                                   topics="signals-manager" tid=2624801 file=messages.nim:68 signal=messages.new messageID=0xc56ee80c013b286b3c3cbf3d319021e659852185dcb38056f6a6b4911fb6cb7c
INF 2024-08-20 14:50:28.945+10:00 received                                   topics="signals-manager" tid=2624801 file=messages.nim:68 signal=messages.new messageID=0x92b8575df298ed7f90c6d9794f852a49046103ba5570c2b15db734a55534aecf
INF 2024-08-20 14:50:28.945+10:00 received                                   topics="signals-manager" tid=2624801 file=messages.nim:68 signal=messages.new messageID=0xc2fbb6ca00400e001fe0ea0279aba2484162a08cba004fbb2c4aa80a80358b9c
INF 2024-08-20 14:50:28.945+10:00 received                                   topics="signals-manager" tid=2624801 file=messages.nim:68 signal=messages.new messageID=0xfa9294a2d1c22b83163bf3526044483eaa82ae7639e44dd08cfe6e26463c795a
INF 2024-08-20 14:50:28.945+10:00 received                                   topics="signals-manager" tid=2624801 file=messages.nim:68 signal=messages.new messageID=0x57cff4a8a3829ee85dac84231b46d374f48e3b94e1110d552cd800a9e59525bb
DBG 2024-08-20 14:50:28.946+10:00 NewBE_callPrivateRPC                       topics="rpc" tid=2624801 file=core.nim:27 rpc_method=wakuext_activityCenterNotificationsCount
[Thread 0x7ffe1d6006c0 (LWP 2625930) exited]

Thread 3 "nim_status_clie" received signal SIGPIPE, Broken pipe.
[Switching to Thread 0x7fffe9c006c0 (LWP 2624823)]
runtime/internal/syscall.Syscall6 () at /usr/lib/golang/src/runtime/internal/syscall/asm_linux_amd64.s:36
36      CMPQ    AX, $0xfffffffffffff001
(gdb) bt
#0  runtime/internal/syscall.Syscall6 () at /usr/lib/golang/src/runtime/internal/syscall/asm_linux_amd64.s:36
#1  0x00007fffef308a2d in syscall.RawSyscall6 (num=18446744073709551584, a1=35, a2=140737206323790, a3=35, a4=1924200505344, a5=0, a6=0, r1=<optimized out>, r2=<optimized out>, errno=<optimized out>)
    at /usr/lib/golang/src/runtime/internal/syscall/syscall_linux.go:38
#2  0x00007fffef390f66 in syscall.Syscall (trap=1, a1=35, a2=1924200505344, a3=24, r1=<optimized out>, r2=<optimized out>, err=<optimized out>) at /usr/lib/golang/src/syscall/syscall_linux.go:82
#3  0x00007fffef38f23b in syscall.write (fd=<optimized out>, p=Python Exception <class 'gdb.error'>: value has been optimized out
[]uint8, n=<optimized out>, err=...) at /usr/lib/golang/src/syscall/zsyscall_linux_amd64.go:964
#4  0x00007fffef3f7e08 in syscall.Write (fd=35, p=[]uint8 = {...}, n=<optimized out>, err=...) at /usr/lib/golang/src/syscall/syscall_unix.go:209
#5  internal/poll.ignoringEINTRIO (fd=35, p=[]uint8 = {...}, fn=<optimized out>) at /usr/lib/golang/src/internal/poll/fd_unix.go:736
#6  internal/poll.(*FD).Write (fd=0x1c003e30780, p=[]uint8 = {...}, ~r0=<optimized out>, ~r0=<optimized out>, ~r1=..., ~r1=...) at /usr/lib/golang/src/internal/poll/fd_unix.go:380
#7  0x00007fffef4f7085 in net.(*netFD).Write (fd=0xffffffffffffffe0, p=[]uint8, nn=<optimized out>, err=...) at /usr/lib/golang/src/net/fd_posix.go:96
#8  0x00007fffef509a05 in net.(*conn).Write (c=0x1c0015c0d78, b=[]uint8, ~r0=<optimized out>, ~r1=...) at /usr/lib/golang/src/net/net.go:197
#9  0x00007fffeff06d86 in go:(*struct { *net.TCPConn; github.com/multiformats/go-multiaddr/net.maEndpoints }).Write (c=<optimized out>, b=[]uint8, ~r0=<optimized out>, ~r1=...) at <autogenerated>:1
#10 0x00007fffef719709 in crypto/tls.(*Conn).write (c=0x1c000f8f188, data=[]uint8, ~r0=<optimized out>, ~r1=...) at /usr/lib/golang/src/crypto/tls/conn.go:945
#11 0x00007fffef719ea5 in crypto/tls.(*Conn).writeRecordLocked (c=0x1c000f8f188, typ=21 '\025', data=[]uint8 = {...}, ~r0=<optimized out>, ~r0=<optimized out>, ~r1=..., ~r1=...)
    at /usr/lib/golang/src/crypto/tls/conn.go:1026
#12 0x00007fffef718fff in crypto/tls.(*Conn).sendAlertLocked (c=0x1c000f8f188, err=0 '\000', ~r0=...) at /usr/lib/golang/src/crypto/tls/conn.go:846
#13 0x00007fffef71cdbe in crypto/tls.(*Conn).closeNotify (c=0x1c000f8f188, ~r0=..., ~r0=...) at /usr/lib/golang/src/crypto/tls/conn.go:1455
#14 0x00007fffef71cbc6 in crypto/tls.(*Conn).Close (c=<optimized out>, ~r0=...) at /usr/lib/golang/src/crypto/tls/conn.go:1424
#15 0x00007ffff0146cff in github.com/libp2p/go-libp2p/p2p/security/tls.(*conn).Close (c=<optimized out>, ~r0=...) at <autogenerated>:1
#16 0x00007ffff00a575c in github.com/libp2p/go-yamux/v4.(*Session).Close (s=0x1c003eb2900, ~r0=..., ~r0=...)
    at /home/fryorcraken/src/status-im/status-desktop/vendor/status-go/vendor/github.com/libp2p/go-yamux/v4/session.go:300
#17 0x00007ffff00a5ad2 in github.com/libp2p/go-yamux/v4.(*Session).exitErr (s=0x1c003eb2900, err=...)
    at /home/fryorcraken/src/status-im/status-desktop/vendor/status-go/vendor/github.com/libp2p/go-yamux/v4/session.go:323
#18 0x00007ffff00a7bcd in github.com/libp2p/go-yamux/v4.(*Session).recv (s=0x1c003eb2900) at /home/fryorcraken/src/status-im/status-desktop/vendor/status-go/vendor/github.com/libp2p/go-yamux/v4/session.go:641
#19 0x00007ffff00a4ac5 in github.com/libp2p/go-yamux/v4.newSession.gowrap1 () at /home/fryorcraken/src/status-im/status-desktop/vendor/status-go/vendor/github.com/libp2p/go-yamux/v4/session.go:162
#20 0x00007fffef37c1e1 in runtime.goexit () at /usr/lib/golang/src/runtime/asm_amd64.s:1695
#21 0x0000000000000000 in ??? ()

app_20240820_144914.log

geth.log: https://drive.proton.me/urls/954VSZ7WBW#O6t82dW8bHIl

chaitanyaprem commented 3 weeks ago

Nothing obvious i could see from the logs. Could be a UI issue since app is frozen and not crashing.

i don't think this is related to sharded communities, but could be a general issue.