int handler_called,proc_check;
void proc_handler(int signo)
{
proc_check++;
}

int sigprocmask_10()
{
struct sigaction act;
int ret;
sigset_t blocked_set1, blocked_set2, pending_set;
proc_check=0;
sigemptyset(&blocked_set1);
sigemptyset(&blocked_set2);
sigaddset(&blocked_set1, SIGABRT);
sigaddset(&blocked_set2, SIGALRM);

act.sa_handler = proc_handler;

act.sa_flags = 0;
sigemptyset(&act.sa_mask);

ret=sigaction(SIGABRT, &act, 0);
ret=sigaction(SIGALRM, &act, 0);

ret=sigprocmask(SIG_SETMASK, &blocked_set1, NULL);
ret=sigprocmask(SIG_BLOCK, &blocked_set2, NULL);

ret=raise(SIGABRT);
ret=raise(SIGALRM);

if (proc_check)
{
printf("FAIL: Signal was not blocked.\n");

return 0;

}

ret=sigpending(&pending_set);

if ((sigismember(&pending_set, SIGABRT) == 1) |
(sigismember(&pending_set, SIGALRM) == 1))
{
printf(":Test PASSED:Resulting set is the union of two signal set
using SIG_BLOCK.\n");
return 0;
}
else
{
printf("Test FAILED:Resulting set is the union of two signal set
using SIG_BLOCK.\n");

return 0;

}

}

This program is failing because sigpending API is returning success
but pending_set is zero.

Can any one help in this regards,
Thanks in advance.