diff --git a/src/core/socket.c b/src/core/socket.c index bb1db8e90e..b13becfd5d 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -2357,6 +2357,8 @@ static void socket_enter_running(Socket *s, int cfd_in) { } r = manager_add_job(UNIT(s)->manager, JOB_START, UNIT_DEREF(s->service), JOB_REPLACE, &error, /* ret = */ NULL); + if (r == -EDEADLK) + return (void) log_unit_debug_errno(UNIT(s), r, "Failed to queue service startup job, ignoring: %s", bus_error_message(&error, r)); if (r < 0) goto queue_error; } diff --git a/test/units/TEST-82-SOFTREBOOT.sh b/test/units/TEST-82-SOFTREBOOT.sh index 9f76c86245..e0bf27342b 100755 --- a/test/units/TEST-82-SOFTREBOOT.sh +++ b/test/units/TEST-82-SOFTREBOOT.sh @@ -34,6 +34,56 @@ if [[ -L /run/nextroot ]]; then rm -f /run/nextroot fi +trigger_uevent() { + local rule=/run/udev/rules.d/99-softreboot.rules + + if [[ ! -f "$rule" ]]; then + mkdir -p /run/udev/rules.d + cat >"$rule" <