-
Notifications
You must be signed in to change notification settings - Fork 87
Description
In runc the exec subcommand failed with an runtime error such as
container_linux.go:265: starting container process caused "open /dev/pts/4294967296: no such file or directory".
- This is a bug report
- This is a feature request
- I searched existing issues before opening this one
Expected behavior
docker run -ti busybox sh
In another session, docker exec -ti <container> /bin/sh opens another shell
Actual behavior
On big endian systems after 17.06-ce -- for the second command, an error is printed out:
OCI runtime exec failed: exec failed: container_linux.go:296: starting container process caused "open /dev/pts/4294967296: no such file or directory": unknown
Please see "additional details" below for a fix. This happens as soon as two TTYs are opened on the same container, since the second one is not found (the path to the PTS is not found due to incorrect handling of the system call).
Beyond upstream, this seems severe enough to have a fix at least considered for 18.03.x , and it is an -ee issue, too (we can open that separately)
Steps to reproduce the behavior
docker run -ti busybox sh
docker exec -ti <container> sh
Output of docker version:
$ docker version
Client:
Version: 17.12.0-ce
API version: 1.35
Go version: go1.9.2
Git commit: c97c6d6
Built: Wed Dec 27 20:02:20 2017
OS/Arch: linux/s390x
Server:
Engine:
Version: 17.12.0-ce
API version: 1.35 (minimum version 1.12)
Go version: go1.9.2
Git commit: c97c6d6
Built: Wed Dec 27 20:07:36 2017
OS/Arch: linux/s390x
Experimental: false
Output of docker info:
$ docker info
Containers: 1
Running: 1
Paused: 0
Stopped: 0
Images: 25
Server Version: 17.12.0-ce
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 75
Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc runq
Default Runtime: runc
Init Binary: docker-init
containerd version: 89623f28b87a6004d4b785663257362d1658a729
runc version: b2567b37d7b75eb4cf325b77297b140ea686ce8f
init version: 949e6fa
Security Options:
apparmor
seccomp
Profile: default
Kernel Version: 4.13.0-32-generic
Operating System: Ubuntu 17.10
OSType: linux
Architecture: s390x
CPUs: 4
Total Memory: 15.6GiB
Name: REDACTED
ID: ZLYT:GO2W:GDJF:ATBQ:H36E:WGQJ:U7DY:JWBW:4ITY:C4Q4:JMQ6:WDYB
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
WARNING: No swap limit support
Additional environment details (AWS, VirtualBox, physical, etc.)
Just use a 64bit big endian system, such as s390x (IBM Z). (https://developer.ibm.com/linuxone/ gives you that in minutes, should you be interested 😉).
The root cause is described/fixed by containerd/console#20
It is also upstream in runc already: opencontainers/runc#1727
So moby/docker-ce/docker-ee need to move to an appropriate runc level
We can open a PR for docker-ce, if you like, but changing runc commits should probably be carefully reviewed by you guys...