Hi!
> I am testing mips64 with LTP.  The problem is with fstatfs02.c file.
> The test case was failing in my particular arch. For debugging purpose
> I write the same code and executed.
>
> ret = fstatfs( -1,&buf );
> printf("Retrun value =%d, errornumber %d EBADF is %d  %s FD %d pointer %p  
> \n",ret,errno, EBADF,strerror(errno),-1,&buf);
> 
> it was giving a output like
> 
> Retrun value =-1, errornumber 9 EBADF is 9  Bad file descriptor FD -1 pointer 
> 0x120011130
> 
> But when I executed LTP testcase with some debug print added
> 
> TEST(fstatfs(TC[i].fd, (TC[i]).sbuf));
> if (TEST_RETURN != -1) {
>         tst_resm(TFAIL, "call succeeded unexpectedly return %d %s FD %d, 
> pointer sbuf %p ",TEST_RETURN,strerror(errno),TC[i].fd, TC[i].sbuf);
> 
> I got a print like this
> 
> fstatfs02    1  TFAIL  :  call succeeded unexpectedly return 1690729072 
> Success FD -1, pointer sbuf 0x12001ba30
> 
> 
> I feel like both are doing the same job... But when I am running it in
> LTP environment I am getting a return as 1690729072. I was not able to
> find any problem in TEST macro. Can anyone please help me out in
> debugging this.

Hmm, that looks like the return value from fstatfs() gets corrupted
before it gets to the if () below. However the code of the TEST() macro
looks too simple for that to happen.

The lines gets expaned (with compiler -E) to:

   do { (*__errno_location ()) = 0; TEST_RETURN = fstatfs(TC[i].fd, 
TC[i].sbuf); TEST_ERRNO = (*__errno_location ()); } while (0);

   if (TEST_RETURN != -1) {
    tst_resm(1, "call succeeded unexpectedly");
    continue;
   }

Which, as far as I can see, looks correct.

Assuming that the fstatfs() really returns -1 here (have you tried
strace on the testcase?) the only problem I can think of is that the
code gets miscompiled and the value is corrupted in the TEST_RETURN =
fstatfs(TC[i].fd, TC[i].sbuf) part. I would check the disassembly to
make sure that it does what is expected.

-- 
Cyril Hrubis
chru...@suse.cz

------------------------------------------------------------------------------
HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions
Find What Matters Most in Your Big Data with HPCC Systems
Open Source. Fast. Scalable. Simple. Ideal for Dirty Data.
Leverages Graph Analysis for Fast Processing & Easy Data Exploration
http://p.sf.net/sfu/hpccsystems
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to