91 lines
5.1 KiB
Diff
91 lines
5.1 KiB
Diff
From 85f4849b4b86cd2246d733b48321abf804367d80 Mon Sep 17 00:00:00 2001
|
|
From: Frantisek Sumsal <frantisek@sumsal.cz>
|
|
Date: Fri, 12 May 2023 14:50:52 +0200
|
|
Subject: [PATCH] machine: fix a memory leak when showing multiple machines
|
|
|
|
+ machinectl status long-running long-running long-running
|
|
=================================================================
|
|
==986==ERROR: LeakSanitizer: detected memory leaks
|
|
Direct leak of 1568 byte(s) in 2 object(s) allocated from:
|
|
#0 0x7fe57caba097 in calloc (/lib64/libasan.so.8+0xba097)
|
|
#1 0x7fe57b891e8e in message_from_header ../src/libsystemd/sd-bus/bus-message.c:372
|
|
#2 0x7fe57b892dfd in bus_message_from_malloc ../src/libsystemd/sd-bus/bus-message.c:421
|
|
#3 0x7fe57b9089a8 in bus_socket_make_message ../src/libsystemd/sd-bus/bus-socket.c:1165
|
|
#4 0x7fe57b90affe in bus_socket_read_message ../src/libsystemd/sd-bus/bus-socket.c:1294
|
|
#5 0x7fe57b92db71 in bus_read_message ../src/libsystemd/sd-bus/sd-bus.c:2082
|
|
#6 0x7fe57b933352 in sd_bus_call ../src/libsystemd/sd-bus/sd-bus.c:2483
|
|
#7 0x7fe57b84da61 in sd_bus_call_methodv ../src/libsystemd/sd-bus/bus-convenience.c:183
|
|
#8 0x7fe57b2789e8 in bus_call_method ../src/shared/bus-locator.c:109
|
|
#9 0x40f71c in show_machine ../src/machine/machinectl.c:713
|
|
#10 0x7fe57b65c8cf in dispatch_verb ../src/shared/verbs.c:103
|
|
#11 0x42e9ce in machinectl_main ../src/machine/machinectl.c:2980
|
|
#12 0x42ebf9 in run ../src/machine/machinectl.c:3005
|
|
#13 0x42ed1f in main ../src/machine/machinectl.c:3008
|
|
#14 0x7fe579e4a50f in __libc_start_call_main (/lib64/libc.so.6+0x2750f)
|
|
Indirect leak of 234 byte(s) in 2 object(s) allocated from:
|
|
#0 0x7fe57cab95b5 in __interceptor_realloc.part.0 (/lib64/libasan.so.8+0xb95b5)
|
|
#1 0x7fe57b909822 in bus_socket_read_message ../src/libsystemd/sd-bus/bus-socket.c:1214
|
|
#2 0x7fe57b92db71 in bus_read_message ../src/libsystemd/sd-bus/sd-bus.c:2082
|
|
#3 0x7fe57b933352 in sd_bus_call ../src/libsystemd/sd-bus/sd-bus.c:2483
|
|
#4 0x7fe57b84da61 in sd_bus_call_methodv ../src/libsystemd/sd-bus/bus-convenience.c:183
|
|
#5 0x7fe57b2789e8 in bus_call_method ../src/shared/bus-locator.c:109
|
|
#6 0x40f71c in show_machine ../src/machine/machinectl.c:713
|
|
#7 0x7fe57b65c8cf in dispatch_verb ../src/shared/verbs.c:103
|
|
#8 0x42e9ce in machinectl_main ../src/machine/machinectl.c:2980
|
|
#9 0x42ebf9 in run ../src/machine/machinectl.c:3005
|
|
#10 0x42ed1f in main ../src/machine/machinectl.c:3008
|
|
#11 0x7fe579e4a50f in __libc_start_call_main (/lib64/libc.so.6+0x2750f)
|
|
Indirect leak of 4 byte(s) in 2 object(s) allocated from:
|
|
#0 0x7fe57ca7243b in strdup (/lib64/libasan.so.8+0x7243b)
|
|
#1 0x7fe57b8c1543 in message_parse_fields ../src/libsystemd/sd-bus/bus-message.c:4125
|
|
#2 0x7fe57b893586 in bus_message_from_malloc ../src/libsystemd/sd-bus/bus-message.c:443
|
|
#3 0x7fe57b9089a8 in bus_socket_make_message ../src/libsystemd/sd-bus/bus-socket.c:1165
|
|
#4 0x7fe57b90affe in bus_socket_read_message ../src/libsystemd/sd-bus/bus-socket.c:1294
|
|
#5 0x7fe57b92db71 in bus_read_message ../src/libsystemd/sd-bus/sd-bus.c:2082
|
|
#6 0x7fe57b933352 in sd_bus_call ../src/libsystemd/sd-bus/sd-bus.c:2483
|
|
#7 0x7fe57b84da61 in sd_bus_call_methodv ../src/libsystemd/sd-bus/bus-convenience.c:183
|
|
#8 0x7fe57b2789e8 in bus_call_method ../src/shared/bus-locator.c:109
|
|
#9 0x40f71c in show_machine ../src/machine/machinectl.c:713
|
|
#10 0x7fe57b65c8cf in dispatch_verb ../src/shared/verbs.c:103
|
|
#11 0x42e9ce in machinectl_main ../src/machine/machinectl.c:2980
|
|
#12 0x42ebf9 in run ../src/machine/machinectl.c:3005
|
|
#13 0x42ed1f in main ../src/machine/machinectl.c:3008
|
|
#14 0x7fe579e4a50f in __libc_start_call_main (/lib64/libc.so.6+0x2750f)
|
|
SUMMARY: AddressSanitizer: 1806 byte(s) leaked in 6 allocation(s).
|
|
|
|
(cherry picked from commit efdaa92ecb1b358e9f27f7d263bb3383f6ab69c9)
|
|
(cherry picked from commit 4d29f741c853b95b198f58a3b8f2ae1df175522e)
|
|
(cherry picked from commit ee06c7db0cd9d3d1104ae8bfdd1a6968a6b6b6a9)
|
|
|
|
Conflict:NA
|
|
Reference:https://github.com/systemd/systemd-stable/commit/85f4849b4b86cd2246d733b48321abf804367d80
|
|
---
|
|
src/machine/machinectl.c | 3 +--
|
|
1 file changed, 1 insertion(+), 2 deletions(-)
|
|
|
|
diff --git a/src/machine/machinectl.c b/src/machine/machinectl.c
|
|
index 0f42f9f304..d5f8b5bbb3 100644
|
|
--- a/src/machine/machinectl.c
|
|
+++ b/src/machine/machinectl.c
|
|
@@ -694,9 +694,7 @@ static int show_machine_properties(sd_bus *bus, const char *path, bool *new_line
|
|
}
|
|
|
|
static int show_machine(int argc, char *argv[], void *userdata) {
|
|
-
|
|
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
|
|
- _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
|
|
bool properties, new_line = false;
|
|
sd_bus *bus = userdata;
|
|
int r = 0;
|
|
@@ -717,6 +715,7 @@ static int show_machine(int argc, char *argv[], void *userdata) {
|
|
}
|
|
|
|
for (int i = 1; i < argc; i++) {
|
|
+ _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
|
|
const char *path = NULL;
|
|
|
|
r = bus_call_method(bus, bus_machine_mgr, "GetMachine", &error, &reply, "s", argv[i]);
|
|
--
|
|
2.33.0
|
|
|