[buildd-tools-devel] Bug#681594: Bug#681594: Bug#681594: on kfreebsd-* doesn't support getting executable pathname from kernel and from /proc/self/exe

Gabriele Giacone 1o5g4r8o at gmail.com
Mon Jul 16 16:08:29 UTC 2012


On 07/16/2012 12:20 PM, Roger Leigh wrote:
> The question I have is, is this reproducible without schroot.
> e.g. can you reproduce the problem by:
> - mounting linprocfs on /path/to/chroot/proc
> - running "chroot /path/to/chroot"
> - testing if it still fails
> 
> If this is the case, then it's most likely a linprocfs bug in
> the kfreebsd kernel.
> 
> Also, what happens if you do a nullfs mount of the host /proc
> onto /path/to/chroot?  Does it still fail in this case?

I'd treat them as two different issues, even though tests make me point
the finger at nullfs in both cases. Don't know if two symptoms of the
same bug.

------------
kernel issue
------------

Some tests with getpathname I attached in first mail.

prepare
 # mkdir /tmp/subdir
 # cp getpathname /tmp
 # cp getpathname /tmp/subdir
 # cp getpathname /usr
 # cp getpathname /usr/local

 # cd /tmp
 # ./getpathname
 /tmp/getpathname
 # /tmp/getpathname
 /tmp/getpathname
 # cd /
 # /tmp/getpathname
 /tmp/getpathname

 # cd /tmp/subdir
=== schroot
 # ./getpathname
 /tmp/subdir/getpathname
 # /tmp/subdir/getpathname
 /tmp/subdir/getpathname
 # cd /tmp
 # /tmp/subdir/getpathname
 sysctl error		<<<<<
 # cd /
 # /tmp/subdir/getpathname
 sysctl error		<<<<<
=== classic chroot
 # ./getpathname
 /tmp/subdir/getpathname
 # /tmp/subdir/getpathname
 /tmp/subdir/getpathname
 # cd /tmp
 # /tmp/subdir/getpathname
 /tmp/subdir/getpathname
 # cd /
 # /tmp/subdir/getpathname
 /tmp/subdir/getpathname
=== classic chroot with /tmp nullfs
 # ./getpathname
 /tmp/subdir/getpathname
 # /tmp/subdir/getpathname
 /tmp/subdir/getpathname
 # cd /tmp
 # /tmp/subdir/getpathname
 sysctl error		<<<<<
 # cd /
 # /tmp/subdir/getpathname
 sysctl error		<<<<<

 # cd /usr
 # ./getpathname
 /usr/getpathname
 # /usr/getpathname
 /usr/getpathname
 # cd /
=== schroot
 # /usr/getpathname
 sysctl error		<<<<<
=== classic chroot
 # /usr/getpathname
 /usr/getpathname
=== classic chroot with /usr nullfs
 # /usr/getpathname
 /usr/getpathname

 # cd /usr/local
=== schroot
 # ./getpathname
 sysctl error		<<<<<
 # /usr/local/getpathname
 sysctl error		<<<<<
 # cd /usr
 # /usr/local/getpathname
 sysctl error		<<<<<
 # cd /
 # /usr/local/getpathname
 sysctl error		<<<<<
=== classic chroot
 # ./getpathname
 /usr/local/getpathname
 # /usr/local/getpathname
 /usr/local/getpathname
 # cd /usr
 # /usr/local/getpathname
 /usr/local/getpathname
 # cd /
 # /usr/local/getpathname
 /usr/local/getpathname
=== classic chroot with /usr nullfs
 # ./getpathname
 /usr/local/getpathname
 # /usr/local/getpathname
 /usr/local/getpathname
 # cd /usr
 # /usr/local/getpathname
 sysctl error		<<<<<
 # cd /
 # /usr/local/getpathname
 sysctl error		<<<<<

--------------------
/proc/self/exe issue
--------------------

# mount -t linprocfs proc /srv/chroot/unstable-kfreebsd-i386-sbuild/proc
# chroot /srv/chroot/unstable-kfreebsd-i386-sbuild ls -l /proc/self/exe
lr--r--r-- 1 root root 0 Jul 16 13:17 /proc/self/exe -> /bin/ls
(unstable-kfreebsd-i386-sbuild)root at kfreebsd-i386-01:/# exit
# umount /srv/chroot/unstable-kfreebsd-i386-sbuild/proc

# mount -t nullfs /proc /srv/chroot/unstable-kfreebsd-i386-sbuild/proc
# chroot /srv/chroot/unstable-kfreebsd-i386-sbuild ls -l /proc/self/exe
lr--r--r-- 1 root root 0 Jul 16 13:18 /proc/self/exe -> /bin/ls
# umount /srv/chroot/unstable-kfreebsd-i386-sbuild/proc

# schroot -c sid -- ls -l /proc/self/exe
ls: cannot read symbolic link /proc/self/exe: No such file or directory
lr--r--r-- 1 root root 0 Jul 16 13:24 /proc/self/exe

Symbolic link which doesn't point to any file.
Seems the underlying nullfs breaks linprocfs overmount.



-- 
Gabriele



More information about the Buildd-tools-devel mailing list