[LTP] LTP pre-release testing and freeze
Jan Stancek
jstancek@redhat.com
Mon May 2 11:10:08 CEST 2016
----- Original Message -----
> From: "Cyril Hrubis" <chrubis@suse.cz>
> To: "Jan Stancek" <jstancek@redhat.com>
> Cc: ltp@lists.linux.it
> Sent: Thursday, 28 April, 2016 2:26:25 PM
> Subject: Re: [LTP] LTP pre-release testing and freeze
>
> Hi!
> > Looks good from my side. I ran the usual set we use as smoke test
> > (syscalls, selection of mem/io/etc.) on
> > RHEL6.2 through RHEL6.8 (i386, x86_64, ppc64, s390x)
> > RHEL7.0 through RHEL7.2 (x86_64, ppc64, ppc64le, s390x, aarch64)
> > and ran mostly into known bugs in kernel / glibc.
> >
> > Other than known issues, there were couple failures to note:
> >
> > epoll_wait02
> > There is a tolerance, but it goes only one way (oversleep).
> > I occasionally see it waking up a ms earlier and then testcase
> > reports it as failure. This was new addition, so there are
> > no historical data for comparison.
>
> That may be bug, since AFAIC all POSIX timers are not allowed to wake up
> earlier. The epoll_wait() is Linux specific, but the manual talks only
> about possible overrun as well.
I think it happened so far only on ppc/s390 guests, so my suspicion was
that high steal time could be a factor. I'll look into how much reproducible
this is with RHEL.
>
> > personality01
> > PER_LINUX32 is masked on powerpc as PER_LINUX, so this
> > always fails.
> >
> > arch/powerpc/kernel/syscalls.c:
> > long ppc64_personality(unsigned long personality)
> > {
> > long ret;
> >
> > if (personality(current->personality) == PER_LINUX32
> > && personality(personality) == PER_LINUX)
> > personality = (personality & ~PER_MASK) | PER_LINUX32;
> > ret = sys_personality(personality);
> > if (personality(ret) == PER_LINUX32)
> > ret = (ret & ~PER_MASK) | PER_LINUX;
> > return ret;
> > }
>
> So the fist if () makes sure that process cannot excape PER_LINUX32
> while the second hides PER_LINUX32 completly. I've missed the second
> part when I was rewriting the testcase. Looking at kernel sources
> sparc64 and s390 seems to do the same but the code assumes that
> PER_LINUX == 0.
>
> SYSCALL_DEFINE1(s390_personality, unsigned int, personality)
> {
> unsigned int ret;
>
> if (personality(current->personality) == PER_LINUX32 &&
> personality(personality) == PER_LINUX)
> personality |= PER_LINUX32;
> ret = sys_personality(personality);
> if (personality(ret) == PER_LINUX32)
> ret &= ~PER_LINUX32;
>
> return ret;
> }
>
> Does the test fail on s390x as well?
Yes, it does.
personality01 0 TINFO : Child process returned TPASS
personality01 1 TFAIL : personality01.c:80: PER_LINUX32: wrong personality read back 0 expected 8
>
> It seems that mapping PER_LINUX32 to PER_LINUX is a common practice on
> 64 bit, maybe we should just skip that personality on anything than
> x86_64.
Agreed. I can send a patch.
Regards,
Jan
More information about the ltp
mailing list