progrium / entrykit

Entrypoint tools for elegant, programmable containers
443 stars 29 forks source link

Race condition near `t.Process.Signal(sig)`? #5

Closed elimisteve closed 3 years ago

elimisteve commented 8 years ago

Sometimes running these commands panics a Go program, sometimes it doesn't seem to do anything:

$ sudo docker run -it progrium/envy sh
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x0 pc=0x451d12]

goroutine 9 [running]:
os.(*Process).signal(0x0, 0x7f206b2c77a8, 0xc2080325a8, 0x0, 0x0)
        /usr/local/go/src/os/exec_unix.go:40 +0x42
os.(*Process).Signal(0x0, 0x7f206b2c77a8, 0xc2080325a8, 0x0, 0x0)
        /usr/local/go/src/os/doc.go:51 +0x4e
github.com/progrium/entrykit.func·001()
        /home/ubuntu/.go_workspace/src/github.com/progrium/entrykit/entrykit.go:51 +0xf8
created by github.com/progrium/entrykit.ProxySignals
        /home/ubuntu/.go_workspace/src/github.com/progrium/entrykit/entrykit.go:54 +0x12e

...

Same thing with /bin/bash:

$ sudo docker run -it progrium/envy /bin/bash
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x0 pc=0x451d12]

goroutine 9 [running]:
os.(*Process).signal(0x0, 0x7fe1542ca7a8, 0xc2080325e8, 0x0, 0x0)
        /usr/local/go/src/os/exec_unix.go:40 +0x42
os.(*Process).Signal(0x0, 0x7fe1542ca7a8, 0xc2080325e8, 0x0, 0x0)
        /usr/local/go/src/os/doc.go:51 +0x4e
github.com/progrium/entrykit.func·001()
        /home/ubuntu/.go_workspace/src/github.com/progrium/entrykit/entrykit.go:51 +0xf8
created by github.com/progrium/entrykit.ProxySignals
        /home/ubuntu/.go_workspace/src/github.com/progrium/entrykit/entrykit.go:54 +0x12e

...
progrium commented 8 years ago

Definitely a bug, but what do you expect to happen? What is the Dockerfile? The debug Dockerfile in this project? It's not made to run commands provided from docker run since it's a hardcoded entrypoint to run two example processes in parallel.

elimisteve commented 8 years ago

Then sorry for the false alarm; I was just trying to look inside the container to troubleshoot https://github.com/progrium/envy/issues/49 without having to manually dig through /var/lib/docker/aufs/diff/** on the host :-).

joemcmahon commented 3 years ago

I think we can close this one.