<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 Tue, Oct 8, 2019 at 8:56 PM Petr Vorel <<a href="mailto:pvorel@suse.cz">pvorel@suse.cz</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">Hi LI,<br>
<br>
> We shouldn't rely entirely on the pair->exit flag in tst_fzsync_pair_cleanup()<br>
> since there is possible to call tst_brk() at anyplace of thread_a, that will<br>
> lead to timeout eventually because of thread_b(tst_fzsync_wait_b) fall into<br>
> an infinite(no explicit condition to exit) loop.<br>
<br>
> Thread_a path trace:<br>
>   tst_brk()<br>
>     cleanup()<br>
>       tst_fzsync_pair_cleanup()<br>
>         SAFE_PTHREAD_JOIN(pair->thread_b, NULL)<br>
>         #Or pthread_cancel(pair->thread_b)<br>
<br>
> We fix the problem via a way to kill thread_b with pthread_cancel. With new<br>
> thread wrapper involves enabling thread cancel at the start of the thread B,<br>
> then do asynchronous cancellation in tst_fzsync_pair_cleanup if pair->exit<br>
> is not being set to 1.<br>
<br>
> Workaround: [commit 2e74d996: Check recvmmsg exists before entering fuzzy loop]<br>
> Signed-off-by: Li Wang <<a href="mailto:liwang@redhat.com" target="_blank">liwang@redhat.com</a>><br>
> Cc: Richard Palethorpe <<a href="mailto:rpalethorpe@suse.com" target="_blank">rpalethorpe@suse.com</a>><br>
> Cc: Cyril Hrubis <<a href="mailto:chrubis@suse.cz" target="_blank">chrubis@suse.cz</a>><br>
> Acked-by: Richard Palethorpe <<a href="mailto:rpalethorpe@suse.com" target="_blank">rpalethorpe@suse.com</a>><br>
Reviewed-by: Petr Vorel <<a href="mailto:pvorel@suse.cz" target="_blank">pvorel@suse.cz</a>><br></blockquote><div><br></div><div class="gmail_default" style="font-size:small">Pushed. Thanks for the review.</div></div><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div>Regards,<br></div><div>Li Wang<br></div></div></div></div>