From 165fee860a384b2e1ea4317551bc4463b3d53b61 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 14 Oct 2020 11:59:23 +0200 Subject: [PATCH] sd-bus: add debug logs where we try to connect When connection to the bus fails it can be mighty hard to figure out what went wrong because we have many different connection mechanisms and we don't log what is happenning. --- src/libsystemd/sd-bus/bus-container.c | 8 +++++++- src/libsystemd/sd-bus/bus-socket.c | 10 ++++++++++ src/libsystemd/sd-bus/sd-bus.c | 10 ++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/libsystemd/sd-bus/bus-container.c b/src/libsystemd/sd-bus/bus-container.c index 40b0e8a947..e85a9eda2b 100644 --- a/src/libsystemd/sd-bus/bus-container.c +++ b/src/libsystemd/sd-bus/bus-container.c @@ -9,6 +9,7 @@ #include "fd-util.h" #include "namespace-util.h" #include "process-util.h" +#include "string-util.h" #include "util.h" int bus_container_connect_socket(sd_bus *b) { @@ -24,10 +25,15 @@ int bus_container_connect_socket(sd_bus *b) { assert(b->nspid > 0 || b->machine); if (b->nspid <= 0) { + log_debug("sd-bus: connecting bus%s%s to machine %s...", + b->description ? " " : "", strempty(b->description), b->machine); + r = container_get_leader(b->machine, &b->nspid); if (r < 0) return r; - } + } else + log_debug("sd-bus: connecting bus%s%s to namespace of PID "PID_FMT"...", + b->description ? " " : "", strempty(b->description), b->nspid); r = namespace_open(b->nspid, &pidnsfd, &mntnsfd, NULL, &usernsfd, &rootfd); if (r < 0) diff --git a/src/libsystemd/sd-bus/bus-socket.c b/src/libsystemd/sd-bus/bus-socket.c index de36a1f278..1a040157f4 100644 --- a/src/libsystemd/sd-bus/bus-socket.c +++ b/src/libsystemd/sd-bus/bus-socket.c @@ -885,6 +885,13 @@ int bus_socket_connect(sd_bus *b) { assert(b->output_fd < 0); assert(b->sockaddr.sa.sa_family != AF_UNSPEC); + if (DEBUG_LOGGING) { + _cleanup_free_ char *pretty = NULL; + (void) sockaddr_pretty(&b->sockaddr.sa, b->sockaddr_size, false, true, &pretty); + log_debug("sd-bus: starting bus%s%s by connecting to %s...", + b->description ? " " : "", strempty(b->description), strnull(pretty)); + } + b->input_fd = socket(b->sockaddr.sa.sa_family, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0); if (b->input_fd < 0) return -errno; @@ -956,6 +963,9 @@ int bus_socket_exec(sd_bus *b) { assert(b->exec_path); assert(b->busexec_pid == 0); + log_debug("sd-bus: starting bus%s%s with %s...", + b->description ? " " : "", strempty(b->description), b->exec_path); + r = socketpair(AF_UNIX, SOCK_STREAM|SOCK_NONBLOCK|SOCK_CLOEXEC, 0, s); if (r < 0) return -errno; diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c index 015a215c42..c602088cf8 100644 --- a/src/libsystemd/sd-bus/sd-bus.c +++ b/src/libsystemd/sd-bus/sd-bus.c @@ -1155,6 +1155,16 @@ static int bus_start_fd(sd_bus *b) { assert(b->input_fd >= 0); assert(b->output_fd >= 0); + if (DEBUG_LOGGING) { + _cleanup_free_ char *pi = NULL, *po = NULL; + (void) fd_get_path(b->input_fd, &pi); + (void) fd_get_path(b->output_fd, &po); + log_debug("sd-bus: starting bus%s%s on fds %d/%d (%s, %s)...", + b->description ? " " : "", strempty(b->description), + b->input_fd, b->output_fd, + pi ?: "???", po ?: "???"); + } + r = fd_nonblock(b->input_fd, true); if (r < 0) return r; -- 2.25.1