Now I've tested it, and it fixed the problem :) Thanks, Jimmy
On Tue, May 13, 2014 at 11:31 PM, Zbigniew Jędrzejewski-Szmek <zbys...@in.waw.pl> wrote: > On Tue, May 13, 2014 at 07:40:53PM +0200, Umut Tezduyar Lindskog wrote: >> It is also reproducible by just loosing the carrier on the link. Maybe new >> async close is a candidate to solve it. >> >> On Tuesday, April 29, 2014, Harald Hoyer <harald.ho...@gmail.com> wrote: >> >> > Am 28.04.2014 13:33, schrieb Jimmy Assarsson: >> > > Hi, >> > > >> > > We stumbled upon a freeze/block in systemd. >> > > The problem occurs when a rshd (socket activated) execution is >> > completed, the network connection is down and systemd is closing the >> > socket. >> > > This causes a long (60 seconds) freeze where it's not possible to >> > communicate with systemd. >> > > Do you have any idea on what is causing this or how we can investigate >> > this further? > Can you check if this patch fixes the problem: > > -----------------&<--------------------------------------------- > Subject: [PATCH] core: close socket fds asynchronously > > http://lists.freedesktop.org/archives/systemd-devel/2014-April/018928.html > --- > src/core/service.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/src/core/service.c b/src/core/service.c > index 694a265..7461ec3 100644 > --- a/src/core/service.c > +++ b/src/core/service.c > @@ -27,6 +27,7 @@ > #include <linux/reboot.h> > #include <sys/syscall.h> > > +#include "async.h" > #include "manager.h" > #include "unit.h" > #include "service.h" > @@ -222,7 +223,7 @@ static void service_close_socket_fd(Service *s) { > if (s->socket_fd < 0) > return; > > - s->socket_fd = safe_close(s->socket_fd); > + s->socket_fd = asynchronous_close(s->socket_fd); > } > > static void service_connection_unref(Service *s) { > @@ -2705,7 +2706,7 @@ static int service_deserialize_item(Unit *u, const char > *key, const char *value, > log_debug_unit(u->id, "Failed to parse socket-fd > value %s", value); > else { > > - safe_close(s->socket_fd); > + asynchronous_close(s->socket_fd); > s->socket_fd = fdset_remove(fds, fd); > } > } else if (streq(key, "main-exec-status-pid")) { > -- > 1.9.0 > ----------------->&--------------------------------------------- > > Thanks, > Zbyszek _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel