<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-size:small"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jun 17, 2019 at 3:03 PM Jan Stancek <<a href="mailto:jstancek@redhat.com">jstancek@redhat.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
<br>
----- Original Message -----<br>
> On Sun, Jun 16, 2019 at 5:52 PM Jan Stancek <<a href="mailto:jstancek@redhat.com" target="_blank">jstancek@redhat.com</a>> wrote:<br>
> <br>
> > Case where defunct tid is used has been observed to sporadically fail:<br>
> >   tgkill03.c:96: FAIL: Defunct tid should have failed with ESRCH: SUCCESS<br>
> ><br>
> > glibc __pthread_timedjoin_ex() waits for CLONE_CHILD_CLEARTID to clear tid,<br>
> > and then resumes. Kernel clears it (glibc pd->tid) at:<br>
> >   do_exit<br>
> >     exit_mm<br>
> >       mm_release<br>
> >         put_user(0, tsk->clear_child_tid);<br>
> ><br>
> > but kernel tid is still valid, presumably until:<br>
> >   release_task<br>
> >     __exit_signal<br>
> >       __unhash_process<br>
> >         detach_pid<br>
> ><br>
> > To avoid race wait until /proc/<pid>/task/<tid> disappears.<br>
> ><br>
> > Signed-off-by: Jan Stancek <<a href="mailto:jstancek@redhat.com" target="_blank">jstancek@redhat.com</a>><br>
> > ---<br>
> >  testcases/kernel/syscalls/tgkill/tgkill03.c | 6 +++++-<br>
> >  1 file changed, 5 insertions(+), 1 deletion(-)<br>
> ><br>
> > diff --git a/testcases/kernel/syscalls/tgkill/tgkill03.c<br>
> > b/testcases/kernel/syscalls/tgkill/tgkill03.c<br>
> > index f5bbdc5a8d4e..5ac1d2651f7a 100644<br>
> > --- a/testcases/kernel/syscalls/tgkill/tgkill03.c<br>
> > +++ b/testcases/kernel/syscalls/tgkill/tgkill03.c<br>
> > @@ -7,6 +7,7 @@<br>
> ><br>
> >  #include <pthread.h><br>
> >  #include <pwd.h><br>
> > +#include <stdio.h><br>
> >  #include <sys/types.h><br>
> ><br>
> >  #include "tst_safe_pthread.h"<br>
> > @@ -42,6 +43,7 @@ static void setup(void)<br>
> >  {<br>
> >         sigset_t sigusr1;<br>
> >         pthread_t defunct_thread;<br>
> > +       char defunct_tid_path[PATH_MAX];<br>
> ><br>
> >         sigemptyset(&sigusr1);<br>
> >         sigaddset(&sigusr1, SIGUSR1);<br>
> > @@ -55,8 +57,10 @@ static void setup(void)<br>
> >         TST_CHECKPOINT_WAIT(0);<br>
> ><br>
> >         SAFE_PTHREAD_CREATE(&defunct_thread, NULL, defunct_thread_func,<br>
> > NULL);<br>
> > -<br>
> >         SAFE_PTHREAD_JOIN(defunct_thread, NULL);<br>
> > +       sprintf(defunct_tid_path, "/proc/%d/task/%d", getpid(),<br>
> > defunct_tid);<br>
> > +       while (access(defunct_tid_path, R_OK) == 0)<br>
> > +               usleep(10000);<br>
> ><br>
> <br>
> To be on the safe side, I think maybe TST_RETRY_FUNC is a better choice<br>
> here.<br>
<br>
Given high steal time on s390, I rather not put 1s cap on sleep here.<br>
This is newlib test, so there's already a timeout, I'd prefer to lower<br>
tst_test.timeout, say 30 seconds?<br></blockquote><div><br></div><div><div class="gmail_default" style="font-size:small">Sure, I think it's long enough for the tgkill03 test.</div></div><div><br></div><div><div class="gmail_default" style="font-size:small"># uname -rm</div><div class="gmail_default" style="font-size:small">4.18.0-94.el8.s390x s390x</div><br></div><div class="gmail_default" style="font-size:small"># time ./tgkill03<br>tst_test.c:1112: INFO: Timeout per run is 0h 05m 00s<br>tgkill03.c:97: PASS: Invalid tgid failed as expected: EINVAL<br>tgkill03.c:97: PASS: Invalid tid failed as expected: EINVAL<br>tgkill03.c:97: PASS: Invalid signal failed as expected: EINVAL<br>tgkill03.c:97: PASS: Defunct tid failed as expected: ESRCH<br>tgkill03.c:97: PASS: Defunct tgid failed as expected: ESRCH<br>tgkill03.c:104: PASS: Valid tgkill call succeeded<br><br>Summary:<br>passed   6<br>failed   0<br>skipped  0<br>warnings 0<br><br>real      0m0.081s<br>user  0m0.001s<br>sys   0m0.002s<br></div></div><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr">Regards,<br>Li Wang<br></div></div></div></div></div>