From 7b19bd60cf1ec57a8bd8da1152eae3cbcdd4db34 Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Mon, 18 Sep 2023 12:34:42 +0200 Subject: [PATCH] core: limit the LSan shenanigans to PID 1 Addresses https://github.com/systemd/systemd/pull/29194#pullrequestreview-1630530753. Follow-up to ae5ce7e. --- src/core/main.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/core/main.c b/src/core/main.c index ffdfea8a2e..21582ddd0c 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -3185,13 +3185,15 @@ finish: * LSan check would not print any actionable information and would just crash * PID 1. To make this a bit more helpful, let's try to open /dev/console, * and if we succeed redirect LSan's report there. */ + if (getpid_cached() == 1) { + _cleanup_close_ int tty_fd = -EBADF; - int tty_fd = open_terminal("/dev/console", O_WRONLY|O_NOCTTY|O_CLOEXEC); - if (tty_fd >= 0) - __sanitizer_set_report_fd((void*) (intptr_t) tty_fd); + tty_fd = open_terminal("/dev/console", O_WRONLY|O_NOCTTY|O_CLOEXEC); + if (tty_fd >= 0) + __sanitizer_set_report_fd((void*) (intptr_t) tty_fd); - __lsan_do_leak_check(); - tty_fd = safe_close(tty_fd); + __lsan_do_leak_check(); + } #endif if (r < 0)