On Thu, May 15, 2014 at 10:40:48AM +0200, Jimmy Assarsson wrote: > Now I've tested it, and it fixed the problem :) Great, thanks for testing. I'll push it to master then.
Zbyszek > 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