From: Edjunior B. M. <ema...@li...> - 2008-05-16 20:19:45
|
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? Thanks in advance, -- Edjunior |