On Fri, 28 Apr 2017, Jianxun Zhang wrote: > Most of time having '-M' option causes cyclictest won't exit after > a duration ('-D') expires, like this quick command on my machines: > > sudo cyclictest -S -M -D2 -d0 > > This is because the main thread is blocked on waiting for the next > update of MAX, but the timer thread doesn't signal the main thread > before it quits. > > Signed-off-by: Jianxun Zhang <jianxun.zhang@xxxxxxxxxxxxxxx> > --- > > The issue may not happen every time, depending on your machine or other parameters fed to cyclictest, but it does quite often on my setup. > > src/cyclictest/cyclictest.c | 19 +++++++++++++++++-- > 1 file changed, 17 insertions(+), 2 deletions(-) > > diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c > index 3f1bef1..36259ea 100644 > --- a/src/cyclictest/cyclictest.c > +++ b/src/cyclictest/cyclictest.c > @@ -1241,6 +1241,17 @@ static void *timerthread(void *param) > } > > out: > + if (refresh_on_max) { > + pthread_mutex_lock(&refresh_on_max_lock); > + /* We could reach here with both shutdown and allstopped unset (0). > + * Set shutdown with synchronization to notify the main > + * thread not to be blocked when it should exit. > + */ > + shutdown++; > + pthread_cond_signal(&refresh_on_max_cond); > + pthread_mutex_unlock(&refresh_on_max_lock); > + } > + > if (par->mode == MODE_CYCLIC) > timer_delete(timer); > > @@ -2512,8 +2523,9 @@ int main(int argc, char **argv) > > if (refresh_on_max) { > pthread_mutex_lock(&refresh_on_max_lock); > - pthread_cond_wait(&refresh_on_max_cond, > - &refresh_on_max_lock); > + if (!shutdown) > + pthread_cond_wait(&refresh_on_max_cond, > + &refresh_on_max_lock); > pthread_mutex_unlock(&refresh_on_max_lock); > } > } > @@ -2523,6 +2535,9 @@ int main(int argc, char **argv) > shutdown = 1; > usleep(50000); > > + if (!verbose && !quiet && refresh_on_max) > + printf("\033[%dB", num_threads + 2); > + > if (quiet) > quiet = 2; > for (i = 0; i < num_threads; i++) { > -- > 2.7.4 > > -- Signed-off-by: jkacur@xxxxxxxxxx > -- To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html