From mboxrd@z Thu Jan 1 00:00:00 1970 From: compudj@krystal.dyndns.org (Mathieu Desnoyers) Date: Sat, 19 Feb 2011 19:57:51 -0500 Subject: [ltt-dev] [UST PATCH] Fix the once in a while freeze of the tests In-Reply-To: <1298065013-9872-1-git-send-email-yannick.brosseau@gmail.com> References: <1298065013-9872-1-git-send-email-yannick.brosseau@gmail.com> Message-ID: * Yannick Brosseau (yannick.brosseau at gmail.com) wrote: > Sometimes, the thread in the read function would lock the pipe so the > setlinebuf would freeze on it. Set the linebuf before we create the > thread to fix this deadlock Can you update the description to show which locks are involved in this deadlock scenario ? E.g. - CPU A - CPU B function function lock A (taken) lock B (taken) lock B (waiting) lock A (waiting) <-- deadlock Or show it with the lock chain dependency analysis. But it's important to have this information along with this kind of fix. Thanks, Mathieu > > Signed-off-by: Yannick Brosseau > --- > tests/tap.c | 5 ++++- > 1 files changed, 4 insertions(+), 1 deletions(-) > > diff --git a/tests/tap.c b/tests/tap.c > index a54fd17..4bb695e 100644 > --- a/tests/tap.c > +++ b/tests/tap.c > @@ -58,6 +58,9 @@ static void tap_comment_stdout(void) > goto close_pipe; > } > > + /* Set it before we create the reading thread */ > + setlinebuf(pipe_r_file); > + > stdout_fileno = fileno(stdout); > if (stdout_fileno < 0) { > perror("# Couldn't get fileno for stdout!?"); > @@ -112,7 +115,7 @@ static void tap_comment_stdout(void) > > setlinebuf(stdout); > setlinebuf(stderr); > - setlinebuf(pipe_r_file); > + > > return; > > -- > 1.7.2.3 > > > _______________________________________________ > ltt-dev mailing list > ltt-dev at lists.casi.polymtl.ca > http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev > -- Mathieu Desnoyers Operating System Efficiency R&D Consultant EfficiOS Inc. http://www.efficios.com