Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 5 Nov 2014 16:38:57 +0000 (UTC)
From:      Garrett Cooper <ngie@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r274143 - head/contrib/netbsd-tests/lib/libc/sys
Message-ID:  <201411051638.sA5Gcv8L065193@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ngie
Date: Wed Nov  5 16:38:57 2014
New Revision: 274143
URL: https://svnweb.freebsd.org/changeset/base/274143

Log:
  Expect lib.libc.sys.getcontext_test.setcontext_link to fail on amd64; add
  additional debugging to make the underlying problem more visible
  
  Calling setcontext(2) on amd64 as shown in the test program is failing on
  amd64, not i386, with a return code of -1 and an errno of EINVAL
  
  Further investigation is being done in the PR to determine the root cause for
  the failure
  
  PR: 194828
  Tested with the following configuration:
  - amd64/i386
  - 11.0-CURRENT @ r273153
  - 100 times in a tight loop as root with the following commands...
  -- kyua test lib/libc
  -- kyua test lib/libc/sys
  -- kyua test lib/libc/sys/getcontext_test

Modified:
  head/contrib/netbsd-tests/lib/libc/sys/t_getcontext.c

Modified: head/contrib/netbsd-tests/lib/libc/sys/t_getcontext.c
==============================================================================
--- head/contrib/netbsd-tests/lib/libc/sys/t_getcontext.c	Wed Nov  5 16:30:02 2014	(r274142)
+++ head/contrib/netbsd-tests/lib/libc/sys/t_getcontext.c	Wed Nov  5 16:38:57 2014	(r274143)
@@ -101,6 +101,13 @@ ATF_TC_BODY(setcontext_link, tc)
 	ucontext_t save;
 	volatile int i = 0; /* avoid longjmp clobbering */
 
+#ifdef __FreeBSD__
+#ifdef __amd64__
+	atf_tc_expect_fail("setcontext in this testcase fails on "
+	    "FreeBSD/amd64 with rc == -1/errno == EINVAL; see PR # 194828");
+#endif
+#endif
+
 	for (i = 0; i < DEPTH; ++i) {
 		ATF_REQUIRE_EQ(getcontext(&uc[i]), 0);
 
@@ -114,8 +121,15 @@ ATF_TC_BODY(setcontext_link, tc)
 
 	ATF_REQUIRE_EQ(getcontext(&save), 0);
 
+#ifdef __FreeBSD__
+	if (calls == 0) {
+		int rc = setcontext(&uc[DEPTH-1]);
+		ATF_REQUIRE_EQ_MSG(rc, 0, "%d != 0; (errno = %d)", rc, errno);
+	}
+#else
 	if (calls == 0)
 		ATF_REQUIRE_EQ(setcontext(&uc[DEPTH-1]), 0);
+#endif
 }
 
 ATF_TP_ADD_TCS(tp)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201411051638.sA5Gcv8L065193>