2021-01-09 08:04

slirp4netns sync pipe EOF on Fedora Silverblue 30


On Fedora Silverblue 30, whenever I try to run a command within a container image, buildah gives me an error saying error running container: failed to read from slirp4netns sync pipe: EOF.

Steps to reproduce the issue: 1. Create a simple container with, say, $ buildah from --name foo fedora:30 2. Try to run something inside said container $ buildah run foo -- ls

Describe the results you received:

$ buildah run foo -- ls
error running container: failed to read from slirp4netns sync pipe: EOF
error while running runtime: exit status 1
ERRO[0000] exit status 1

Describe the results you expected:

The output should be the output of ls in this case.

Output of rpm -q buildah or apt list buildah:


Output of buildah version:

Version:         1.7-dev
Go Version:      go1.12beta2
Image Spec:      1.0.0
Runtime Spec:    1.0.0
CNI Spec:        0.4.0
libcni Version:  
Git Commit:      
Built:           Thu Jan  1 02:00:00 1970
OS/Arch:         linux/amd64

Output of cat /etc/*release:

Fedora release 30 (Thirty)
VERSION="30.20190425.n.0 (Workstation Edition)"
PRETTY_NAME="Fedora 30.20190425.n.0 (Workstation Edition)"
VARIANT="Workstation Edition"
Fedora release 30 (Thirty)
Fedora release 30 (Thirty)

Output of uname -a:

Linux darkstar 5.0.7-300.fc30.x86_64 #1 SMP Mon Apr 8 18:28:09 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

Output of cat /etc/containers/storage.conf:

# This file is is the configuration file for all tools
# that use the containers/storage library.
# See man 5 containers-storage.conf for more information
# The "container storage" table contains all of the server options.

# Default Storage Driver
driver = "overlay"

# Temporary storage location
runroot = "/var/run/containers/storage"

# Primary Read/Write location of container storage
graphroot = "/var/lib/containers/storage"

# Storage options to be passed to underlying storage drivers

# AdditionalImageStores is used to pass paths to additional Read/Only image stores
# Must be comma separated list.
additionalimagestores = [

# Size is used to set a maximum size of the container image.  Only supported by
# certain container storage drivers.
size = ""

# Path to an helper program to use for mounting the file system instead of mounting it
# directly.
#mount_program = "/usr/bin/fuse-overlayfs"

# OverrideKernelCheck tells the driver to ignore kernel checks based on kernel version
override_kernel_check = "true"

# mountopt specifies comma separated list of extra mount options
mountopt = "nodev"

# Remap-UIDs/GIDs is the mapping from UIDs/GIDs as they should appear inside of
# a container, to UIDs/GIDs as they should appear outside of the container, and
# the length of the range of UIDs/GIDs.  Additional mapped sets can be listed
# and will be heeded by libraries, but there are limits to the number of
# mappings which the kernel will allow when you later attempt to run a
# container.
# remap-uids = 0:1668442479:65536
# remap-gids = 0:1668442479:65536

# Remap-User/Group is a name which can be used to look up one or more UID/GID
# ranges in the /etc/subuid or /etc/subgid file.  Mappings are set up starting
# with an in-container ID of 0 and the a host-level ID taken from the lowest
# range that matches the specified name, and using the length of that range.
# Additional ranges are then assigned, using the ranges which specify the
# lowest host-level IDs first, to the lowest not-yet-mapped container-level ID,
# until all of the entries have been used for maps.
# remap-user = "storage"
# remap-group = "storage"

# Storage Options for thinpool

# autoextend_percent determines the amount by which pool needs to be
# grown. This is specified in terms of % of pool size. So a value of 20 means
# that when threshold is hit, pool will be grown by 20% of existing
# pool size.
# autoextend_percent = "20"

# autoextend_threshold determines the pool extension threshold in terms
# of percentage of pool size. For example, if threshold is 60, that means when
# pool is 60% full, threshold has been hit.
# autoextend_threshold = "80"

# basesize specifies the size to use when creating the base device, which
# limits the size of images and containers.
# basesize = "10G"

# blocksize specifies a custom blocksize to use for the thin pool.
# blocksize="64k"

# directlvm_device specifies a custom block storage device to use for the
# thin pool. Required if you setup devicemapper.
# directlvm_device = ""

# directlvm_device_force wipes device even if device already has a filesystem.
# directlvm_device_force = "True"

# fs specifies the filesystem type to use for the base device.
# fs="xfs"

# log_level sets the log level of devicemapper.
# 0: LogLevelSuppress 0 (Default)
# 2: LogLevelFatal
# 3: LogLevelErr
# 4: LogLevelWarn
# 5: LogLevelNotice
# 6: LogLevelInfo
# 7: LogLevelDebug
# log_level = "7"

# min_free_space specifies the min free space percent in a thin pool require for
# new device creation to succeed. Valid values are from 0% - 99%.
# Value 0% disables
# min_free_space = "10%"

# mkfsarg specifies extra mkfs arguments to be used when creating the base.
# device.
# mkfsarg = ""

# use_deferred_removal marks devicemapper block device for deferred removal.
# If the thinpool is in use when the driver attempts to remove it, the driver 
# tells the kernel to remove it as soon as possible. Note this does not free
# up the disk space, use deferred deletion to fully remove the thinpool.
# use_deferred_removal = "True"

# use_deferred_deletion marks thinpool device for deferred deletion.
# If the device is busy when the driver attempts to delete it, the driver
# will attempt to delete device every 30 seconds until successful.
# If the program using the driver exits, the driver will continue attempting
# to cleanup the next time the driver is used. Deferred deletion permanently
# deletes the device and all data stored in device will be lost.
# use_deferred_deletion = "True"

# xfs_nospace_max_retries specifies the maximum number of retries XFS should
# attempt to complete IO when ENOSPC (no space) error is returned by
# underlying storage device.
# xfs_nospace_max_retries = "0"

# If specified, use OSTree to deduplicate files with the overlay backend
ostree_repo = ""

# Set to skip a PRIVATE bind mount on the storage home directory.  Only supported by
# certain container storage drivers
skip_mount_home = "false"


  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答


  • weixin_39961943 weixin_39961943 4月前

    Is this the one that was fixed by updating the buildah package in Fedora 30?

    点赞 评论 复制链接分享
  • weixin_39747577 weixin_39747577 4月前

    I tried the manual overriding of the package to buildah-1.7-3.git873f001.fc30.x86_64, as mentioned in that toolbox issue but that doesn't fix the issue.

    点赞 评论 复制链接分享
  • weixin_39865440 weixin_39865440 4月前

    Is this the one that was fixed by updating the buildah package in Fedora 30?

    No, that was https://github.com/containers/buildah/issues/1504 This one's different.

    点赞 评论 复制链接分享
  • weixin_39961943 weixin_39961943 4月前

    Any ideas?

    点赞 评论 复制链接分享
  • weixin_39625975 weixin_39625975 4月前

    We changed the default to be --net host so it should not be an issue anymore as slirp4netns must be explicitly specified

    点赞 评论 复制链接分享
  • weixin_39747577 weixin_39747577 4月前

    I just tried to run my example as

    $ buildah run --net host foo -- ls

    and that did the trick. I guess now we'll just wait 'till Fedora catches up so it does that implicitly.

    点赞 评论 复制链接分享
  • weixin_39865440 weixin_39865440 4月前

    Umm... what does Fedora have to catch up with? We need a newer Buildah release in Fedora? Something else? I am confused because I am currently running the buildah-1.8 pre-release snapshots, and it used to work before without --net host. Is it some passing breakage in 1.7?

    点赞 评论 复制链接分享
  • weixin_39867142 weixin_39867142 4月前

    Weird. It is working now. I use again this version:

    [fansari ~]$ rpm -q buildah buildah-1.7-18.git873f001.fc30.x86_64

    But I am unsure whether this is the reason.

    Last changes on my system was this:


    This is SELinux stuff. I am quite sure I tried in permissive mode but I guess I only switched enforcing off on my running system and never booted in permissive mode.

    Today I fixed SELinux to get my libvirt working again and now I find that also toolbox works again (in enforcing mode).

    点赞 评论 复制链接分享