[buildd-tools-devel] Bug#608428: Bug#608428: Bug#608428: schroot: [kfreebsd-*] cannot handle long (>= 14 chars) chroot names

Roger Leigh rleigh at codelibre.net
Sat Jan 1 14:42:08 UTC 2011


reassign 608428 freebsd-utils
severity 608428 serious
thanks

On Thu, Dec 30, 2010 at 10:18:27PM +0000, Roger Leigh wrote:
> On Thu, Dec 30, 2010 at 09:06:28PM +0100, Jakub Wilk wrote:
> 
> Hi Jakub,
> 
> > On kfreebsd-*, schroot is not able to unmount everything if chroot name  
> > is longer than 13 characters:
> >
> > # schroot -c 123456789abcde echo Hello world
> > Hello world
> > E: 10mount: umount: unmount of /var/lib/schroot/mount/123456789abcde-e7de3ef4-e02c-430c-b9d9-0e4eb34f3bd0/dev/f failed: Invalid argument
> >
> > If the name is longer than 18 characters, it cannot even run a command:
> >
> > # schroot -c 123456789abcdefghij echo Hello world
> > E: 10mount: mount: dev : File name too long
> > E: 10mount: umount: unmount of /var/lib/schroot/mount/123456789abcdefghij-cf720545-3204-4bda-93a8-82bbd3ac46ca/ failed: Invalid argument
> >
> > Given that e.g. sbuild-createchroot creates chroot named  
> > "$SUITE-kfreebsd-$CPU-sbuild" (which is >= 23 characters), this is quite  
> > an unfortunate limitation.
> 
> Yes, it is.  Given that schroot only runs the system's standard
> "mount" and "umount" commands, is this an underlying limitation in
> either those commands or in the system calls?  Or in the shell?

I've created a kfreebsd install using kvm, and installed sbuild and
schroot in it, and I have reproduced the problem.

The bug is not in sbuild; it's reproducible with schroot alone as you
saw.

The bug is not in schroot; it's reproducible with the plain
mount/umount commands and long paths, shown below.

root at kfreebsd:~# for c in 0 1 2 3 4 5 6 7 8 9 a b c d e f; do cs="$cs$c"; mkdir  /tmp/$cs; mount -v -t linprocfs linprocfs /tmp/$cs; done
linprocfs on /tmp/0 (linprocfs, local)
linprocfs on /tmp/01 (linprocfs, local)
linprocfs on /tmp/012 (linprocfs, local)
linprocfs on /tmp/0123 (linprocfs, local)
linprocfs on /tmp/01234 (linprocfs, local)
linprocfs on /tmp/012345 (linprocfs, local)
linprocfs on /tmp/0123456 (linprocfs, local)
linprocfs on /tmp/01234567 (linprocfs, local)
linprocfs on /tmp/012345678 (linprocfs, local)
linprocfs on /tmp/0123456789 (linprocfs, local)
linprocfs on /tmp/0123456789a (linprocfs, local)
linprocfs on /tmp/0123456789ab (linprocfs, local)
linprocfs on /tmp/0123456789abc (linprocfs, local)
linprocfs on /tmp/0123456789abcd (linprocfs, local)
linprocfs on /tmp/0123456789abcde (linprocfs, local)
linprocfs on /tmp/0123456789abcdef (linprocfs, local)
root at kfreebsd:~# for c in 0 1 2 3 4 5 6 7 8 9 a b c d e f; do cs="$cs$c"; mkdir /tmp/$cs; mount -v -t linprocfs linprocfs /tmp/$cs; done
linprocfs on /tmp/0123456789abcdef0 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef01 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef012 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef01234 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef012345 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef01234567 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef012345678 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789a (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789ab (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abc (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcd (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcde (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef (linprocfs, local)
root at kfreebsd:~# for c in 0 1 2 3 4 5 6 7 8 9 a b c d e f; do cs="$cs$c"; mkdir /tmp/$cs; mount -v -t linprocfs linprocfs /tmp/$cs; done
linprocfs on /tmp/0123456789abcdef0123456789abcdef0 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef01 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef012 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef01234 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef012345 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef01234567 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef012345678 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789a (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789ab (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abc (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcd (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcde (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef (linprocfs, local)
root at kfreebsd:~# for c in 0 1 2 3 4 5 6 7 8 9 a b c d e f; do cs="$cs$c"; mkdir /tmp/$cs; mount -v -t linprocfs linprocfs /tmp/$cs; done
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef01 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef012 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef01234 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef012345 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef01234567 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef012345678 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789a (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789ab (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abc (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcd (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcde (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef (linprocfs, local)
root at kfreebsd:~# for c in 0 1 2 3 4 5 6 7 8 9 a b c d e f; do cs="$cs$c"; mkdir /tmp/$cs; mount -v -t linprocfs linprocfs /tmp/$cs; done
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef01 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef012 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef01234 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef012345 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef01234567 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef012345678 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789 (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789a (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789a (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789a (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789a (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789a (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789a (linprocfs, local)

Notice here that the paths start getting clipped at the 80 character
path length.  Note that although the displayed path is clipped, and
it's reported in clipped form by mount, it's actually correctly mounted
(see below).

If we increase the path length yet further (>85 chars), it then fails
with ENAMETOOLONG:

root at kfreebsd:~# for c in 0 1 2 3 4 5 6 7 8 9 a b c d e f; do cs="$cs$c"; mkdir /tmp/$cs; mount -v -t linprocfs linprocfs /tmp/$cs; done
mount: linprocfs : File name too long
mount: linprocfs : File name too long
mount: linprocfs : File name too long
mount: linprocfs : File name too long
mount: linprocfs : File name too long
mount: linprocfs : File name too long
mount: linprocfs : File name too long
mount: linprocfs : File name too long
mount: linprocfs : File name too long
mount: linprocfs : File name too long
mount: linprocfs : File name too long
mount: linprocfs : File name too long
mount: linprocfs : File name too long
mount: linprocfs : File name too long
mount: linprocfs : File name too long
mount: linprocfs : File name too long

Unmounting is broken as well:

root at kfreebsd:~# for c in 0 1 2 3 4 5 6 7 8 9 a b c d e f; do cs="$cs$c"; umount -v /tmp/$cs; done
linprocfs: unmount from /tmp/0
linprocfs: unmount from /tmp/01
linprocfs: unmount from /tmp/012
linprocfs: unmount from /tmp/0123
linprocfs: unmount from /tmp/01234
linprocfs: unmount from /tmp/012345
linprocfs: unmount from /tmp/0123456
linprocfs: unmount from /tmp/01234567
linprocfs: unmount from /tmp/012345678
linprocfs: unmount from /tmp/0123456789
linprocfs: unmount from /tmp/0123456789a
linprocfs: unmount from /tmp/0123456789ab
linprocfs: unmount from /tmp/0123456789abc
linprocfs: unmount from /tmp/0123456789abcd
linprocfs: unmount from /tmp/0123456789abcde
linprocfs: unmount from /tmp/0123456789abcdef
root at kfreebsd:~# for c in 0 1 2 3 4 5 6 7 8 9 a b c d e f; do cs="$cs$c"; umount -v /tmp/$cs; done
linprocfs: unmount from /tmp/0123456789abcdef0
linprocfs: unmount from /tmp/0123456789abcdef01
linprocfs: unmount from /tmp/0123456789abcdef012
linprocfs: unmount from /tmp/0123456789abcdef0123
linprocfs: unmount from /tmp/0123456789abcdef01234
linprocfs: unmount from /tmp/0123456789abcdef012345
linprocfs: unmount from /tmp/0123456789abcdef0123456
linprocfs: unmount from /tmp/0123456789abcdef01234567
linprocfs: unmount from /tmp/0123456789abcdef012345678
linprocfs: unmount from /tmp/0123456789abcdef0123456789
linprocfs: unmount from /tmp/0123456789abcdef0123456789a
linprocfs: unmount from /tmp/0123456789abcdef0123456789ab
linprocfs: unmount from /tmp/0123456789abcdef0123456789abc
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcd
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcde
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef
root at kfreebsd:~# for c in 0 1 2 3 4 5 6 7 8 9 a b c d e f; do cs="$cs$c"; umount -v /tmp/$cs; done
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef01
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef012
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef01234
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef012345
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef01234567
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef012345678
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789a
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789ab
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abc
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcd
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcde
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcdef
root at kfreebsd:~# for c in 0 1 2 3 4 5 6 7 8 9 a b c d e f; do cs="$cs$c"; umount -v /tmp/$cs; done
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcdef01
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcdef012
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcdef01234
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcdef012345
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcdef01234567
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcdef012345678
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789a
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789ab
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abc
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcd
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcde
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
root at kfreebsd:~# for c in 0 1 2 3 4 5 6 7 8 9 a b c d e f; do cs="$cs$c"; umount -v /tmp/$cs; done
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef01
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef012
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef01234
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef012345
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef01234567
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef012345678
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789
linprocfs: unmount from /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789a
umount: unmount of /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789a failed: Invalid argument
umount: unmount of /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789a failed: Invalid argument
umount: unmount of /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789a failed: Invalid argument
umount: unmount of /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789a failed: Invalid argument
umount: unmount of /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789a failed: Invalid argument

As before, the path gets clipped at 80 chars, and umount fails to
umount the truncated path.

Again, as we get to >85 chars, it fails outright:

root at kfreebsd:~# for c in 0 1 2 3 4 5 6 7 8 9 a b c d e f; do cs="$cs$c"; umount -v /tmp/$cs; done
umount: /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0: not a file system root directory
umount: /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef01: not a file system root directory
umount: /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef012: not a file system root directory
umount: /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123: not a file system root directory
umount: /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef01234: not a file system root directory
umount: /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef012345: not a file system root directory
umount: /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456: not a file system root directory
umount: /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef01234567: not a file system root directory
umount: /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef012345678: not a file system root directory
umount: /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789: not a file system root directory
umount: /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789a: not a file system root directory
umount: /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789ab: not a file system root directory
umount: /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abc: not a file system root directory
umount: /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcd: not a file system root directory
umount: /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcde: not a file system root directory
umount: /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef: not a file system root directory


Mount reports truncated paths.  These are the remaining mounts after
running the above commands.  These are paths from 80-85 chars since <80
mount/umount OK, and >85 fail.  80-85 lengths mount OK even though
reported incorrectly, but fail to umount:

root at kfreebsd:~# mount | grep /tmp
linprocfs on /tmp/var/lib/schroot/mount/kfreebsd-amd64-sbuild-xxxxxxxx0xxxx0xxxx0xxxx0xxxxxxx (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789a (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789a (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789a (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789a (linprocfs, local)
linprocfs on /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789a (linprocfs, local)

But, if we look at /proc/mounts in linprocfs, we do see the full
non-clipped path!

root at kfreebsd:~# cat /proc/mounts | grep /tmp
linprocfs /tmp/var/lib/schroot/mount/kfreebsd-amd64-sbuild-xxxxxxxx0xxxx0xxxx0xxxx0xxxxxxx/proc linprocfs rw 0 0
linprocfs /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789ab linprocfs rw 0 0
linprocfs /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abc linprocfs rw 0 0
linprocfs /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcd linprocfs rw 0 0
linprocfs /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcde linprocfs rw 0 0
linprocfs /tmp/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef linprocfs rw 0 0


So, this looks like a bug in the mount/umount utilities and/or the
kfreebsd mount/nmount/umount system calls.

Possible explanation: there's an 80 char buffer being used which causes
the truncation.  The syscall manual pages tell us that there's a 1023
character restriction with 255 chars per path component.  We're nowhere
near that documented limit, so there's a serious bug somewhere.


I'm not a freebsd user or developer.  I've identified the cause of the
problem, and it's not in schroot.  This really needs the attention of
some freebsd people who can fix the length restrictions, I've
realistically done all I am able.

I've reassigned this to freebsd-utils, which is the most likely place
for the bug to be.  I've also put the severity to serious, since this
is a fundamental and dangerous flaw in a key system component which
can and is causing breakage.  It would be good if this could be
fixed for squeeze.


Regards,
Roger

-- 
  .''`.  Roger Leigh
 : :' :  Debian GNU/Linux             http://people.debian.org/~rleigh/
 `. `'   Printing on GNU/Linux?       http://gutenprint.sourceforge.net/
   `-    GPG Public Key: 0x25BFB848   Please GPG sign your mail.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: Digital signature
URL: <http://lists.alioth.debian.org/pipermail/buildd-tools-devel/attachments/20110101/0ef438bb/attachment.pgp>


More information about the Buildd-tools-devel mailing list