From e695e5db09ea4e1dcb2290202904cf0e25ec70db Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Sun, 17 Dec 2017 13:47:12 +1030 Subject: [PATCH] lightningd: require explicit LIGHTNINGD_DEV_MEMLEAK env var to do memleak. Otherwise every allocation and free is slowed down. Signed-off-by: Rusty Russell --- lightningd/lightningd.c | 3 ++- lightningd/memdump.c | 4 ++++ tests/test_lightningd.py | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lightningd/lightningd.c b/lightningd/lightningd.c index 8c011ea2c..96eab8550 100644 --- a/lightningd/lightningd.c +++ b/lightningd/lightningd.c @@ -74,7 +74,8 @@ static struct lightningd *new_lightningd(const tal_t *ctx, ld->dev_disconnect_fd = -1; ld->dev_hsm_seed = NULL; ld->dev_subdaemon_fail = false; - memleak_init(ld, backtrace_state); + if (getenv("LIGHTNINGD_DEV_MEMLEAK")) + memleak_init(ld, backtrace_state); #endif list_head_init(&ld->peers); diff --git a/lightningd/memdump.c b/lightningd/memdump.c index 9f2434f1c..9d14f2f20 100644 --- a/lightningd/memdump.c +++ b/lightningd/memdump.c @@ -144,6 +144,10 @@ static void json_memleak(struct command *cmd, { struct json_result *response = new_json_result(cmd); + if (!getenv("LIGHTNINGD_DEV_MEMLEAK")) + command_fail(cmd, + "Leak detection needs $LIGHTNINGD_DEV_MEMLEAK"); + json_object_start(response, NULL); scan_mem(cmd, response, cmd->ld); json_object_end(response); diff --git a/tests/test_lightningd.py b/tests/test_lightningd.py index c6fe7950f..a828feea2 100644 --- a/tests/test_lightningd.py +++ b/tests/test_lightningd.py @@ -108,6 +108,7 @@ class NodeFactory(object): daemon.cmd_line.append("--dev-disconnect=dev_disconnect") if DEVELOPER: daemon.cmd_line.append("--dev-fail-on-subdaemon-fail") + daemon.env["LIGHTNINGD_DEV_MEMLEAK"] = "1" if VALGRIND: daemon.env["LIGHTNINGD_DEV_NO_BACKTRACE"] = "1" opts = [] if options is None else options