#213: segfault while calling some API in multithreads
---------------------------------------------------------------------------------------+
Reporter: www.google.com/accounts/o8/id?id=aitoawm7w0npnppytaxsfxvbcdtodu9fots4nnu | Owner:
Type: defect | Status: closed
Priority: normal | Milestone: 1.2.8
Component: crypto | Version: 1.2.7
Resolution: invalid | Keywords:
Blocks: | Blocked By:
---------------------------------------------------------------------------------------+
Changes (by stuge):
* status: new => closed
* resolution: => invalid
Old description:
> I don't know if libssh2 is thread safe.but I think it should be that.
> when I call
> libssh2_session_startup(),libssh2_userauth_publickey_fromfile().... it
> will cause a segfault sometimes
>
> #0 0x0000000000000000 in ?? ()
> (gdb) where
> #0 0x0000000000000000 in ?? ()
> #1 0x00002b1b9b176951 in _libssh2_cipher_crypt (ctx=0x17707510,
> algo=<value optimized out>, encrypt=<value optimized out>,
> block=0x17b603f8
> "耇0\021M\232侵\a楗.蘒\224}\017餹鱘227\b赲210V^鱘222@]穃204贵\024Qu=\032酬{馶231)U‐004?2\214悯\022U]肻214\030綠1nk鱟kXrL死燶002\025\213胤T\205\235V<\234b郐轡0037205玕177!b5黒031\227|0(>v驤邀Z\035酆A(玟CTD\032\006\023芋\230k鸤237圉続\234wA`H\004\032}f覾213K醝|\221\206醆237sF矛妪\231)W騄\031鳏籺\"鋡"...)
> at openssl.c:197
> #2 0x00002b1b9b173e3d in decrypt (session=0x17b601e0,
> source=0x17b603f8
> "耇0\021M\232侵\a楗.蘒\224}\017餹鱘227\b赲210V^鱘222@]穃204贵\024Qu=\032酬{馶231)U‐004?2\214悯\022U]肻214\030綠1nk鱟kXrL死燶002\025\213胤T\205\235V<\234b郐轡0037205玕177!b5黒031\227|0(>v驤邀Z\035酆A(玟CTD\032\006\023芋\230k鸤237圉続\234wA`H\004\032}f覾213K醝|\221\206醆237sF矛妪\231)W騄\031鳏籺\"鋡"...,
> dest=0x2aaab407e63b "椽*", len=<value optimized out>) at transport.c:138
> #3 0x00002b1b9b1740dd in _libssh2_transport_read (session=0x17b601e0) at
> transport.c:538
> #4 0x00002b1b9b168345 in _libssh2_packet_requirev (session=0x17b601e0,
> packet_types=0x2b1b9b177906 "cd", data=0x4f5fbe48, data_len=0x4f5fbe40,
> match_ofs=1, match_buf=0x17b41ed8 "", match_len=4, state=0x17b41ee0)
> at packet.c:1146
> #5 0x00002b1b9b16236c in _libssh2_channel_process_startup
> (channel=0x17b41db0, request=0x40650d "exec", request_len=4,
> message=<value optimized out>,
> message_len=63) at channel.c:1295
> #6 0x00002b1b9b162475 in libssh2_channel_process_startup
> (channel=0x17b41db0, req=0x40650d "exec", req_len=4,
> msg=0x1770af90 "cd /home/work/opbin/medusa/ && ./medusaStat
> --time=201102241108", msg_len=63) at channel.c:1334
> #7 0x00000000004050f0 in ssh_exec (user=0x40654c "work", h=0x17b0bd10
> "jx-cm-as22.jx",
> cmd=0x1770af90 "cd /home/work/opbin/medusa/ && ./medusaStat
> --time=201102241108", output=0x17716790 "") at mds_crond.c:194
> #8 0x00000000004052c6 in cronworker (a=0x7fff0f95cbf0) at
> mds_crond.c:261
> #9 0x0000003356806367 in start_thread () from /lib64/libpthread.so.0
> #10 0x0000003355cd30ad in clone () from /lib64/libc.so.6
New description:
I don't know if libssh2 is thread safe.but I think it should be that. when
I call libssh2_session_startup(),libssh2_userauth_publickey_fromfile()....
it will cause a segfault sometimes
#0 0x0000000000000000 in ?? ()
(gdb) where
#0 0x0000000000000000 in ?? ()
#1 0x00002b1b9b176951 in _libssh2_cipher_crypt (ctx=0x17707510,
algo=<value optimized out>, encrypt=<value optimized out>,
block=0x17b603f8
"耇0\021M\232侵\a楗.蘒\224}\017餹鱘227\b赲210V^鱘222@]穃204贵\024Qu=\032酬{馶231)U‐004?2\214悯\022U]肻214\030綠1nk鱟kXrL死燶002\025\213胤T\205\235V<\234b郐轡0037205玕177!b5黒031\227|0(>v驤邀Z\035酆A(玟CTD\032\006\023芋\230k鸤237圉続\234wA`H\004\032}f覾213K醝|\221\206醆237sF矛妪\231)W騄\031鳏籺\"鋡"...)
at openssl.c:197
#2 0x00002b1b9b173e3d in decrypt (session=0x17b601e0,
source=0x17b603f8
"耇0\021M\232侵\a楗.蘒\224}\017餹鱘227\b赲210V^鱘222@]穃204贵\024Qu=\032酬{馶231)U‐004?2\214悯\022U]肻214\030綠1nk鱟kXrL死燶002\025\213胤T\205\235V<\234b郐轡0037205玕177!b5黒031\227|0(>v驤邀Z\035酆A(玟CTD\032\006\023芋\230k鸤237圉続\234wA`H\004\032}f覾213K醝|\221\206醆237sF矛妪\231)W騄\031鳏籺\"鋡"...,
dest=0x2aaab407e63b "椽*", len=<value optimized out>) at transport.c:138
#3 0x00002b1b9b1740dd in _libssh2_transport_read (session=0x17b601e0) at
transport.c:538
#4 0x00002b1b9b168345 in _libssh2_packet_requirev (session=0x17b601e0,
packet_types=0x2b1b9b177906 "cd", data=0x4f5fbe48, data_len=0x4f5fbe40,
match_ofs=1, match_buf=0x17b41ed8 "", match_len=4, state=0x17b41ee0)
at packet.c:1146
#5 0x00002b1b9b16236c in _libssh2_channel_process_startup
(channel=0x17b41db0, request=0x40650d "exec", request_len=4,
message=<value optimized out>,
message_len=63) at channel.c:1295
#6 0x00002b1b9b162475 in libssh2_channel_process_startup
(channel=0x17b41db0, req=0x40650d "exec", req_len=4,
msg=0x1770af90 "cd /home/work/opbin/medusa/ && ./medusaStat
--time=201102241108", msg_len=63) at channel.c:1334
#7 0x00000000004050f0 in ssh_exec (user=0x40654c "work", h=0x17b0bd10
"jx-cm-as22.jx",
cmd=0x1770af90 "cd /home/work/opbin/medusa/ && ./medusaStat
--time=201102241108", output=0x17716790 "") at mds_crond.c:194
#8 0x00000000004052c6 in cronworker (a=0x7fff0f95cbf0) at mds_crond.c:261
#9 0x0000003356806367 in start_thread () from /lib64/libpthread.so.0
#10 0x0000003355cd30ad in clone () from /lib64/libc.so.6
-- Comment: Replying to [ticket:213 www.google.com/accounts/o8/id?id=aitoawm7w0npnppytaxsfxvbcdtodu9fots4nnu]: > I don't know if libssh2 is thread safe. It is not. > but I think it should be that. That would be great. Please come discuss it on the mailing list, or just send patches. Thanks! -- Ticket URL: <http://trac.libssh2.org/ticket/213#comment:1> 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 2011-02-24