From 276d8dfe41da95f04fd573f9cbb3bcf82c2cbd78 Mon Sep 17 00:00:00 2001 From: Steven Moreland Date: Wed, 28 Sep 2022 23:56:39 +0000 Subject: binderRpcTest: backtrace on leaked session There is a bug we're hitting here where sessions leak, but it only seems to repro on infra. Adding additional logging to narrow down the issue. Bug: 244325464 Test: binderRpcTest Change-Id: I6586534e23ee884be6aa7a6e25258ae2c07aedd9 --- libs/binder/tests/binderRpcTest.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/libs/binder/tests/binderRpcTest.cpp b/libs/binder/tests/binderRpcTest.cpp index 21b0354b60..9a6d4dfa53 100644 --- a/libs/binder/tests/binderRpcTest.cpp +++ b/libs/binder/tests/binderRpcTest.cpp @@ -85,6 +85,11 @@ static std::string WaitStatusToString(int wstatus) { return base::StringPrintf("unexpected state %d", wstatus); } +static void debugBacktrace(pid_t pid) { + std::cerr << "TAKING BACKTRACE FOR PID " << pid << std::endl; + system((std::string("debuggerd -b ") + std::to_string(pid)).c_str()); +} + class Process { public: Process(Process&&) = default; @@ -125,6 +130,8 @@ public: // Kill the process. Avoid if possible. Shutdown gracefully via an RPC instead. void terminate() { kill(mPid, SIGTERM); } + pid_t getPid() { return mPid; } + private: std::function mCustomExitStatusCheck; pid_t mPid = 0; @@ -173,7 +180,9 @@ struct ProcessSession { wp weakSession = session; session = nullptr; - EXPECT_EQ(nullptr, weakSession.promote()) << "Leaked session"; + + EXPECT_EQ(nullptr, weakSession.promote()) + << (debugBacktrace(host.getPid()), debugBacktrace(getpid()), "Leaked session"); } } }; -- cgit v1.2.3-59-g8ed1b