proot
proot copied to clipboard
proot exits with proot: ./path/path.c:547: compare_paths2: Assertion `length2 > 0' failed
Steps to Reproduce the Problem
- Create a standard debian bookworm rootfs
- Enter the rootfs via proot by proot -0 -r OUT/ROOT -w / -b /proc/ -b /etc/resolv.conf -b /etc/hosts -b /dev/ /bin/bash
- Run the command
systemd-tmpfiles --create debian.conf
Specifications
- Proot/Care version: 5.4.0
- Kernel version: Ubuntu 5.15.0-76-generic
- Host distribution: debian bookworm
- Guest distribution: debian bookworm
Remarks
I tried editing the debian.conf file, and found that entries starting with an L provoke the assertion failure. According to the manpage this should just create a symlink if it does not exist yet. Creating the same links by /usr/bin/ln works however.
What I tried is to to install various packages, among them systemd in a proot made chroot, and the systemd postinst failed with the said assertion failure.
I think I know what the problem is: The readlinkat(2) manpage states:
Since Linux 2.6.39, pathname can be an empty string, in which case the call operates on the symbolic link referred to by dirfd
This case appears not to be supported by proot when I read the source correctly.
Duplicate of #182, see https://github.com/proot-me/proot/issues/182#issuecomment-886014104 in particular