Merge pull request #17344 from keszybz/bus-connect-more-logs
Add some debug logs to help diagnose bus connections
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
@@ -1330,7 +1340,8 @@ int bus_set_address_user(sd_bus *b) {
|
||||
|
||||
e = secure_getenv("XDG_RUNTIME_DIR");
|
||||
if (!e)
|
||||
return -ENOENT;
|
||||
return log_debug_errno(SYNTHETIC_ERRNO(ENOMEDIUM),
|
||||
"sd-bus: $XDG_RUNTIME_DIR not set, cannot connect to user bus.");
|
||||
|
||||
ee = bus_address_escape(e);
|
||||
if (!ee)
|
||||
|
||||
@@ -23,7 +23,7 @@ static int test_bus_open(void) {
|
||||
int r;
|
||||
|
||||
r = sd_bus_open_user(&bus);
|
||||
if (IN_SET(r, -ECONNREFUSED, -ENOENT)) {
|
||||
if (IN_SET(r, -ECONNREFUSED, -ENOENT, -ENOMEDIUM)) {
|
||||
r = sd_bus_open_system(&bus);
|
||||
if (IN_SET(r, -ECONNREFUSED, -ENOENT))
|
||||
return r;
|
||||
|
||||
@@ -55,7 +55,7 @@ int main(int argc, char *argv[]) {
|
||||
assert_se(r >= 0);
|
||||
|
||||
r = sd_bus_open_user(&a);
|
||||
if (IN_SET(r, -ECONNREFUSED, -ENOENT)) {
|
||||
if (IN_SET(r, -ECONNREFUSED, -ENOENT, -ENOMEDIUM)) {
|
||||
r = sd_bus_open_system(&a);
|
||||
if (IN_SET(r, -ECONNREFUSED, -ENOENT))
|
||||
return log_tests_skipped("Failed to connect to bus");
|
||||
|
||||
Reference in New Issue
Block a user