Hello all,

I am having significant issues with (near immediate) deadlock when trying to 
send data out a single openssl bufferevent from two separate threads. The 
individual threads themselves send complete messages with each write. This 
should present no real problem from a synchronization perspective. In fact, the 
code works flawlessly when using ordinary bufferevents (not ssl bufferevents).

Are there any known issues with writing to a single openssl bufferevent from 
multiple threads concurrently? Should I have the expectation of this working, 
presuming my code is written correctly? I believe I have initialized libevent 
and openssl correctly for multithreaded execution.

Thanks,
-John


More info, for those interested:

My code fails in the same manner on both OSX and Linux. Both are built with 
multithreaded libevent/openssl support. (Verified at build time, not 
programatically. What's a good way to test openssl itself to see if it was 
built thread safe? I have verified openssl is calling my locking routines with 
a variety of lock indexes and the like)

I am running:
SSL version: OpenSSL 1.0.1c 10 May 2012
Libevent version: 2.0.21-stable

I have done the following:

1. Initialized openssl per Viega/Messier/Chandra, "Network Security with 
OpenSSL". (Before using any SSL.)
2. Initialized libevent with evthread_use_pthreads() (Before using any 
libevent- and verified result)
3. Use option BEV_OPT_THREADSAFE on the bufferevents being created.

And the following, none of which should be required, and none of which helped:

1. Used a global mutex surrounding all calls to libevent.
2. called evbuffer_enable_locking() on both evbuffers associated with the 
bufferevent.

And verified, for sanity:

1. The shared libraries I am loading are the libraries I expect the system to 
use.


My server is simply openssl acting as server, using some simple genetated 
certificates.

I would be happy to share my test code- but it is ~300ish lines due to 
(primarily) openssl and thread initialization.

***********************************************************************
To unsubscribe, send an e-mail to majord...@freehaven.net with
unsubscribe libevent-users    in the body.

Reply via email to