Alfred,

(@ALL: sorry to hitchhike this thread)

in your configure call you use --with-XXX-prefix - this never worked for 
me, neither in the stable nor the development versions of libssh2 on AIX, 
Solaris and Linux.

Have you checked that the compiled libssh2.so was actually linked to the 
shlibs in $HOME/...?

I still suspect that --with-XXX-prefix does not work in libssh2. The build 
process always used the standard libs located in /usr/lib (or /usr/lib64 
etc.) regardless of the settings of --with-XXX-prefix.

If you find the same we may get on to find and fix it (or file a bug 
report for the configure experts).

Thanks!

Mit freundlichen Gruessen / best regards

Michael Kwasigroch
Development
_______________________________________________________________

Office number:   +49 40 514 52-175 
Office fax:      +49 40 514 52-100 
Email:           mkwas...@intercope.com 

www.intercope.com



From:   Alfred Gebert <alfred.geb...@gmail.com>
To:     libssh2 development <libssh2-devel@cool.haxx.se>
Date:   13.02.2014 09:16
Subject:        Re: multithread calls 
libssh2_session_handshake,error,return -13
Sent by:        "libssh2-devel" <libssh2-devel-boun...@cool.haxx.se>



On Wed, Feb 12, 2014 at 4:10 AM, xingzhiming <xingzhim...@gmail.com> 
wrote:
>
> hi,all
> When using multiple threads, in libssh2_session_handshake abnormal.
>  If you do not multi-threaded, no problem.  How to use multi-thread 
calls libssh2?
>

I had a similar problem. Perhaps my solution can you help as well.

If I created a session I got the error:
  Unable to exchange encryption keys

I enabled verbose logging and did run the application with truss
(similar to strace on Linux) on Solaris.

  /13: recv(11, 0xFFFFFD7FFBA05B17, 1, 0) Err#11 EAGAIN
  _libssh2_recv: rc=-1 errno=125
  [libssh2] 0.758411 Socket: Error recving 1 bytes: 125

On the first line above a recv() system call returned with -1 and
errno was 11 (EAGAIN). But on the second and third line errno was 125.
The second line is a debug output which I added to the source directly
after the recv() statement.

The source of the problem was that I didn't compile libssh2 with
correct compiler flags for multi-threading. If you do not pay
attention on Solaris then errno is a global variable. Using gcc
compiler you can add "-pthread" as compile and link flag to enable
thread local storage of errno. Using -D_REENTRANT on Solaris as
compile flag also works. My configure call is now is e.g.
  CFLAGS="-m64 -pthread" LDFLAGS="-m64 -pthread" ./configure
--with-openssl --with-libssl-prefix=$HOME/local --with-libz
--with-libz-prefix=$HOME/local --prefix=$HOME/local
_______________________________________________
libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel


________________________________________________________________ 
INTERCOPE International Communication Products Engineering GmbH 
Himmelstrasse 12-16, 22299 Hamburg, Germany 
Managing Directors: Reinhart Laumer, Frank Kollender 
Commercial Registry: Amtsgericht Hamburg, HRB 31 638 
________________________________________________________________ 
This e-mail may contain confidential and/or privileged information. If you are 
not the intended recipient (or have received this e-mail in error) please 
notify the sender immediately and destroy this e-mail. Any unauthorized 
copying, disclosure or distribution of the material in this e-mail is strictly 
forbidden. 
Diese E-Mail enthält vertrauliche und/oder rechtlich geschützte Informationen. 
Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrtümlich erhalten 
haben, informieren Sie bitte sofort den Absender und vernichten Sie diese Mail. 
Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail ist nicht 
gestattet. 
________________________________________________________________ 
_______________________________________________
libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel

Reply via email to