Subject: [ libssh2-Bugs-2800519 ] libssh2 library is not thread safe

[ libssh2-Bugs-2800519 ] libssh2 library is not thread safe

From: SourceForge.net <noreply_at_sourceforge.net>
Date: Thu, 04 Jun 2009 06:55:02 +0000

Bugs item #2800519, was opened at 2009-06-03 15:55
Message generated for change (Comment added) made by bagder
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=703942&aid=2800519&group_id=125852

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
>Category: misc
Group: None
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: Nobody/Anonymous (nobody)
>Assigned to: Daniel Stenberg (bagder)
Summary: libssh2 library is not thread safe

Initial Comment:
By default, there is no "-D_REENTRANT" flag passed to the C preprocessor (nor any -mt (Sun Studio) or -pthreads (gcc) option to the C compiler).
Note: I'm using libssh2 on Solaris 9/10, using Sun Studio 12.

Referencing errno in many pieces of code makes the whole library not thread safe (libssh2_session_startup() for example). There are many EAGAIN errors that are now thrown internally (because of new non-blocking sockets in 1.1), but unfortunately, the errno value is not correctly accessed, leading to undefined behaviour. This can be "easily" reproduced using something like (compiled in a thread safe manner):
  Th.1: set errno
  Th.1: detach thread 2
  Th.2: establish an SSH connection. libssh2_session_startup() will usually fail.

I've passed CPPFLAGS="-D_REENTRANT" to the configure script, and things seem now to be OK.

Miscellaneous defects of the "configure" script:
  - Specifying LDFLAGS="-mt -pthreads" does not pass these options to the ld linker.
  - Specifying --disable-debug still compiles with "-g".

----------------------------------------------------------------------

>Comment By: Daniel Stenberg (bagder)
Date: 2009-06-04 08:55

Message:
The configure script obviously needs to check for _REENTRANT. I'm confident
we can get some inspiration and code from here:

http://curl.haxx.se/lxr/source/m4/curl-reentrant.m4#L390

You able to provide a patch?

----------------------------------------------------------------------

You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=703942&aid=2800519&group_id=125852

------------------------------------------------------------------------------
OpenSolaris 2009.06 is a cutting edge operating system for enterprises
looking to deploy the next generation of Solaris that includes the latest
innovations from Sun and the OpenSource community. Download a copy and
enjoy capabilities such as Networking, Storage and Virtualization.
Go to: http://p.sf.net/sfu/opensolaris-get
_______________________________________________
libssh2-devel mailing list
libssh2-devel_at_lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libssh2-devel
Received on 2009-06-04