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] MFC after: 1 week Sponsored by: EMC / Isilon Storage Division
This commit is contained in:
parent
e21928d3c3
commit
0c76184ced
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user