[PATCH v10 0/5] [PIDNS] Final

Dmitry V. Levin ldv at altlinux.org
Thu Aug 20 11:44:01 UTC 2020


On Thu, Aug 20, 2020 at 01:38:34PM +0200, Ákos Uzonyi wrote:
> On Thu, 20 Aug 2020 at 11:34, Dmitry V. Levin <ldv at altlinux.org> wrote:
> > Hi,
> >
> > When I tried this patchset on various systems, on those where NS_* ioctl
> > commands are not supported by the kernel, a lot of tests start failing with
> > similar diagnostics.  For example:
> >
> > FAIL: dup-y.gen
> > ===============
> >
> > + ../strace -V
> > + TIMEOUT='timeout -k 5 -s XCPU 2100'
> > + timeout -k 5 -s XCPU 2100 true
> > + '[' 1 -eq 0 ']'
> > + exec timeout -k 5 -s XCPU 2100 ./dup-y.gen.test
> > + run_strace_match_diff -a8 --trace=dup -y
> > + args='-a8 --trace=dup -y'
> > + '[' -n '-a8 --trace=dup -y' -a '(' -z '-a8 --trace=dup -y' -o -z '' ')' ']'
> > + run_prog
> > + '[' 0 -eq 0 ']'
> > + set -- ../dup-y
> > + args=../dup-y
> > + ../dup-y
> > + run_strace -a8 --trace=dup -y ../dup-y
> > + args='-a8 --trace=dup -y ../dup-y'
> > + ../../strace -o log -a8 --trace=dup -y ../dup-y
> > ../../strace: NS_* ioctl commands are not supported by the kernel
> > + match_diff log exp
> > + local output expected error
> > + '[' 2 -eq 0 ']'
> > + output=log
> > + shift
> > + '[' 1 -eq 0 ']'
> > + expected=exp
> > + shift
> > + '[' 0 -eq 0 ']'
> > + error='../../strace -a8 --trace=dup -y ../dup-y output mismatch'
> > + check_prog diff
> > + type diff
> > + diff -u -- exp log
> > --- exp 2020-08-20 00:53:31.868741256 +0000
> > +++ log 2020-08-20 00:53:31.868741256 +0000
> > @@ -1,5 +1,5 @@
> >  dup(-1) = -1 EBADF (Bad file descriptor)
> > -dup(0</dev/null>) = 3</dev/null>
> > -dup(3</dev/null>) = 4</dev/null>
> > -dup(9</dev/full>) = 5</dev/full>
> > +dup(0)  = 3
> > +dup(3)  = 4
> > +dup(9)  = 5
> >  +++ exited with 0 +++
> > + fail_ '../../strace -a8 --trace=dup -y ../dup-y output mismatch'
> > + warn_ 'dup-y.gen.test: failed test: ../../strace -a8 --trace=dup -y ../dup-y output mismatch'
> > + printf '%s\n' 'dup-y.gen.test: failed test: ../../strace -a8 --trace=dup -y ../dup-y output mismatch'
> > dup-y.gen.test: failed test: ../../strace -a8 --trace=dup -y ../dup-y output mismatch
> > + exit 1
> > FAIL dup-y.gen.test (exit status: 1)
> 
> Interesting. On travis we have some systems where NS_* ioctl commands
> are not supported, and all tests pass. I think the problem is caused
> by is_proc_ours returning false (otherwise translation should be
> trivial, and no NS_ ioctl commands would be needed). First I thought
> that /proc is not mounted on that system, but dup-y is skipped if
> /proc/self/fd is not available (anyway we should check if /proc is
> mounted and return 0 in translate_pid if not). Also I think we could
> print error messages if /proc/%s/ns/pid or /proc/%s/status is not
> available. Is it possible that these are not available on this system?

No, both /proc/self/status and /proc/self/ns/pid are available, and
$ readlink /proc/self/ns/pid
pid:[4026532619]
they look plausible.

FWiW, the host where I first seen this is
Linux el7-test.fedorainfracloud.org 3.10.0-957.1.3.el7.x86_64 #1 SMP Thu Nov 29 14:49:43 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux


-- 
ldv


More information about the Strace-devel mailing list