MFC r277278:

r277278 (by ngie):

  Fix lib/libthr/tests/detach_test

  - Eliminate race with liberal use of sleep(3) [1]
  - Fix NetBSD-specific implementation way of testing result from pthread_cancel
    by testing with `td` instead of `NULL` [2]

  PR: 196738 [1]
  PR: 191906 [2]

  Sponsored by: EMC / Isilon Storage Division
This commit is contained in:
ngie 2015-01-25 00:28:15 +00:00
parent ea5c22141a
commit be8fb1ecda

View File

@ -38,11 +38,18 @@ __RCSID("$NetBSD: t_detach.c,v 1.1 2011/03/24 13:52:04 jruoho Exp $");
#include "h_common.h"
#ifdef __FreeBSD__
#include <time.h>
#endif
static void *func(void *);
static void *
func(void *arg)
{
#ifdef __FreeBSD__
sleep(2);
#endif
return NULL;
}
@ -72,18 +79,25 @@ ATF_TC_BODY(pthread_detach, tc)
*/
PTHREAD_REQUIRE(pthread_detach(t));
#ifdef __FreeBSD__
sleep(1);
#endif
rv = pthread_join(t, NULL);
ATF_REQUIRE(rv == EINVAL);
#ifdef __FreeBSD__
atf_tc_expect_fail("PR # 191906: fails with EINVAL, not ESRCH");
sleep(3);
#endif
/*
* As usual, ESRCH should follow if
* we try to detach an invalid thread.
*/
#ifdef __NetBSD__
rv = pthread_cancel(NULL);
#else
rv = pthread_cancel(t);
#endif
ATF_REQUIRE(rv == ESRCH);
}