[ https://issues.apache.org/jira/browse/MESOS-6919?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15898414#comment-15898414 ]
Joseph Wu edited comment on MESOS-6919 at 3/7/17 12:02 AM: ----------------------------------------------------------- This leak is not strictly limited to the reinitialization logic. Here is an even smaller repro (assuming libprocess is started with SSL): {code} while (true) { Try<Socket> create = Socket::create(); ASSERT_SOME(create); Socket* __s__ = new Socket(create.get()); Try<Address> bind = __s__->bind(Address::ANY_ANY()); ASSERT_SOME(bind); Try<Nothing> listen = __s__->listen(10); ASSERT_SOME(listen) __s__->accept().discard(); delete __s__; __s__ = nullptr; } {code} was (Author: kaysoky): This leak is not strictly limited to the reinitialization logic. Here is an even smaller repro (assuming libprocess is started with SSL): {code} while (true) { Try<Socket> create = Socket::create(); ASSERT_SOME(create); Socket* __s__ = new Socket(create.get()); std::cout << "Test socket == " << __s__->get() << std::endl; Try<Address> bind = __s__->bind(Address::ANY_ANY()); ASSERT_SOME(bind); Try<Nothing> listen = __s__->listen(10); ASSERT_SOME(listen) __s__->accept().discard(); delete __s__; __s__ = nullptr; } {code} > Libprocess reinit code leaks SSL server socket FD > ------------------------------------------------- > > Key: MESOS-6919 > URL: https://issues.apache.org/jira/browse/MESOS-6919 > Project: Mesos > Issue Type: Bug > Components: libprocess > Reporter: Greg Mann > Labels: libprocess, ssl > > After [this commit|https://github.com/apache/mesos/commit/789e9f7], it was > discovered that tests which use {{process::reinitialize}} to switch between > SSL and non-SSL modes will leak the file descriptor associated with the > server socket {{\_\_s\_\_}}. This can be reproduced by running the following > trivial test in repetition: > {code} > diff --git a/src/tests/scheduler_tests.cpp b/src/tests/scheduler_tests.cpp > index 1ff423f..d5fd575 100644 > --- a/src/tests/scheduler_tests.cpp > +++ b/src/tests/scheduler_tests.cpp > @@ -1821,6 +1821,12 @@ INSTANTIATE_TEST_CASE_P( > #endif // USE_SSL_SOCKET > +TEST_P(SchedulerSSLTest, LeakTest) > +{ > + ::sleep(1); > +} > + > + > // Tests that a scheduler can subscribe, run a task, and then tear itself > down. > TEST_P(SchedulerSSLTest, RunTaskAndTeardown) > { > {code} -- This message was sent by Atlassian JIRA (v6.3.15#6346)