Hi,

I report a couple of "UNRESOLVED" failures of open_posix_testsuite in ltp
and send a patch for them.

I got following failures while executing open_posix_testsuite.

> conformance/interfaces/pthread_setschedparam/5-1: execution: UNRESOLVED: 
> Output: 
> [07:16:29]Test conformance/interfaces/pthread_setschedparam/5-1.c unresolved: 
> got 22 (Invalid argument) on line 152 (Sem_post in signal handler 1)

> conformance/interfaces/pthread_detach/4-3: execution: UNRESOLVED: Output:
> *snip*
> [12:05:38]Test conformance/interfaces/pthread_detach/4-3.c unresolved: got 22 
> (Invalid argument) on line 157 (Sem_post in signal handler 1)

Both of them have wrong steps of its test preparation:
  1. register signal handlers (just do sem_post()) for SIGUSR1/SIGUSR2.
  2. block those signals
  3. prepare something (sem_init()) for these signal handlers
  4. send signals to itself from sub-threads.

They have a window of not-yet-prepared-for-signals
between step 1 and 2. I think above "UNRESOLVED" failures
(sem_post() before sem_init()) are the result of getting a
signal during this window.
I don't know who sent a signal to them but I guess
neighboring tests are suspects, because number of tests run
concurrently in open_posix_testsuite.

The fix shall be just delaying step 1 to between step 2 and 4,
so I wrote such a patch for both pthread_setschedparam and
pthread_detach. I have confirmed that this UNRESOLVED failure
disappeared with this patch applied.

Signed-off-by: Seiichi Ikarashi <[email protected]>

Regards,

Index: ltp/testcases/open_posix_testsuite/conformance/interfaces/pthread_detach/4-3.c
===================================================================
RCS file: /cvsroot/ltp/ltp/testcases/open_posix_testsuite/conformance/interfaces/pthread_detach/4-3.c,v
retrieving revision 1.3
diff -u -r1.3 4-3.c
--- ltp/testcases/open_posix_testsuite/conformance/interfaces/pthread_detach/4-3.c	3 Jun 2005 16:31:46 -0000	1.3
+++ ltp/testcases/open_posix_testsuite/conformance/interfaces/pthread_detach/4-3.c	4 Sep 2009 00:51:35 -0000
@@ -258,16 +258,6 @@
 	/* Initialize thread attribute objects */
 	scenar_init();
 	
-	/* We need to register the signal handlers for the PROCESS */
-	sigemptyset (&sa.sa_mask);
-	sa.sa_flags = 0;
-	sa.sa_handler = sighdl1;
-	if ((ret = sigaction (SIGUSR1, &sa, NULL)))
-	{ UNRESOLVED(ret, "Unable to register signal handler1"); }
-	sa.sa_handler = sighdl2;
-	if ((ret = sigaction (SIGUSR2, &sa, NULL)))
-	{ UNRESOLVED(ret, "Unable to register signal handler2"); }
-
 	/* We prepare a signal set which includes SIGUSR1 and SIGUSR2 */
 	sigemptyset(&usersigs);
 	ret = sigaddset(&usersigs, SIGUSR1);
@@ -285,6 +275,16 @@
 	{ UNRESOLVED(errno, "Semsig2  init"); }
 	#endif
 
+	/* We need to register the signal handlers for the PROCESS */
+	sigemptyset (&sa.sa_mask);
+	sa.sa_flags = 0;
+	sa.sa_handler = sighdl1;
+	if ((ret = sigaction (SIGUSR1, &sa, NULL)))
+	{ UNRESOLVED(ret, "Unable to register signal handler1"); }
+	sa.sa_handler = sighdl2;
+	if ((ret = sigaction (SIGUSR2, &sa, NULL)))
+	{ UNRESOLVED(ret, "Unable to register signal handler2"); }
+
 	if ((ret = pthread_create(&th_work, NULL, test, NULL)))
 	{ UNRESOLVED(ret, "Worker thread creation failed"); }
 	
Index: ltp/testcases/open_posix_testsuite/conformance/interfaces/pthread_setschedparam/5-1.c
===================================================================
RCS file: /cvsroot/ltp/ltp/testcases/open_posix_testsuite/conformance/interfaces/pthread_setschedparam/5-1.c,v
retrieving revision 1.1
diff -u -r1.1 5-1.c
--- ltp/testcases/open_posix_testsuite/conformance/interfaces/pthread_setschedparam/5-1.c	3 Jun 2005 16:32:47 -0000	1.1
+++ ltp/testcases/open_posix_testsuite/conformance/interfaces/pthread_setschedparam/5-1.c	4 Sep 2009 00:51:35 -0000
@@ -224,23 +224,6 @@
 	/* Initialize output routine */
 	output_init();
 
-	/* We need to register the signal handlers for the PROCESS */
-	sigemptyset ( &sa.sa_mask );
-	sa.sa_flags = 0;
-	sa.sa_handler = sighdl1;
-
-	if ( ( ret = sigaction ( SIGUSR1, &sa, NULL ) ) )
-	{
-		UNRESOLVED( ret, "Unable to register signal handler1" );
-	}
-
-	sa.sa_handler = sighdl2;
-
-	if ( ( ret = sigaction ( SIGUSR2, &sa, NULL ) ) )
-	{
-		UNRESOLVED( ret, "Unable to register signal handler2" );
-	}
-
 	/* We prepare a signal set which includes SIGUSR1 and SIGUSR2 */
 	sigemptyset( &usersigs );
 
@@ -274,6 +257,23 @@
 
 #endif
 
+	/* We need to register the signal handlers for the PROCESS */
+	sigemptyset ( &sa.sa_mask );
+	sa.sa_flags = 0;
+	sa.sa_handler = sighdl1;
+
+	if ( ( ret = sigaction ( SIGUSR1, &sa, NULL ) ) )
+	{
+		UNRESOLVED( ret, "Unable to register signal handler1" );
+	}
+
+	sa.sa_handler = sighdl2;
+
+	if ( ( ret = sigaction ( SIGUSR2, &sa, NULL ) ) )
+	{
+		UNRESOLVED( ret, "Unable to register signal handler2" );
+	}
+
 	me = pthread_self();
 
 	if ( ( ret = pthread_create( &th_work, NULL, test, &me ) ) )
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to