status-im / nim-chronos

Chronos - An efficient library for asynchronous programming
https://status-im.github.io/nim-chronos/docs/chronos
Apache License 2.0
353 stars 51 forks source link

Crash with TLS stream #318

Closed Menduist closed 1 year ago

Menduist commented 2 years ago
#0  0x0004eddc in xorbuf (len=<optimized out>, src=<optimized out>, dst=<optimized out>)
    at /home/pi/nwaku/vendor/nim-bearssl/bearssl/abi/../csources/src/symcipher/aes_ct_ctr.c:45
#1  br_aes_ct_ctr_run (ctx=0x0, ctx@entry=0x766ab000, iv=iv@entry=0x7effd52c, cc=28408, cc@entry=2, data=data@entry=0x766b2094, 
    len=<optimized out>) at /home/pi/nwaku/vendor/nim-bearssl/bearssl/abi/../csources/src/symcipher/aes_ct_ctr.c:98
#2  0x0006a5a0 in do_ctr (xortag=0x7effd538, len=4294967265, data=0x766b2094, nonce=0x766b208c, cc=0x766aaff0)
    at /home/pi/nwaku/vendor/nim-bearssl/bearssl/abi/../csources/src/ssl/ssl_rec_gcm.c:118
#3  gcm_encrypt (cc=cc@entry=0x766aaff0, record_type=21, version=771, data=0x766b2094, data_len=0x7effd584, data_len@entry=0x7effd57c)
    at /home/pi/nwaku/vendor/nim-bearssl/bearssl/abi/../csources/src/ssl/ssl_rec_gcm.c:206
#4  0x000640c8 in sendpld_flush (force=0, rc=0x766aad78)
    at /home/pi/nwaku/vendor/nim-bearssl/bearssl/abi/../csources/src/ssl/ssl_engine.c:851
#5  sendpld_ack (len=<optimized out>, rc=0x766aad78)
    at /home/pi/nwaku/vendor/nim-bearssl/bearssl/abi/../csources/src/ssl/ssl_engine.c:876
#6  br_ssl_engine_sendapp_ack (cc=0x766aad78, len=<optimized out>)
    at /home/pi/nwaku/vendor/nim-bearssl/bearssl/abi/../csources/src/ssl/ssl_engine.c:1133
#7  0x00470924 in tlsWriteApp__phCXD6wg7ckL8oVNweWyWw_2 (chronosInternalRetFuture=0x76ff5500, ClE_0=0x76d3d8a8)
    at /home/pi/nwaku/vendor/nim-chronos/chronos/streams/tlsstream.nim:181
#8  0x00216c60 in futureContinue__qIqBDJYEJWZtFBnGxe9aPog (fut=0x0) at /home/pi/nwaku/vendor/nim-chronos/chronos/asyncfutures2.nim:365
#9  0x00224ec8 in poll__YNjd8fE6xG8CRNwfLnrx0g_2 () at /home/pi/nwaku/vendor/nim-chronos/chronos/asyncloop.nim:288
#10 0x0023975c in runForever__YNjd8fE6xG8CRNwfLnrx0g_3 () at /home/pi/nwaku/vendor/nim-chronos/chronos/asyncloop.nim:1121
#11 0x006966e4 in NimMainModule () at /home/pi/nwaku/waku/v2/node/wakunode2.nim:1277
#12 0x0069dbe8 in NimMain () at /home/pi/nwaku/vendor/nim-eth/eth/common/chaindb.nim:428
#13 0x00012c6c in main (argc=<optimized out>, args=<optimized out>, env=<optimized out>)

Not sure if it's coming from chronos or higher layers, will need to check EDIT: futureContinue__qIqBDJYEJWZtFBnGxe9aPog (fut=0x0) is suspicious

Menduist commented 2 years ago

Tracking with gdb: https://github.com/status-im/nim-chronos/blob/9df76c39df254c7ff0cec6dec5c9f345f2819c91/chronos/streams/tlsstream.nim#L166

length = 781759692, buf = 0x8

untoreh commented 1 year ago

Is this related?

#0  0x00005565d6c1048b in br_chacha20_sse2_run (key=0x5565f17debe0, iv=0x7ffcbcd570d7, cc=0x1, data=0x5565f144a114, len=0xfffffffffccb2129) at /root/.nimble/pkgs/bearssl-0.1.5/bearssl/abi/../csources/src/symcipher/chacha20_sse2.c:203
#1  0x00005565d6c1386d in br_poly1305_ctmulq_run (key=0x5565f17debe0, iv=0x7ffcbcd570d7, data=0x5565f144a114, len=0xffffffffffffffe9, aad=0x7ffcbcd570e3, aad_len=0xd, tag=0x5565f144a0fd, ichacha=0x5565d6c0f880 <br_chacha20_sse2_run>, encrypt=0x1) at /root/.nimble/pkgs/bearssl-0.1.5/bearssl/abi/../csources/src/symcipher/poly1305_ctmulq.c:338
#2  0x00005565d6c249b2 in gen_chapol_process (cc=0x5565f17debd0, record_type=0x15, version=0x303, data=0x5565f144a114, len=0xffffffffffffffe9, tag=0x5565f144a0fd, encrypt=0x1) at /root/.nimble/pkgs/bearssl-0.1.5/bearssl/abi/../csources/src/ssl/ssl_rec_chapol.c:59
#3  0x00005565d6c247f3 in chapol_encrypt (cc=0x5565f17debd0, record_type=0x15, version=0x303, data=0x5565f144a114, data_len=0x7ffcbcd57188) at /root/.nimble/pkgs/bearssl-0.1.5/bearssl/abi/../csources/src/ssl/ssl_rec_chapol.c:153
#4  0x00005565d6c19918 in sendpld_flush (rc=0x5565f17de918, force=0x0) at /root/.nimble/pkgs/bearssl-0.1.5/bearssl/abi/../csources/src/ssl/ssl_engine.c:851
#5  0x00005565d6c19824 in sendpld_ack (rc=0x5565f17de918, len=0x0) at /root/.nimble/pkgs/bearssl-0.1.5/bearssl/abi/../csources/src/ssl/ssl_engine.c:876
#6  0x00005565d6c19a6d in br_ssl_engine_sendapp_ack (cc=0x5565f17de918, len=0x0) at /root/.nimble/pkgs/bearssl-0.1.5/bearssl/abi/../csources/src/ssl/ssl_engine.c:1133
#7  0x00005565d6fbd3eb in tlsWriteApp__OOZOOZOOZrootZOnimbleZpkgsZchronos4535updateZchronosZstreamsZtlsstream_884 (chronosInternalRetFuture=0x5565efd37ac0, ClE_0=0x5565ee01a300) at /root/.nimble/pkgs/chronos-#update/chronos/streams/tlsstream.nim:181
#8  0x00005565d6d7b9d7 in futureContinue__OOZOOZOOZrootZOnimbleZpkgsZchronos4535updateZchronosZstreamsZtlsstream_488 (fut=0x5565efd37ac0) at /root/.nimble/pkgs/chronos-#update/chronos/asyncfutures2.nim:365
#9  0x00005565d6d7b8fb in internalContinue__OOZOOZOOZrootZOnimbleZpkgsZchronos4535updateZchronosZstreamsZtlsstream_628 (fut=0x5565efd37ac0) at /root/.nimble/pkgs/chronos-#update/chronos/asyncfutures2.nim:394
#10 0x00005565d6d69551 in poll__OOZOOZOOZrootZOnimbleZpkgsZchronos4535updateZchronosZasyncloop_2592 () at /root/.nimble/pkgs/chronos-#update/chronos/asyncloop.nim:288
cheatfate commented 1 year ago

This looks like incorrectly selected bearssl configuration parameters, so it start using architecture specific optimizations where this optimizations are not available. Doesn't look like chronos issue.

cheatfate commented 1 year ago

I think this issue was fixed by https://github.com/status-im/nim-chronos/commit/5d3da66e563d21277b57a9b601744273c083a01b