* [PATCH] deadlock in script @ 2014-05-30 6:30 Csaba Kos 2014-05-30 9:15 ` Karel Zak 0 siblings, 1 reply; 7+ messages in thread From: Csaba Kos @ 2014-05-30 6:30 UTC (permalink / raw) To: util-linux [-- Attachment #1: Type: text/plain, Size: 386 bytes --] Hi, I use the "script" command to save the output of certain jobs on a heavily loaded Linux cluster. Every now and then the "script" command hangs. I made some modifications to util-linux 2.23 and have been using the patched "script" command without problems for about a year. Attached I'm submitting the patches (updated to the current master) for review. Best regards, Csaba Kos [-- Attachment #2: 0001-script-fix-a-rare-deadlock-after-child-termination.patch --] [-- Type: text/x-diff, Size: 3273 bytes --] From fad482427ddd819a92d1e636e20bbf8adaf721dd Mon Sep 17 00:00:00 2001 From: Csaba Kos <csaba.kos@gmail.com> Date: Fri, 30 May 2014 14:33:32 +0900 Subject: [PATCH 1/2] script: fix a rare deadlock after child termination --- term-utils/script.c | 52 +++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 45 insertions(+), 7 deletions(-) diff --git a/term-utils/script.c b/term-utils/script.c index e5d239c..32906d0 100644 --- a/term-utils/script.c +++ b/term-utils/script.c @@ -36,6 +36,9 @@ * - added Native Language Support * * 2000-07-30 Per Andreas Buer <per@linpro.no> - added "q"-option + * + * 2014-05-30 Csaba Kos <csaba.kos@gmail.com> + * - fixed a rare deadlock after child termination */ /* @@ -114,6 +117,8 @@ int tflg = 0; int forceflg = 0; int isterm; +sigset_t block_mask, unblock_mask; + int die; int resized; @@ -306,6 +311,7 @@ doinput(void) { int errsv = 0; ssize_t cc = 0; char ibuf[BUFSIZ]; + fd_set readfds; /* close things irrelevant for this process */ if (fscript) @@ -314,14 +320,27 @@ doinput(void) { fclose(timingfd); fscript = timingfd = NULL; + FD_ZERO(&readfds); + + /* block SIGCHLD */ + sigprocmask(SIG_SETMASK, &block_mask, &unblock_mask); + while (die == 0) { - if ((cc = read(STDIN_FILENO, ibuf, BUFSIZ)) > 0) { - if (write_all(master, ibuf, cc)) { - warn (_("write failed")); - fail(); + FD_SET(STDIN_FILENO, &readfds); + + /* wait for input or signal (including SIGCHLD) */ + if ((cc = pselect(STDIN_FILENO + 1, &readfds, NULL, NULL, NULL, + &unblock_mask)) > 0) { + + if ((cc = read(STDIN_FILENO, ibuf, BUFSIZ)) > 0) { + if (write_all(master, ibuf, cc)) { + warn (_("write failed")); + fail(); + } } } - else if (cc < 0 && errno == EINTR && resized) + + if (cc < 0 && errno == EINTR && resized) { /* transmit window change information to the child */ if (isterm) { @@ -330,12 +349,15 @@ doinput(void) { } resized = 0; - } else { + } else if (cc <= 0) { errsv = errno; break; } } + /* unblock SIGCHLD */ + sigprocmask(SIG_SETMASK, &unblock_mask, NULL); + /* To be sure that we don't miss any data */ wait_for_empty_fd(slave); wait_for_empty_fd(master); @@ -404,6 +426,7 @@ dooutput(void) { struct timeval tv; double oldtime=time(NULL), newtime; int errsv = 0; + fd_set readfds; close(STDIN_FILENO); #ifdef HAVE_LIBUTIL @@ -416,6 +439,8 @@ dooutput(void) { my_strftime(obuf, sizeof obuf, "%c\n", localtime(&tvec)); fprintf(fscript, _("Script started on %s"), obuf); + FD_ZERO(&readfds); + do { if (die || errsv == EINTR) { struct pollfd fds[] = {{ .fd = master, .events = POLLIN }}; @@ -423,10 +448,23 @@ dooutput(void) { break; } + /* block SIGCHLD */ + sigprocmask(SIG_SETMASK, &block_mask, &unblock_mask); + + FD_SET(master, &readfds); errno = 0; - cc = read(master, obuf, sizeof (obuf)); + + /* wait for input or signal (including SIGCHLD) */ + if ((cc = pselect(master+1, &readfds, NULL, NULL, NULL, + &unblock_mask)) > 0) { + + cc = read(master, obuf, sizeof (obuf)); + } errsv = errno; + /* unblock SIGCHLD */ + sigprocmask(SIG_SETMASK, &unblock_mask, NULL); + if (tflg) gettimeofday(&tv, NULL); -- 1.8.5.rc3.2.gc302941 [-- Attachment #3: 0002-script-fix-spurious-exit-from-input-read-loop-on-EIN.patch --] [-- Type: text/x-diff, Size: 891 bytes --] From a2dd4df349f426c6605e4b151aafccce4b2ea8e7 Mon Sep 17 00:00:00 2001 From: Csaba Kos <csaba.kos@gmail.com> Date: Fri, 30 May 2014 14:51:38 +0900 Subject: [PATCH 2/2] script: fix spurious exit from input read loop on EINTR. --- term-utils/script.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/term-utils/script.c b/term-utils/script.c index 32906d0..63913c8 100644 --- a/term-utils/script.c +++ b/term-utils/script.c @@ -328,6 +328,7 @@ doinput(void) { while (die == 0) { FD_SET(STDIN_FILENO, &readfds); + errno = 0; /* wait for input or signal (including SIGCHLD) */ if ((cc = pselect(STDIN_FILENO + 1, &readfds, NULL, NULL, NULL, &unblock_mask)) > 0) { @@ -349,7 +350,7 @@ doinput(void) { } resized = 0; - } else if (cc <= 0) { + } else if (cc <= 0 && errno != EINTR) { errsv = errno; break; } -- 1.8.5.rc3.2.gc302941 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] deadlock in script 2014-05-30 6:30 [PATCH] deadlock in script Csaba Kos @ 2014-05-30 9:15 ` Karel Zak 2014-05-30 9:52 ` Csaba Kos 0 siblings, 1 reply; 7+ messages in thread From: Karel Zak @ 2014-05-30 9:15 UTC (permalink / raw) To: Csaba Kos; +Cc: util-linux On Fri, May 30, 2014 at 03:30:45PM +0900, Csaba Kos wrote: > diff --git a/term-utils/script.c b/term-utils/script.c > index e5d239c..32906d0 100644 > --- a/term-utils/script.c > +++ b/term-utils/script.c > @@ -36,6 +36,9 @@ > * - added Native Language Support > * > * 2000-07-30 Per Andreas Buer <per@linpro.no> - added "q"-option > + * > + * 2014-05-30 Csaba Kos <csaba.kos@gmail.com> > + * - fixed a rare deadlock after child termination > */ > > /* > @@ -114,6 +117,8 @@ int tflg = 0; > int forceflg = 0; > int isterm; > > +sigset_t block_mask, unblock_mask; This declaration shadows declaration in main() where is also block_mask and unblock_mask -- I guess it's not expected. > + /* block SIGCHLD */ > + sigprocmask(SIG_SETMASK, &block_mask, &unblock_mask); the initialization is where? in main()? > + /* wait for input or signal (including SIGCHLD) */ > + if ((cc = pselect(STDIN_FILENO + 1, &readfds, NULL, NULL, NULL, > + &unblock_mask)) > 0) { probably good idea, I have thought about something like this (or signalfd()), but I have never found time to try it... thanks! > + if ((cc = read(STDIN_FILENO, ibuf, BUFSIZ)) > 0) { > + if (write_all(master, ibuf, cc)) { > + warn (_("write failed")); > + fail(); > + } Karel -- Karel Zak <kzak@redhat.com> http://karelzak.blogspot.com ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] deadlock in script 2014-05-30 9:15 ` Karel Zak @ 2014-05-30 9:52 ` Csaba Kos 2014-06-02 9:08 ` Karel Zak 0 siblings, 1 reply; 7+ messages in thread From: Csaba Kos @ 2014-05-30 9:52 UTC (permalink / raw) To: Karel Zak; +Cc: util-linux [-- Attachment #1: Type: text/plain, Size: 1869 bytes --] On Fri, May 30, 2014 at 6:15 PM, Karel Zak <kzak@redhat.com> wrote: > On Fri, May 30, 2014 at 03:30:45PM +0900, Csaba Kos wrote: >> diff --git a/term-utils/script.c b/term-utils/script.c >> index e5d239c..32906d0 100644 >> --- a/term-utils/script.c >> +++ b/term-utils/script.c >> @@ -36,6 +36,9 @@ >> * - added Native Language Support >> * >> * 2000-07-30 Per Andreas Buer <per@linpro.no> - added "q"-option >> + * >> + * 2014-05-30 Csaba Kos <csaba.kos@gmail.com> >> + * - fixed a rare deadlock after child termination >> */ >> >> /* >> @@ -114,6 +117,8 @@ int tflg = 0; >> int forceflg = 0; >> int isterm; >> >> +sigset_t block_mask, unblock_mask; > > This declaration shadows declaration in main() where is also block_mask and > unblock_mask -- I guess it's not expected. Sorry, I goofed when updating my patch to the current master. Thanks for the careful review! Updated patch attached. >> + /* block SIGCHLD */ >> + sigprocmask(SIG_SETMASK, &block_mask, &unblock_mask); > > the initialization is where? in main()? Yes, the sigprocmask() and sigaddset() calls initialize block_mask in main(). Best regards, Csaba >> + /* wait for input or signal (including SIGCHLD) */ >> + if ((cc = pselect(STDIN_FILENO + 1, &readfds, NULL, NULL, NULL, >> + &unblock_mask)) > 0) { > > probably good idea, I have thought about something like this (or > signalfd()), but I have never found time to try it... thanks! > >> + if ((cc = read(STDIN_FILENO, ibuf, BUFSIZ)) > 0) { >> + if (write_all(master, ibuf, cc)) { >> + warn (_("write failed")); >> + fail(); >> + } > > Karel > > > -- > Karel Zak <kzak@redhat.com> > http://karelzak.blogspot.com [-- Attachment #2: 0001-script-fix-a-rare-deadlock-after-child-termination.patch --] [-- Type: text/x-diff, Size: 3421 bytes --] From 852c6dae6e397937ea8bdad18b63046f169514e1 Mon Sep 17 00:00:00 2001 From: Csaba Kos <csaba.kos@gmail.com> Date: Fri, 30 May 2014 14:33:32 +0900 Subject: [PATCH 1/2] script: fix a rare deadlock after child termination --- term-utils/script.c | 53 +++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 45 insertions(+), 8 deletions(-) diff --git a/term-utils/script.c b/term-utils/script.c index e5d239c..47bb186 100644 --- a/term-utils/script.c +++ b/term-utils/script.c @@ -36,6 +36,9 @@ * - added Native Language Support * * 2000-07-30 Per Andreas Buer <per@linpro.no> - added "q"-option + * + * 2014-05-30 Csaba Kos <csaba.kos@gmail.com> + * - fixed a rare deadlock after child termination */ /* @@ -114,6 +117,8 @@ int tflg = 0; int forceflg = 0; int isterm; +sigset_t block_mask, unblock_mask; + int die; int resized; @@ -162,7 +167,6 @@ usage(FILE *out) int main(int argc, char **argv) { - sigset_t block_mask, unblock_mask; struct sigaction sa; int ch; @@ -306,6 +310,7 @@ doinput(void) { int errsv = 0; ssize_t cc = 0; char ibuf[BUFSIZ]; + fd_set readfds; /* close things irrelevant for this process */ if (fscript) @@ -314,14 +319,27 @@ doinput(void) { fclose(timingfd); fscript = timingfd = NULL; + FD_ZERO(&readfds); + + /* block SIGCHLD */ + sigprocmask(SIG_SETMASK, &block_mask, &unblock_mask); + while (die == 0) { - if ((cc = read(STDIN_FILENO, ibuf, BUFSIZ)) > 0) { - if (write_all(master, ibuf, cc)) { - warn (_("write failed")); - fail(); + FD_SET(STDIN_FILENO, &readfds); + + /* wait for input or signal (including SIGCHLD) */ + if ((cc = pselect(STDIN_FILENO + 1, &readfds, NULL, NULL, NULL, + &unblock_mask)) > 0) { + + if ((cc = read(STDIN_FILENO, ibuf, BUFSIZ)) > 0) { + if (write_all(master, ibuf, cc)) { + warn (_("write failed")); + fail(); + } } } - else if (cc < 0 && errno == EINTR && resized) + + if (cc < 0 && errno == EINTR && resized) { /* transmit window change information to the child */ if (isterm) { @@ -330,12 +348,15 @@ doinput(void) { } resized = 0; - } else { + } else if (cc <= 0) { errsv = errno; break; } } + /* unblock SIGCHLD */ + sigprocmask(SIG_SETMASK, &unblock_mask, NULL); + /* To be sure that we don't miss any data */ wait_for_empty_fd(slave); wait_for_empty_fd(master); @@ -404,6 +425,7 @@ dooutput(void) { struct timeval tv; double oldtime=time(NULL), newtime; int errsv = 0; + fd_set readfds; close(STDIN_FILENO); #ifdef HAVE_LIBUTIL @@ -416,6 +438,8 @@ dooutput(void) { my_strftime(obuf, sizeof obuf, "%c\n", localtime(&tvec)); fprintf(fscript, _("Script started on %s"), obuf); + FD_ZERO(&readfds); + do { if (die || errsv == EINTR) { struct pollfd fds[] = {{ .fd = master, .events = POLLIN }}; @@ -423,10 +447,23 @@ dooutput(void) { break; } + /* block SIGCHLD */ + sigprocmask(SIG_SETMASK, &block_mask, &unblock_mask); + + FD_SET(master, &readfds); errno = 0; - cc = read(master, obuf, sizeof (obuf)); + + /* wait for input or signal (including SIGCHLD) */ + if ((cc = pselect(master+1, &readfds, NULL, NULL, NULL, + &unblock_mask)) > 0) { + + cc = read(master, obuf, sizeof (obuf)); + } errsv = errno; + /* unblock SIGCHLD */ + sigprocmask(SIG_SETMASK, &unblock_mask, NULL); + if (tflg) gettimeofday(&tv, NULL); -- 1.8.5.rc3.2.gc302941 [-- Attachment #3: 0002-script-fix-spurious-exit-from-input-read-loop-on-EIN.patch --] [-- Type: text/x-diff, Size: 891 bytes --] From 657f138320afe1a5f1d55fb928ed11bed7817898 Mon Sep 17 00:00:00 2001 From: Csaba Kos <csaba.kos@gmail.com> Date: Fri, 30 May 2014 18:40:15 +0900 Subject: [PATCH 2/2] script: fix spurious exit from input read loop on EINTR. --- term-utils/script.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/term-utils/script.c b/term-utils/script.c index 47bb186..1ae3462 100644 --- a/term-utils/script.c +++ b/term-utils/script.c @@ -327,6 +327,7 @@ doinput(void) { while (die == 0) { FD_SET(STDIN_FILENO, &readfds); + errno = 0; /* wait for input or signal (including SIGCHLD) */ if ((cc = pselect(STDIN_FILENO + 1, &readfds, NULL, NULL, NULL, &unblock_mask)) > 0) { @@ -348,7 +349,7 @@ doinput(void) { } resized = 0; - } else if (cc <= 0) { + } else if (cc <= 0 && errno != EINTR) { errsv = errno; break; } -- 1.8.5.rc3.2.gc302941 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] deadlock in script 2014-05-30 9:52 ` Csaba Kos @ 2014-06-02 9:08 ` Karel Zak 2014-06-02 9:37 ` Ruediger Meier 0 siblings, 1 reply; 7+ messages in thread From: Karel Zak @ 2014-06-02 9:08 UTC (permalink / raw) To: Csaba Kos; +Cc: util-linux On Fri, May 30, 2014 at 06:52:20PM +0900, Csaba Kos wrote: > On Fri, May 30, 2014 at 6:15 PM, Karel Zak <kzak@redhat.com> wrote: > > On Fri, May 30, 2014 at 03:30:45PM +0900, Csaba Kos wrote: > >> diff --git a/term-utils/script.c b/term-utils/script.c > >> index e5d239c..32906d0 100644 > >> --- a/term-utils/script.c > >> +++ b/term-utils/script.c > >> @@ -36,6 +36,9 @@ > >> * - added Native Language Support > >> * > >> * 2000-07-30 Per Andreas Buer <per@linpro.no> - added "q"-option > >> + * > >> + * 2014-05-30 Csaba Kos <csaba.kos@gmail.com> > >> + * - fixed a rare deadlock after child termination > >> */ > >> > >> /* > >> @@ -114,6 +117,8 @@ int tflg = 0; > >> int forceflg = 0; > >> int isterm; > >> > >> +sigset_t block_mask, unblock_mask; > > > > This declaration shadows declaration in main() where is also block_mask and > > unblock_mask -- I guess it's not expected. > > Sorry, I goofed when updating my patch to the current master. Thanks > for the careful review! Updated patch attached. All applied, thanks! Karel -- Karel Zak <kzak@redhat.com> http://karelzak.blogspot.com ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] deadlock in script 2014-06-02 9:08 ` Karel Zak @ 2014-06-02 9:37 ` Ruediger Meier 2014-06-02 9:57 ` Karel Zak 0 siblings, 1 reply; 7+ messages in thread From: Ruediger Meier @ 2014-06-02 9:37 UTC (permalink / raw) To: Karel Zak; +Cc: Csaba Kos, util-linux On Monday 02 June 2014, Karel Zak wrote: > On Fri, May 30, 2014 at 06:52:20PM +0900, Csaba Kos wrote: > > On Fri, May 30, 2014 at 6:15 PM, Karel Zak <kzak@redhat.com> wrote: > > > On Fri, May 30, 2014 at 03:30:45PM +0900, Csaba Kos wrote: > > >> diff --git a/term-utils/script.c b/term-utils/script.c > > >> index e5d239c..32906d0 100644 > > >> --- a/term-utils/script.c > > >> +++ b/term-utils/script.c > > >> @@ -36,6 +36,9 @@ > > >> * - added Native Language Support > > >> * > > >> * 2000-07-30 Per Andreas Buer <per@linpro.no> - added > > >> "q"-option + * > > >> + * 2014-05-30 Csaba Kos <csaba.kos@gmail.com> > > >> + * - fixed a rare deadlock after child termination > > >> */ > > >> > > >> /* > > >> @@ -114,6 +117,8 @@ int tflg = 0; > > >> int forceflg = 0; > > >> int isterm; > > >> > > >> +sigset_t block_mask, unblock_mask; > > > > > > This declaration shadows declaration in main() where is also > > > block_mask and unblock_mask -- I guess it's not expected. > > > > Sorry, I goofed when updating my patch to the current master. > > Thanks for the careful review! Updated patch attached. > > All applied, thanks! > > Karel Could this already fix the TODO in tests/ts/script/race (6cae66ea)?: # TODO see comments about script design # https://github.com/karelzak/util-linux/pull/62 TS_KNOWN_FAIL="yes" cu, Rudi ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] deadlock in script 2014-06-02 9:37 ` Ruediger Meier @ 2014-06-02 9:57 ` Karel Zak 2014-06-02 10:03 ` Ruediger Meier 0 siblings, 1 reply; 7+ messages in thread From: Karel Zak @ 2014-06-02 9:57 UTC (permalink / raw) To: Ruediger Meier; +Cc: Csaba Kos, util-linux On Mon, Jun 02, 2014 at 11:37:59AM +0200, Ruediger Meier wrote: > On Monday 02 June 2014, Karel Zak wrote: > > On Fri, May 30, 2014 at 06:52:20PM +0900, Csaba Kos wrote: > > > On Fri, May 30, 2014 at 6:15 PM, Karel Zak <kzak@redhat.com> wrote: > > > > On Fri, May 30, 2014 at 03:30:45PM +0900, Csaba Kos wrote: > > > >> diff --git a/term-utils/script.c b/term-utils/script.c > > > >> index e5d239c..32906d0 100644 > > > >> --- a/term-utils/script.c > > > >> +++ b/term-utils/script.c > > > >> @@ -36,6 +36,9 @@ > > > >> * - added Native Language Support > > > >> * > > > >> * 2000-07-30 Per Andreas Buer <per@linpro.no> - added > > > >> "q"-option + * > > > >> + * 2014-05-30 Csaba Kos <csaba.kos@gmail.com> > > > >> + * - fixed a rare deadlock after child termination > > > >> */ > > > >> > > > >> /* > > > >> @@ -114,6 +117,8 @@ int tflg = 0; > > > >> int forceflg = 0; > > > >> int isterm; > > > >> > > > >> +sigset_t block_mask, unblock_mask; > > > > > > > > This declaration shadows declaration in main() where is also > > > > block_mask and unblock_mask -- I guess it's not expected. > > > > > > Sorry, I goofed when updating my patch to the current master. > > > Thanks for the careful review! Updated patch attached. > > > > All applied, thanks! > > > > Karel > > Could this already fix the TODO in > tests/ts/script/race (6cae66ea)?: That's a good question, maybe, try it :-) Locally I don't see any issue (although the test takes a lot of time due to count=1000, I'm still curious if we really need so many iterations in the test). Karel -- Karel Zak <kzak@redhat.com> http://karelzak.blogspot.com ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] deadlock in script 2014-06-02 9:57 ` Karel Zak @ 2014-06-02 10:03 ` Ruediger Meier 0 siblings, 0 replies; 7+ messages in thread From: Ruediger Meier @ 2014-06-02 10:03 UTC (permalink / raw) To: Karel Zak; +Cc: Csaba Kos, util-linux On Monday 02 June 2014, Karel Zak wrote: > On Mon, Jun 02, 2014 at 11:37:59AM +0200, Ruediger Meier wrote: > > On Monday 02 June 2014, Karel Zak wrote: > > > On Fri, May 30, 2014 at 06:52:20PM +0900, Csaba Kos wrote: > > > > On Fri, May 30, 2014 at 6:15 PM, Karel Zak <kzak@redhat.com> wrote: > > > > > On Fri, May 30, 2014 at 03:30:45PM +0900, Csaba Kos wrote: > > > > >> diff --git a/term-utils/script.c b/term-utils/script.c > > > > >> index e5d239c..32906d0 100644 > > > > >> --- a/term-utils/script.c > > > > >> +++ b/term-utils/script.c > > > > >> @@ -36,6 +36,9 @@ > > > > >> * - added Native Language Support > > > > >> * > > > > >> * 2000-07-30 Per Andreas Buer <per@linpro.no> - added > > > > >> "q"-option + * > > > > >> + * 2014-05-30 Csaba Kos <csaba.kos@gmail.com> > > > > >> + * - fixed a rare deadlock after child termination > > > > >> */ > > > > >> > > > > >> /* > > > > >> @@ -114,6 +117,8 @@ int tflg = 0; > > > > >> int forceflg = 0; > > > > >> int isterm; > > > > >> > > > > >> +sigset_t block_mask, unblock_mask; > > > > > > > > > > This declaration shadows declaration in main() where is also > > > > > block_mask and unblock_mask -- I guess it's not expected. > > > > > > > > Sorry, I goofed when updating my patch to the current master. > > > > Thanks for the careful review! Updated patch attached. > > > > > > All applied, thanks! > > > > > > Karel > > > > Could this already fix the TODO in > > tests/ts/script/race (6cae66ea)?: > > That's a good question, maybe, try it :-) > > Locally I don't see any issue (although the test takes a lot of time > due to count=1000, I'm still curious if we really need so many > iterations in the test). > Hm, I could still catch one again: --- tests/expected/script/race 2014-05-27 11:12:51.367615962 +0200 +++ tests/output/script/race 2014-06-02 11:34:54.509072271 +0200 @@ -1 +1 @@ -all bingos seen +only 996 of 1000 bingos seen Actually it seems to be easy to get it failed on NFS mount. But I've grepped a lot of my other build logs and couldn't find any script failure within the last weeks. cu, Rudi ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2014-06-02 10:03 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-05-30 6:30 [PATCH] deadlock in script Csaba Kos 2014-05-30 9:15 ` Karel Zak 2014-05-30 9:52 ` Csaba Kos 2014-06-02 9:08 ` Karel Zak 2014-06-02 9:37 ` Ruediger Meier 2014-06-02 9:57 ` Karel Zak 2014-06-02 10:03 ` Ruediger Meier
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox