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.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2020-10-14 17:34:07 +02:00
parent 0e569a439a
commit 165fee860a
3 changed files with 27 additions and 1 deletions
+7 -1
View File
@@ -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)
+10
View File
@@ -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;
+10
View File
@@ -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;