So I forwarded this bug upstream to the (new) irssi OTR guys:

https://github.com/cryptodotis/irssi-otr/issues/32

Unfortunately, I am not sure they can help us. The backtraces I can
produce all point to problems within the xmpp side, in libloudmouth or
more precisely, in the gnutls layer.

The funny thing is that I really thought this was a bug with
irssi-plugin-xmpp, so much that I opened this other bug:

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=707758

Also, I cannot reproduce all the steps that were given in this bug.

For example, exhibit A:

   /load xmpp
   /xmppconnect -ssl [email protected] ABC123
   /load otr
   /quit

This works: I get the segfault I reported above.

Exhibit B:

   /load otr
   /load xmpp
   /xmppconnect -ssl [email protected] ABC123
   /unload otr

This does *not* crash irssi, or at least not immediately! After a while,
it does crash with the following backtrace - but only after a while,
when a packet is received, I assume:

Program terminated with signal 11, Segmentation fault.
#0  0x00007fa1b80043a0 in ?? ()
#1  0x00007fa1b7d84cdb in ?? () from /lib/x86_64-linux-gnu/libgcrypt.so.11
#2  0x00007fa1b7d859a9 in ?? () from /lib/x86_64-linux-gnu/libgcrypt.so.11
#3  0x00007fa1b7d992aa in ?? () from /lib/x86_64-linux-gnu/libgcrypt.so.11
#4  0x00007fa1b7d9999a in ?? () from /lib/x86_64-linux-gnu/libgcrypt.so.11
#5  0x00007fa1b6d0177a in ?? () from /usr/lib/x86_64-linux-gnu/libgnutls.so.26
#6  0x00007fa1b6c92219 in ?? () from /usr/lib/x86_64-linux-gnu/libgnutls.so.26
#7  0x00007fa1b6c85c3d in ?? () from /usr/lib/x86_64-linux-gnu/libgnutls.so.26
#8  0x00007fa1b6c86203 in ?? () from /usr/lib/x86_64-linux-gnu/libgnutls.so.26
#9  0x00007fa1b6c83c31 in _gnutls_recv_int () from 
/usr/lib/x86_64-linux-gnu/libgnutls.so.26
#10 0x00007fa1b736d0a7 in _lm_ssl_read (ssl=<optimized out>, 
buf=buf@entry=0x7fffcf752c20 "pC+\001",
    len=len@entry=1023, bytes_read=bytes_read@entry=0x7fffcf752c18) at 
lm-ssl-gnutls.c:256
#11 0x00007fa1b736e811 in socket_read_incoming (reason=<synthetic pointer>, 
hangup=<synthetic pointer>,
    bytes_read=0x7fffcf752c18, buf=0x7fffcf752c20 "pC+\001", socket=0x16c0ae0, 
buf_size=<optimized out>)
    at lm-socket.c:191
#12 socket_in_event (source=<optimized out>, condition=<optimized out>, 
socket=0x16c0ae0) at lm-socket.c:262
#13 0x00007fa1b9f0c355 in g_main_context_dispatch () from 
/lib/x86_64-linux-gnu/libglib-2.0.so.0
#14 0x00007fa1b9f0c688 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#15 0x00007fa1b9f0c744 in g_main_context_iteration () from 
/lib/x86_64-linux-gnu/libglib-2.0.so.0
#16 0x000000000041905c in main ()

lm-socket.c is in libloudmouth.

Exhibit C:

   /load xmpp
   /connect <xmpphost>
   /load otr
   /unload otr
   /quit

Program terminated with signal 11, Segmentation fault.
#0  0x00007fbe4a1643a0 in ?? ()
(gdb) bt
#0  0x00007fbe4a1643a0 in ?? ()
#1  0x00007fbe4ce11cdb in ?? () from /lib/x86_64-linux-gnu/libgcrypt.so.11
#2  0x00007fbe4ce129a9 in ?? () from /lib/x86_64-linux-gnu/libgcrypt.so.11
#3  0x00007fbe4ce262aa in ?? () from /lib/x86_64-linux-gnu/libgcrypt.so.11
#4  0x00007fbe4ce2699a in ?? () from /lib/x86_64-linux-gnu/libgcrypt.so.11
#5  0x00007fbe4d32f77a in ?? () from /usr/lib/x86_64-linux-gnu/libgnutls.so.26
#6  0x00007fbe4d2c0219 in ?? () from /usr/lib/x86_64-linux-gnu/libgnutls.so.26
#7  0x00007fbe4d2b34f1 in ?? () from /usr/lib/x86_64-linux-gnu/libgnutls.so.26
#8  0x00007fbe4d2b3ae7 in ?? () from /usr/lib/x86_64-linux-gnu/libgnutls.so.26
#9  0x00007fbe4d2b138d in _gnutls_send_int () from 
/usr/lib/x86_64-linux-gnu/libgnutls.so.26
#10 0x00007fbe4d2b2795 in gnutls_record_send () from 
/usr/lib/x86_64-linux-gnu/libgnutls.so.26
#11 0x00007fbe4dbb1105 in _lm_ssl_send (ssl=0x20b0550,
    str=str@entry=0x240bcc0 "<presence type=\"unavailable\" 
id=\"340017359742\"> <status>leaving</status>\n</presence>\n", len=85) at 
lm-ssl-gnutls.c:287
#12 0x00007fbe4dbb29e4 in lm_socket_do_write (socket=0x20b29b0,
    buf=buf@entry=0x240bcc0 "<presence type=\"unavailable\" 
id=\"340017359742\"> <status>leaving</status>\n</presence>\n", 
len=len@entry=85) at lm-socket.c:156
#13 0x00007fbe4dbab83f in connection_send (
    str=str@entry=0x240bcc0 "<presence type=\"unavailable\" 
id=\"340017359742\"> <status>leaving</status>\n</presence>\n", 
error=error@entry=0x0, connection=<error reading variable: Unhandled dwarf 
expression opcode 0xfa>,
    len=<optimized out>, connection=<error reading variable: Unhandled dwarf 
expression opcode 0xfa>)
    at lm-connection.c:412
#14 0x00007fbe4dbac3ae in lm_connection_send (connection=0x20b56c0, 
message=<optimized out>, error=0x0)
    at lm-connection.c:1873
#15 0x00007fbe4ddcaee9 in send_stanza () from 
/usr/lib/irssi/modules/libxmpp_core.so
#16 0x000000000048e0ba in ?? ()
#17 0x000000000048e56d in signal_emit ()
#18 0x00007fbe4ddc794e in sig_server_quit () from 
/usr/lib/irssi/modules/libxmpp_core.so
#19 0x000000000048e0ba in ?? ()
#20 0x000000000048e56d in signal_emit ()
#21 0x0000000000490633 in ?? ()
#22 0x0000000000490c84 in ?? ()
#23 0x000000000048e0ba in ?? ()
#24 0x000000000048e56d in signal_emit ()
#25 0x000000000047a36e in ?? ()
#26 0x000000000048e0ba in ?? ()
#27 0x000000000048e56d in signal_emit ()
#28 0x000000000041c37b in ?? ()
#29 0x000000000048e0ba in ?? ()
#30 0x000000000048e56d in signal_emit ()
#31 0x000000000044e9e7 in ?? ()
#32 0x000000000048e0ba in ?? ()
#33 0x000000000048e56d in signal_emit ()
#34 0x000000000044f3b3 in key_pressed ()
#35 0x000000000041bc2e in ?? ()
#36 0x000000000048e0ba in ?? ()
#37 0x000000000048e56d in signal_emit ()
#38 0x000000000041d05e in ?? ()
#39 0x0000000000480f99 in ?? ()
#40 0x00007fbe4fac8355 in g_main_context_dispatch () from 
/lib/x86_64-linux-gnu/libglib-2.0.so.0
#41 0x00007fbe4fac8688 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#42 0x00007fbe4fac8744 in g_main_context_iteration () from 
/lib/x86_64-linux-gnu/libglib-2.0.so.0
#43 0x000000000041905c in main ()

So there's clearly weird shit going on here...

A.

-- 
Five out of four people have a problem with fractions

Attachment: pgpKCn2L8ub0_.pgp
Description: PGP signature

Reply via email to