Hi all:

We are testing several embedded Linux. When we use LTP to test these Linux, we find that the testcase sigtimedwait01 always failed with Segment Fault.

As the testcase failed on x86_64, i586 and arm, we found that maybe glibc doesnĄ¯t deal with the bad address

The testcase C program file is : testcases/kernel/syscalls/sigwaitinfo/sigwaitinfo.c

The result is :
sigtimedwait01    6  TPASS  :  Test passed
sigtimedwait01    0  TINFO  :  0x80493c0, 10
sigtimedwait01    7  TBROK  :  unexpected signal 11 received (pid = 4057).
sigtimedwait01    8  TBROK  :  Remaining cases broken

it always fail after line 334, because of Segment Fault
332 void test_bad_address2(swi_func sigwaitinfo, int signo)
333 {
334         TEST(sigwaitinfo((void*)1, NULL, NULL);
335         REPORT_SUCCESS(-1, EFAULT);
336 }

We can see that, here, we do

Sigtimedwait((void*)1, NULL, NULL));

And the parameter (void *)1 is a bad address.

This test can make things easier.

#include <stdio.h>
#include <signal.h>

int main()
{
        int ret;
        ret = sigtimedwait((void*)1, NULL, NULL);
        printf("test end\n");
        return 0;
}

Why LTP expect to get the EFAULT error?