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.022 / U:31.144 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site