proot icon indicating copy to clipboard operation
proot copied to clipboard

proot exits with proot: ./path/path.c:547: compare_paths2: Assertion `length2 > 0' failed

Open nilsrennebarth opened this issue 1 year ago • 2 comments

Steps to Reproduce the Problem

  1. Create a standard debian bookworm rootfs
  2. 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
  3. 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.

nilsrennebarth avatar Sep 13 '23 13:09 nilsrennebarth

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.

nilsrennebarth avatar Sep 14 '23 10:09 nilsrennebarth

Duplicate of #182, see https://github.com/proot-me/proot/issues/182#issuecomment-886014104 in particular

alexhenrie avatar Feb 08 '24 17:02 alexhenrie