#117: crash with libgcrypt
----------------------+-----------------------------------------------------
Reporter: fdupoux | Owner:
Type: defect | Status: new
Priority: normal | Milestone:
Component: crypto | Version:
Resolution: | Keywords:
Blocking: | Blockedby:
----------------------+-----------------------------------------------------
Old description:
> Hi,
>
> I am using libssh2-1.2 to get a shell through ssh connections and the
> program often crashes when libssh2-1.2 is using libgcrypt (there is a
> crash every few
> hours). The program is linked to libgcrypt.so.11 when it fails. The error
> message is always the same when it aborts:
> programname: ath.c:193: _gcry_ath_mutex_lock: Assertion `*lock ==
> ((ath_mutex_t) 0)' failed.
>
> I currently have this problem on a Debian Lenny-5.03-amd64 system. I have
> only installed "debian/stable" packages on my system except those which
> are in "debian/testing":
> libgcrypt11 1.4.4-4
> libgpg-error0 1.6-1
> libssh2-1 1.2-1
> libssh2-1-dbg 1.2-1
> libssh2-1-dev 1.2-1
>
> I recompiled libssh2-1.2 on other boxes using OpenSSL for crypto (using
> libcrypto.so.6) and there was no crash. Unfortunately the debian version
> of libssh2-1.2 is compiled against the libgcrypt implementation of
> crypto.
>
> I have reproduced this problem on multiple linux boxes (i686 and x86-64).
>
> I don't know if it's a problem in libssh2 or in libcrypto, but I hope
> these two backtraces below will help to fix it. Unfortunately there is no
> libgcrypt11-dbg
> package available for that version of libgcrypt, so the backtrace is
> incomplete.
>
> Thanks
>
> (gdb) bt
> #0 0x00007faa5bae8ed5 in raise () from /lib/libc.so.6
> #1 0x00007faa5baea3f3 in abort () from /lib/libc.so.6
> #2 0x00007faa5bae1dc9 in __assert_fail () from /lib/libc.so.6
> #3 0x00007faa5af67fcb in ?? () from /usr/lib/libgcrypt.so.11
> #4 0x00007faa5af9c5d0 in ?? () from /usr/lib/libgcrypt.so.11
> #5 0x00007faa5af9c71e in ?? () from /usr/lib/libgcrypt.so.11
> #6 0x00007faa5af9d72d in ?? () from /usr/lib/libgcrypt.so.11
> #7 0x00007faa5be26113 in _libssh2_transport_write (session=0x1c0cac0,
> data=0x7faa540012a0 "^", data_len=69) at
> transport.c:758
> #8 0x00007faa5be0f48c in _libssh2_channel_write (channel=0x1bff560,
> stream_id=0,
> buf=0x421e0bf0 "echo \"#{START}#$(echo
> '[*895346*]'
> 2>&1)#{RES}#${?}#{END}#\"\n", buflen=60)
> at channel.c:2114
> #9 0x00007faa5be0f721 in libssh2_channel_write_ex (channel=0x1bff560,
> stream_id=0,
> buf=0x421e0bf0 "echo \"#{START}#$(echo
> '[*895346*]'
> 2>&1)#{RES}#${?}#{END}#\"\n", buflen=60)
> at channel.c:2161
>
> (gdb) bt
> #0 0x00007faa5bae8ed5 in raise () from /lib/libc.so.6
> #1 0x00007faa5baea3f3 in abort () from /lib/libc.so.6
> #2 0x00007faa5bae1dc9 in __assert_fail () from /lib/libc.so.6
> #3 0x00007faa5af67fcb in ?? () from /usr/lib/libgcrypt.so.11
> #4 0x00007faa5af9c5d0 in ?? () from /usr/lib/libgcrypt.so.11
> #5 0x00007faa5af9c71e in ?? () from /usr/lib/libgcrypt.so.11
> #6 0x00007faa5af9d72d in ?? () from /usr/lib/libgcrypt.so.11
> #7 0x00007faa5be26113 in _libssh2_transport_write
> (session=0x7faa54060fa0,
> data=0x7faa54049e50 "^", data_len=69) at
> transport.c:758
> #8 0x00007faa5be0f48c in _libssh2_channel_write (channel=0x7faa54044c60,
> stream_id=0,
> buf=0x41b6fbf0 "echo \"#{START}#$(echo
> '[*463794*]'
> 2>&1)#{RES}#${?}#{END}#\"\n", buflen=60)
> at channel.c:2114
> #9 0x00007faa5be0f721 in libssh2_channel_write_ex
> (channel=0x7faa54044c60, stream_id=0,
> buf=0x41b6fbf0 "echo \"#{START}#$(echo
> '[*463794*]'
> 2>&1)#{RES}#${?}#{END}#\"\n", buflen=60)
> at channel.c:2161
New description:
Hi,
I am using libssh2-1.2 to get a shell through ssh connections and the
program often crashes when libssh2-1.2 is using libgcrypt (there is a
crash every few
hours). The program is linked to libgcrypt.so.11 when it fails. The error
message is always the same when it aborts:
programname: ath.c:193: _gcry_ath_mutex_lock: Assertion `*lock ==
((ath_mutex_t) 0)' failed.
I currently have this problem on a Debian Lenny-5.03-amd64 system. I have
only installed "debian/stable" packages on my system except those which
are in "debian/testing":
libgcrypt11 1.4.4-4
libgpg-error0 1.6-1
libssh2-1 1.2-1
libssh2-1-dbg 1.2-1
libssh2-1-dev 1.2-1
I recompiled libssh2-1.2 on other boxes using OpenSSL for crypto (using
libcrypto.so.6) and there was no crash. Unfortunately the debian version
of libssh2-1.2 is compiled against the libgcrypt implementation of crypto.
I have reproduced this problem on multiple linux boxes (i686 and x86-64).
I don't know if it's a problem in libssh2 or in libcrypto, but I hope
these two backtraces below will help to fix it. Unfortunately there is no
libgcrypt11-dbg
package available for that version of libgcrypt, so the backtrace is
incomplete.
Thanks
(gdb) bt
#0 0x00007faa5bae8ed5 in raise () from /lib/libc.so.6
#1 0x00007faa5baea3f3 in abort () from /lib/libc.so.6
#2 0x00007faa5bae1dc9 in __assert_fail () from /lib/libc.so.6
#3 0x00007faa5af67fcb in ?? () from /usr/lib/libgcrypt.so.11
#4 0x00007faa5af9c5d0 in ?? () from /usr/lib/libgcrypt.so.11
#5 0x00007faa5af9c71e in ?? () from /usr/lib/libgcrypt.so.11
#6 0x00007faa5af9d72d in ?? () from /usr/lib/libgcrypt.so.11
#7 0x00007faa5be26113 in _libssh2_transport_write (session=0x1c0cac0,
data=0x7faa540012a0 "^", data_len=69) at
transport.c:758
#8 0x00007faa5be0f48c in _libssh2_channel_write (channel=0x1bff560,
stream_id=0,
buf=0x421e0bf0 "echo \"#{START}#$(echo
'[*895346*]'
2>&1)#{RES}#${?}#{END}#\"\n", buflen=60)
at channel.c:2114
#9 0x00007faa5be0f721 in libssh2_channel_write_ex (channel=0x1bff560,
stream_id=0,
buf=0x421e0bf0 "echo \"#{START}#$(echo
'[*895346*]'
2>&1)#{RES}#${?}#{END}#\"\n", buflen=60)
at channel.c:2161
(gdb) bt
#0 0x00007faa5bae8ed5 in raise () from /lib/libc.so.6
#1 0x00007faa5baea3f3 in abort () from /lib/libc.so.6
#2 0x00007faa5bae1dc9 in __assert_fail () from /lib/libc.so.6
#3 0x00007faa5af67fcb in ?? () from /usr/lib/libgcrypt.so.11
#4 0x00007faa5af9c5d0 in ?? () from /usr/lib/libgcrypt.so.11
#5 0x00007faa5af9c71e in ?? () from /usr/lib/libgcrypt.so.11
#6 0x00007faa5af9d72d in ?? () from /usr/lib/libgcrypt.so.11
#7 0x00007faa5be26113 in _libssh2_transport_write
(session=0x7faa54060fa0,
data=0x7faa54049e50 "^", data_len=69) at
transport.c:758
#8 0x00007faa5be0f48c in _libssh2_channel_write (channel=0x7faa54044c60,
stream_id=0,
buf=0x41b6fbf0 "echo \"#{START}#$(echo
'[*463794*]'
2>&1)#{RES}#${?}#{END}#\"\n", buflen=60)
at channel.c:2114
#9 0x00007faa5be0f721 in libssh2_channel_write_ex
(channel=0x7faa54044c60, stream_id=0,
buf=0x41b6fbf0 "echo \"#{START}#$(echo
'[*463794*]'
2>&1)#{RES}#${?}#{END}#\"\n", buflen=60)
at channel.c:2161
-- Comment(by stuge): Can you reproduce with libssh2 version 1.2.4? -- Ticket URL: <http://trac.libssh2.org/ticket/117#comment:3> libssh2 <http://trac.libssh2.org/> C library for writing portable SSH2 clients _______________________________________________ libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-develReceived on 2010-02-16