From 1de9aa792f2c0d3b0b959283405ebf081d8a575b Mon Sep 17 00:00:00 2001 From: Oleg Chaplashkin Date: Wed, 13 Mar 2024 18:40:05 +0400 Subject: [PATCH] Add leak detection during server termination Memory leak detection may occur when working with the server: g.test_foo = function() ... g.server:exec(function() -- there is an error in `stderr` here end) g.server:exec(function() -- server is alive end) t.assert(true) end) g.after_all(function() g.server:drop() -- `test_foo` has been passed end) We have added a check of the `stderr` from the server for the presence of the `LeakSanitizer` substring. If it's found, an error will be caused (test will be failed). Closes #349 --- CHANGELOG.md | 1 + luatest/server.lua | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6da3951..6580849 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## Unreleased - Add logging to unified file (gh-324). +- Add memory leak detection during server termination (gh-349). ## 1.0.1 diff --git a/luatest/server.lua b/luatest/server.lua index 5506871..702cc13 100644 --- a/luatest/server.lua +++ b/luatest/server.lua @@ -459,6 +459,17 @@ function Server:stop() ) ) end + if self.process.output_beautifier.stderr:find('LeakSanitizer') then + error( + ('Memory leak during process termination (alias: %s, workdir: %s, pid: %s)\n%s') + :format( + self.alias, + fio.basename(self.workdir), + self.process.pid, + self.process.output_beautifier.stderr + ) + ) + end log.debug('Killed server process PID ' .. self.process.pid) self.process = nil end