From 633c3480190e6c607ad60faedfa68db69b7991ca 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. (cherry picked from commit 165fee860a384b2e1ea4317551bc4463b3d53b61) --- 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 344f3dfbab..3b364d3bfd 100644 --- a/src/libsystemd/sd-bus/sd-bus.c +++ b/src/libsystemd/sd-bus/sd-bus.c @@ -1156,6 +1156,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