Hi all
In the ltp-
posix test,there is a case in open_posix_testsuite\conformance\interfaces\timer_gettime\speculative/6-1.c
Quote:
#include <time.h>
#include <stdio.h>
#include <errno.h>
//#include "posixtest.h"
#define BOGUSTID 9999
int main(int argc, char *argv[])
{
timer_t tid;
struct itimerspec its;
tid = (timer_t) BOGUSTID;
if (timer_gettime(tid, &its) == -1) {
if (EINVAL == errno) {
printf("fcn returned -1 and errno==EINVAL\n");
//return PTS_PASS;
} else {
printf("fcn returned -1 but errno!=EINVAL\n");
printf("Test FAILED\n");
//return PTS_FAIL;
}
}
printf("fcn did not return -1\n");
//return PTS_PASS;
}
|
I run the above code,it will has a segment fault, if I modify it to below,it works well
Quote:
#include <time.h>
#include <stdio.h>
#include <errno.h>
//#include "posixtest.h"
#define BOGUSTID 9999
int main(int argc, char *argv[])
{
timer_t tid;
struct itimerspec its;
int tval=BOGUSTID;
printf("%d\n",tval);
tid = (timer_t) &tval;
printf("%d\n",tid);
if (timer_gettime(tid, &its) == -1) {
if (EINVAL == errno) {
printf("fcn returned -1 and errno==EINVAL\n");
//return PTS_PASS;
} else {
printf("fcn returned -1 but errno!=EINVAL\n");
printf("Test FAILED\n");
//return PTS_FAIL;
}
}
printf("fcn did not return -1\n");
// return PTS_PASS;
}
|
Anybody can tell me why?