You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@mesos.apache.org by "Alexander Rojas (JIRA)" <ji...@apache.org> on 2018/01/19 11:20:00 UTC

[jira] [Comment Edited] (MESOS-7076) libprocess tests fail when using libevent 2.1.8

    [ https://issues.apache.org/jira/browse/MESOS-7076?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16332124#comment-16332124 ] 

Alexander Rojas edited comment on MESOS-7076 at 1/19/18 11:19 AM:
------------------------------------------------------------------

After lots of debugging I found that the issues in both linux and macos are different.

In linux, the server breaks while [accepting a connection|https://github.com/apache/mesos/blob/19cf3068b81355818a9c4cdb797883f2b73cdbce/3rdparty/libprocess/src/libevent_ssl_socket.cpp#L1176], while the client breaks during the {{connect()}} step. The issues are similar, the variable {{events}} is marked with both {{BEV_EVENT_ERROR}} and {{BEV_EVENT_READ}} (which is curious for the client) as mentioned before, neither libevent nor openssl mention any error having happened, however the socket never properly transitions from a listening state to an accepted state.

In macos the connection succeeds and the client is able to send data to the server, however the [{{recv_callback()}}|https://github.com/apache/mesos/blob/19cf3068b81355818a9c4cdb797883f2b73cdbce/3rdparty/libprocess/src/libevent_ssl_socket.cpp#L236] is never called by the server, indicating that the data is never received.

As a sidenote, the output of the client, which runs as subprocess is always discarded by the tests, which could cause some confusion for anyone trying to debug this issue. To get any output, one needs to change the std out from [{{process::Subprocess::PIPE()}}|https://github.com/apache/mesos/blob/19cf3068b81355818a9c4cdb797883f2b73cdbce/3rdparty/libprocess/include/process/ssl/gtest.hpp#L372] to {{process::subprocess::FD(STDOUT_FILENO)}}.


was (Author: arojas):
After lots of debugging I found that the issues in both linux and macos are different. 

In linux, the server breaks while [accepting a connection|https://github.com/apache/mesos/blob/19cf3068b81355818a9c4cdb797883f2b73cdbce/3rdparty/libprocess/src/libevent_ssl_socket.cpp#L1176], while the client breaks during the {{connect()}} step. The issues are similar, the variable {{events}} is marked with both `BEV_EVENT_ERROR` and `BEV_EVENT_READ`  (which is curious for the client) as mentioned before, neither libevent nor openssl mention any error having happened, however the socket never properly transitions from a listening state to an accepted state.

In macos the connection succeeds and the client is able to send data to the server, however the [{{recv_callback()}}|https://github.com/apache/mesos/blob/19cf3068b81355818a9c4cdb797883f2b73cdbce/3rdparty/libprocess/src/libevent_ssl_socket.cpp#L236] is never called by the server, indicating that the data is never received.

As a sidenote, the output of the client, which runs as subprocess is always discarded by the tests, which could cause some confusion for anyone trying to debug this issue. To get any output, one needs to change the std out from [{{process::Subprocess::PIPE()}}|https://github.com/apache/mesos/blob/19cf3068b81355818a9c4cdb797883f2b73cdbce/3rdparty/libprocess/include/process/ssl/gtest.hpp#L372] to {{process::subprocess::FD(STDOUT_FILENO)}}.

> libprocess tests fail when using libevent 2.1.8
> -----------------------------------------------
>
>                 Key: MESOS-7076
>                 URL: https://issues.apache.org/jira/browse/MESOS-7076
>             Project: Mesos
>          Issue Type: Bug
>          Components: libprocess, test
>         Environment: macOS 10.12.3, libevent 2.1.8 (installed via Homebrew)
>            Reporter: Jan Schlicht
>            Priority: Major
>
> Running {{libprocess-tests}} on Mesos compiled with {{--enable-libevent --enable-ssl}} on an operating system using libevent 2.1.8, SSL related tests fail like
> {noformat}
> [ RUN      ] SSLTest.SSLSocket
> I0207 15:20:46.017881 2528580544 openssl.cpp:419] CA file path is unspecified! NOTE: Set CA file path with LIBPROCESS_SSL_CA_FILE=<filepath>
> I0207 15:20:46.017904 2528580544 openssl.cpp:424] CA directory path unspecified! NOTE: Set CA directory path with LIBPROCESS_SSL_CA_DIR=<dirpath>
> I0207 15:20:46.017918 2528580544 openssl.cpp:429] Will not verify peer certificate!
> NOTE: Set LIBPROCESS_SSL_VERIFY_CERT=1 to enable peer certificate verification
> I0207 15:20:46.017923 2528580544 openssl.cpp:435] Will only verify peer certificate if presented!
> NOTE: Set LIBPROCESS_SSL_REQUIRE_CERT=1 to require peer certificate verification
> WARNING: Logging before InitGoogleLogging() is written to STDERR
> I0207 15:20:46.033001 2528580544 openssl.cpp:419] CA file path is unspecified! NOTE: Set CA file path with LIBPROCESS_SSL_CA_FILE=<filepath>
> I0207 15:20:46.033179 2528580544 openssl.cpp:424] CA directory path unspecified! NOTE: Set CA directory path with LIBPROCESS_SSL_CA_DIR=<dirpath>
> I0207 15:20:46.033196 2528580544 openssl.cpp:429] Will not verify peer certificate!
> NOTE: Set LIBPROCESS_SSL_VERIFY_CERT=1 to enable peer certificate verification
> I0207 15:20:46.033201 2528580544 openssl.cpp:435] Will only verify peer certificate if presented!
> NOTE: Set LIBPROCESS_SSL_REQUIRE_CERT=1 to require peer certificate verification
> ../../../3rdparty/libprocess/src/tests/ssl_tests.cpp:257: Failure
> Failed to wait 15secs for Socket(socket.get()).recv()
> [  FAILED  ] SSLTest.SSLSocket (15196 ms)
> {noformat}
> Tests failing are
> {noformat}
> SSLTest.SSLSocket
> SSLTest.NoVerifyBadCA
> SSLTest.VerifyCertificate
> SSLTest.ProtocolMismatch
> SSLTest.ECDHESupport
> SSLTest.PeerAddress
> SSLTest.HTTPSGet
> SSLTest.HTTPSPost
> SSLTest.SilentSocket
> SSLTest.ShutdownThenSend
> SSLVerifyIPAdd/SSLTest.BasicSameProcess/0, where GetParam() = "false"
> SSLVerifyIPAdd/SSLTest.BasicSameProcess/1, where GetParam() = "true"
> SSLVerifyIPAdd/SSLTest.BasicSameProcessUnix/0, where GetParam() = "false"
> SSLVerifyIPAdd/SSLTest.BasicSameProcessUnix/1, where GetParam() = "true"
> SSLVerifyIPAdd/SSLTest.RequireCertificate/0, where GetParam() = "false"
> SSLVerifyIPAdd/SSLTest.RequireCertificate/1, where GetParam() = "true"
> {noformat}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)