lkml.org 
[lkml]   [2004]   [Jul]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [LTP] Re: Recent changes in LTP test results
From
Date
On Wed, 2004-07-07 at 23:07, Andrew Morton wrote:
> Bryce Harrington <bryce@osdl.org> wrote:
> >
> > I have retested with ltp-full-20040603. This version of LTP hangs on
> > our system but fortunately completes most of the tests before doing so.
> > It indicates that it still encounters the same errors, e.g.:
> >
> > access03 1 FAIL : access((char *)-1,R_OK) failed with errno 2 : No such file or directory but expected 14 (EFAULT)
> > access03 2 FAIL : access((char *)-1,W_OK) failed with errno 2 : No such file or directory but expected 14 (EFAULT)
>
> Nope, sorry, still cannot reproduce it - you'll need to debug it at your end.


Andrew,

Mark and I are able to reproduce this with the simple
program below. The mmap() PROT_NONE is not giving a EFAULT
on read. The test was mmap a PROT_NONE address and passing
that into the access() syscall and then looking for a
EFAULT. Instead it was getting ENOENT. We found that
by backing out the nx-update.patch from -mm1 patches
the problem went away.

The /proc/pid/maps looked like this:

without nx-update patch:
40017000-40018000 ---p 40017000 00:00 0
=====
with -mm1:
40017000-40018000 --xp 40017000 00:00 0
So it looks like the page being executable allows read
access.

Not sure why you do not see this on your machine. This
fails on my 2-proc xeon box (and all the STP machines).

I can send more info if you need it.

Daniel (and Mark)

#include <unistd.h>
#include <errno.h>
#include <sys/mman.h>


main()
{
char *p0 = 0;
char *p1 = (char *)-1;
char *p2;
int err;
p2 = mmap(0, 4096, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0);
errno = 0;
err = access(p0, R_OK);
printf("access 0 ptr %p return code %d errno %d\n", p0, err, errno);
perror("access result:");
errno = 0;
err = access(p1, R_OK);
printf("access 1 ptr %p return code %d errno %d\n", p1, err, errno);
perror("access result:");
errno = 0;
err = access(p2, R_OK);
printf("access 2 ptr %p return code %d errno %d\n", p2, err, errno);
perror("access result:");
}

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 14:04    [W:0.137 / U:0.360 seconds]
©2003-2014 Jasper Spaans. Advertise on this site