Singularity: Extraction with unsquashfs 4.4 can fail to fs without xattr support

Created on 28 Oct 2020  路  3Comments  路  Source: hpcng/singularity

Version of Singularity:

What version of Singularity are you using? Run:

3.6.4

Actual behavior

When extracting to a filesystem without xattr support (e.g. tmpfs) using unsquashfs 4.4 we end up with a fatal although the extraction was completed (without xattrs set).

dave@dev-fedora/d/shm> singularity run -u alpine_latest.sif
INFO:    Converting SIF file to temporary sandbox...
FATAL:   while extracting alpine_latest.sif: root filesystem extraction failed: extract command failed: WARNING: passwd file doesn't exist in container, not updating
WARNING: group file doesn't exist in container, not updating
WARNING: Skipping mount /etc/hosts [binds]: /etc/hosts doesn't exist in container
WARNING: Skipping mount /etc/localtime [binds]: /etc/localtime doesn't exist in container
WARNING: Skipping mount proc [kernel]: /proc doesn't exist in container
WARNING: Skipping mount /usr/local/var/singularity/mnt/session/tmp [tmp]: /tmp doesn't exist in container
WARNING: Skipping mount /usr/local/var/singularity/mnt/session/var/tmp [tmp]: /var/tmp doesn't exist in container
WARNING: Skipping mount /usr/local/var/singularity/mnt/session/etc/resolv.conf [files]: /etc/resolv.conf doesn't exist in container
write_xattr: failed to write xattr user.rootlesscontainers for file /image/root/etc/shadow because extended attributes are not supported by the destination filesystem
Ignoring xattrs in filesystem
To avoid this error message, specify -no-xattrs
Parallel unsquashfs: Using 16 processors
424 inodes (454 blocks) to write
[===============================================================|] 454/454 100%
created 90 files
created 99 directories
created 334 symlinks
created 0 devices
created 0 fifos
created 0 sockets

This occurs only with unsquashfs 4.4 as previous versions did not set an error code for non-fatal errors.

See: https://github.com/plougher/squashfs-tools/blob/master/CHANGES

Steps to reproduce this behavior

See above

What OS/distro are you running

Fedora 33

How did you install Singularity

Write here how you installed Singularity. Eg. RPM, source.

Bug

Most helpful comment

@moritzschaefer Downgrading to Singularity 3.6.3 from conda-forge avoids the issue. I'll continue the discussion with @dctrud in #5454.

All 3 comments

I get the same problem with version 4.3 as with version 4.4. However, I think it might be something else, since xattrs should be supported (I am using logical volumes on ext4). Is there a way to get more debug output from singularity when running unsquashfs?

FATAL:   while extracting /path/config/.snakemake/singularity/bc12f9f5dd66bf5a09489dfa07c45231.simg: root filesystem extra
ction failed: extract command failed: WARNING: passwd file doesn't exist in container, not updating
WARNING: group file doesn't exist in container, not updating
WARNING: Skipping mount /etc/hosts [binds]: /etc/hosts doesn't exist in container
WARNING: Skipping mount /etc/localtime [binds]: /etc/localtime doesn't exist in container
WARNING: Skipping mount proc [kernel]: /proc doesn't exist in container
WARNING: Skipping mount /home/me/anaconda3/envs/sp/var/singularity/mnt/session/tmp [tmp]: /tmp doesn't exist in container
WARNING: Skipping mount /home/me/anaconda3/envs/sp/var/singularity/mnt/session/var/tmp [tmp]: /var/tmp doesn't exist in container
WARNING: Skipping mount /home/me/anaconda3/envs/sp/var/singularity/mnt/session/etc/resolv.conf [files]: /etc/resolv.conf doesn't exist in contain
er
panic: readlink /proc/self/exe: no such file or directory

goroutine 1 [running]:
github.com/sylabs/singularity/internal/pkg/buildcfg.RelocatePath(0x563538544993, 0xff, 0x563538543542, 0x6b)
        github.com/sylabs/[email protected]/internal/pkg/buildcfg/config.go:17 +0x3cb
github.com/sylabs/singularity/internal/pkg/buildcfg.init()
        github.com/sylabs/[email protected]/internal/pkg/buildcfg/config.go:52 +0x21f
: exit status 2

@moritzschaefer - This is definitely a different problem. The fact that the panic happens in RelocatePath suggests you aren't using the main Singularity codebase, but the conda-forge version which is patched by a 3rd party. That patch appears to be incompatible with the wrapped unsquashfs approach in Singularity 3.6.4.

As the issue cannot occur in the main Singularity code base (we do not have RelocatePath), it's not something that we can fix. However the patch is being submitted in a PR at #5454 - so discussion there with @chrisburr would likely be approperiate.

@moritzschaefer Downgrading to Singularity 3.6.3 from conda-forge avoids the issue. I'll continue the discussion with @dctrud in #5454.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

yee379 picture yee379  路  5Comments

jmdf picture jmdf  路  4Comments

kkmann picture kkmann  路  4Comments

zhcf picture zhcf  路  3Comments

gdolle picture gdolle  路  5Comments