This is an automated email from the ASF dual-hosted git repository.

alexey pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kudu.git


The following commit(s) were added to refs/heads/master by this push:
     new c71f8abbb [test] avoid coredump in socket-test when failing
c71f8abbb is described below

commit c71f8abbbebb6e8c003090c0bb5866b443b8955f
Author: Alexey Serbin <ale...@apache.org>
AuthorDate: Mon Apr 18 12:26:28 2022 -0700

    [test] avoid coredump in socket-test when failing
    
    I noticed the socket-test crashed when SocketTest.TestRecvReset failed
    with the stack trace below.  This patch updates the code to at least
    avoid the crash in case of a failure.
    
      src/kudu/util/net/socket-test.cc:144: Failure
      Value of: s.message().ToString()
      Expected: contains regular expression "recv error from 127.0.0.1:[0-9]+: 
Resource temporarily unavailable"
        Actual: "recv error from unknown peer: Transport endpoint is not 
connected"
      terminating
      *** Aborted at 1650307680 (unix time) try "date -d @1650307680" if you 
are using GNU date ***
      PC: @     0x7f37ddbe0fb7 gsignal
      *** SIGABRT (@0x3e800005198) received by PID 20888 (TID 0x7f37e10253c0) 
from PID 20888; stack trace: ***
          @           0x437b40 __tsan::CallUserSignalHandler()
          @           0x43a274 rtl_sigaction()
          @     0x7f37de1bd980 (unknown) at ??:0
          @     0x7f37ddbe0fb7 gsignal at ??:0
          @     0x7f37ddbe2921 abort at ??:0
          @           0x43bfd7 __interceptor_abort
          @     0x7f37de791a05 abort_message at ??:0
          @     0x7f37de7763be demangling_terminate_handler() at ??:0
          @     0x7f37de790b58 std::__terminate() at ??:0
          @     0x7f37de790ae8 std::terminate() at ??:0
          @     0x7f37dea76b81 std::__1::thread::~thread() at ??:0
          @           0x4dc097 kudu::SocketTest::DoTestServerDisconnects() at 
src/kudu/util/net/socket-test.cc:147
          @           0x4db093 kudu::SocketTest_TestRecvReset_Test::TestBody() 
at src/kudu/util/net/socket-test.cc:?
          @     0x7f37df11d500 
testing::internal::HandleExceptionsInMethodIfSupported<>() at ??:0
          @     0x7f37df0f2452 testing::Test::Run() at ??:0
          @     0x7f37df0f39ea testing::TestInfo::Run() at ??:0
          @     0x7f37df0f4757 testing::TestSuite::Run() at ??:0
          @     0x7f37df108527 testing::internal::UnitTestImpl::RunAllTests() 
at ??:0
          @     0x7f37df11e6e0 
testing::internal::HandleExceptionsInMethodIfSupported<>() at ??:0
          @     0x7f37df107acd testing::UnitTest::Run() at ??:0
          @     0x7f37e11c2e1c RUN_ALL_TESTS() at ??:0
          @     0x7f37e11c1c6a main at ??:0
          @     0x7f37ddbc3bf7 __libc_start_main at ??:0
          @           0x4306ad (unknown) at ??:?
    
    Change-Id: I5cf8f7b9acfac7b1935e6e6d9b3ac5016ee753d9
    Reviewed-on: http://gerrit.cloudera.org:8080/18425
    Reviewed-by: Andrew Wong <aw...@cloudera.com>
    Tested-by: Alexey Serbin <ale...@apache.org>
---
 src/kudu/util/net/socket-test.cc | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/kudu/util/net/socket-test.cc b/src/kudu/util/net/socket-test.cc
index 882a695d4..dacae8512 100644
--- a/src/kudu/util/net/socket-test.cc
+++ b/src/kudu/util/net/socket-test.cc
@@ -133,17 +133,17 @@ class SocketTest : public KuduTest {
         CHECK_OK(listener_.Close());
       }
     });
+    SCOPED_CLEANUP({
+      t.join();
+    });
 
     Socket client = ConnectToListeningServer();
     int n;
     std::unique_ptr<uint8_t[]> buf(new uint8_t[kEchoChunkSize]);
-    Status s = client.Recv(buf.get(), kEchoChunkSize, &n);
+    const auto s = client.Recv(buf.get(), kEchoChunkSize, &n);
 
-    ASSERT_TRUE(!s.ok());
     ASSERT_TRUE(s.IsNetworkError()) << s.ToString();
     ASSERT_STR_MATCHES(s.message().ToString(), message);
-
-    t.join();
   }
 
   void DoUnixSocketTest(const string& path) {
@@ -166,6 +166,7 @@ class SocketTest : public KuduTest {
               MonoTime::Now() + MonoDelta::FromSeconds(10)));
           CHECK_OK(sock.Close());
         });
+    auto cleanup = MakeScopedCleanup([&] { t.join(); });
 
     Socket client = ConnectToListeningServer();
 
@@ -178,7 +179,9 @@ class SocketTest : public KuduTest {
     char buf[kData.size()];
     ASSERT_OK(client.BlockingRecv(reinterpret_cast<uint8_t*>(buf), 
kData.size(), &n,
                                   MonoTime::Now() + 
MonoDelta::FromSeconds(5)));
+    cleanup.cancel();
     t.join();
+
     ASSERT_OK(client.Close());
 
     ASSERT_EQ(n, kData.size());

Reply via email to