Details
Description
LibeventSSLSocketImpl::create is called whenever a potentially ssl-enabled socket is created. It in turn calls openssl::initialize which calls a function reinitialize using os::setenv. Here os::setenv is used to set up SSL-related libprocess environment variables LIBPROCESS_SSL_*.
Since os::setenv is not thread-safe just like the ::setenv it wraps, any calling of functions like os::getenv (or via os::environment) concurrently with the first invocation of LibeventSSLSocketImpl::create performs unsynchronized r/w access to the same data structure in the runtime.
We usually perform most setup of the environment before we start the libprocess runtime with process::initialize from a main function, see e.g., src/slave/main.cpp or src/master/main.cpp and others. It appears that we should move the setup of libprocess' SSL environment variables to a similar spot.
Attachments
Attachments
Issue Links
- is related to
-
MESOS-2407 libprocess segfaults when using GLOG_v=2
- Resolved