On Wed, 2008-05-28 at 14:14 +0530, Subrata Modak wrote:
> And here goes the patch for the signal_test_failure.
> 
> Signed-off-by: Suzuki KP <[EMAIL PROTECTED]>
Tested and merged.

Regards--
Subrata

> 
> --- signal_test_01.c.orig     2008-05-20 14:52:55.884753744 +0530
> +++ signal_test_01.c  2008-05-20 15:00:18.117524144 +0530
> @@ -251,18 +251,16 @@ int main (int argc, char **argv)
>  
>       /* Change the process signal mask:
>        *
> -      * Now specifiy a new process signal mask to allow the SIGINT signal
> -      * to interrupt the process.  Thus by using sigpause (), force the
> -      * process to suspend execution until delivery of an unblocked
> -      * signal (SIGINT in this case).
> +      * Now allow the SIGINT signal to interrupt the process.
> +      * Thus by using sigpause (), force the process to suspend
> +      * execution until delivery of an unblocked signal (here SIGINT).
>        *
>        * Additionally, verify that the SIGINT signal was received.
>        */
>       valid_sig [SIGINT] = 1;
>  
>       printf ("\n\tChange signal mask & wait until signal interrupts process
> \n");
> -     mask = 0xFFFF ^ SIGINT;
> -     if (sigpause (mask) != -1 || errno != 4)
> +     if (sigpause (SIGINT) != -1 || errno != 4)
>               sys_error ("sigpause failed", __LINE__);
>  
>       if (valid_sig [SIGINT])
> 
> 
> ============================================================
> Solution Description:
> ============================================================
> man sigpause() says :
> 
> 
> DESCRIPTION
>        Don’t use this function. Use sigsuspend(2) instead. :)
> 
> There are two variants of sigpause. The code in signal_test_01.c assumes the
> argument is sigmask. While, upon testing I could figure out that the argument 
> is
> interpreted as the signal.
> 
> This is an issue with the testcase. 
> 
> According to man sigpause :
> 
>  int sigpause(int sigmask);  /* BSD */
> 
>  int sigpause(int sig);      /* System V / Unix95 */
> 
> 
> [...]
> Linux Notes
>        On Linux, this routine is a system call only on the Sparc (sparc64)
> architecture.
> 
>        Libc4 and libc5 only know about the BSD version.
> 
>       Glibc uses the BSD version if the _BSD_SOURCE feature test macro is
> defined and none of _POSIX_SOURCE, _POSIX_C_SOURCE, _XOPEN_SOURCE, 
> _GNU_SOURCE,
>  or _SVID_SOURCE is defined.  The System V version is used if _XOPEN_SOURCE is
> defined.
> 
> Since the _BSD_SOURCE_ is not defined for LTP testcases, rather they define
> _XOPEN_SOURCE_, the behaviour is System V, where they expect a signal number
> instead of signal mask.
> 
> Thanks
> 
> Suzuki
> ============================================================================
> Regards--
> Subrata
> 
> On Mon, 2008-05-19 at 13:37 +0530, Subrata Modak wrote:
> > On Fri, 2008-05-16 at 16:59 -0300, Edjunior Barbosa Machado wrote:
> > > Hi,
> > > 
> > > running signal_test_01 IPC stress testcase in x86 and x86_64 machines, we 
> > > faced the messages below:
> > > 
> > > # cd ltp-full-20080430/testcases/kernel/ipc/ipc_stress/
> > > # ./signal_test_01 
> > > ./signal_test_01: IPC Signals TestSuite program
> > > 
> > >   Send SIGILL, SIGALRM, SIGIOT signals to process
> > >   received signal: (SIGILL)
> > >   received signal: (SIGALRM)
> > >   received signal: (SIGIOT/SIGABRT)
> > > 
> > >   Block SIGILL, SIGALRM, SIGIOT signals, and resend signals + others
> > >   received signal: (SIGFPE)
> > >   received signal: (SIGTERM)
> > >   received signal: (SIGINT)
> > > 
> > >   Block rest of signals
> > > 
> > >   Change signal mask & wait until signal interrupts process
> > > ERROR [line: 266] sigpause failed: Invalid argument
> > > 
> > > : Invalid argument
> > > 
> > > 
> > > The problems seems to be related to this piece of code:
> > > 
> > >         /* Change the process signal mask:
> > >          *
> > >          * Now specifiy a new process signal mask to allow the SIGINT 
> > > signal
> > >          * to interrupt the process.  Thus by using sigpause (), force the
> > >          * process to suspend execution until delivery of an unblocked
> > >          * signal (SIGINT in this case).
> > >          *
> > >          * Additionally, verify that the SIGINT signal was received.
> > >          */
> > >         valid_sig [SIGINT] = 1;
> > > 
> > >         printf ("\n\tChange signal mask & wait until signal interrupts 
> > > process\n");
> > >         mask = 0xFFFF ^ SIGINT;
> > >         if (sigpause (mask) != -1 || errno != 4)
> > >                 sys_error ("sigpause failed", __LINE__);
> > > 
> > >         if (valid_sig [SIGINT])
> > >                 error ("failed to receive SIGINT signal!", __LINE__);
> > > 
> > > 
> > > `man sigpause` says there are 2 versions of this function: one 
> > > considering a signal as parameter (afaik, the default model) and another 
> > > using a mask. In this case, sigpause() uses this second version. I've 
> > > already test it using SIGINT as parameter and it seemed OK. I've also 
> > > tried to force to sigpause() to use a mask adding defines mentioned in 
> > > manpage, without success. 
> > > 
> > > In addiction, the manpage also advices to don't use this function and use 
> > > sigsuspend() instead. However, I'm not sure if substitute a focused 
> > > system call (like sigpause() in this case) is reasonable for LTP 
> > > testsuits. 
> > > 
> > > Would you please suggest what could be an acceptable solution for this 
> > > issue?
> > 
> > Yes, that can be.
> > 
> > Mike,
> > What do you say ?
> > 
> > Regards--
> > Subrata
> > 
> > > 
> > > Thanks in advance,
> > > 
> > > --
> > > Edjunior
> > > 
> > > -------------------------------------------------------------------------
> > > This SF.net email is sponsored by: Microsoft 
> > > Defy all challenges. Microsoft(R) Visual Studio 2008. 
> > > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> > > _______________________________________________
> > > Ltp-list mailing list
> > > [email protected]
> > > https://lists.sourceforge.net/lists/listinfo/ltp-list
> > 
> > 
> > -------------------------------------------------------------------------
> > This SF.net email is sponsored by: Microsoft 
> > Defy all challenges. Microsoft(R) Visual Studio 2008. 
> > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> > _______________________________________________
> > Ltp-list mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/ltp-list
> 
> 
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Ltp-list mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/ltp-list


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to