<div dir="ltr"><span style="font-family:monospace">Hello!</span><div><span style="font-family:monospace"><br></span></div><div><span style="font-family:monospace">I would like to ask for a bit of help and maybe report a bug (but it's probably just a known, however, a rather confusing behavior of strace).</span></div><div><span style="font-family:monospace"><br></span></div><div><font face="monospace">While running serf (a Raft consensus agent) in Docker (which uses cgroups and kernel namespaces) I got a strange error. (</font><span style="color:rgb(0,0,0);font-family:monospace">"==> Failed to start the Serf agent: Error creating Serf: Failed to create memberlist: Failed to start TCP listener. Err: listen tcp <a href="http://0.0.0.0:7946">0.0.0.0:7946</a>: socket: operation not permitted") But the process inside the container should be behaving as a process running as root, with all the necessary capabilities.</span></div><div><span style="color:rgb(0,0,0);font-family:monospace"><br></span></div><div><span style="color:rgb(0,0,0);font-family:monospace">So, strace-ing from the host (cannot strace/ptrace from the container without using --privileged), I get the following trace:</span></div><div><span style="color:rgb(0,0,0);font-family:monospace"><br></span></div><div><span style="color:rgb(0,0,0);font-family:monospace">...</span></div><div><span style="font-family:monospace"><span style="color:rgb(0,0,0)">[pid 17148] read(3,  <unfinished ...>
</span><br>[pid 17144] clock_gettime(CLOCK_MONOTONIC,  <unfinished ...>
<br>[pid 17148] <... read resumed> "", 4096) = 0
<br>[pid 17144] <... clock_gettime resumed> {939382190280542405, 579195224836800512}) = 0
<br>[pid 17148] close(3 <unfinished ...>
<br>[pid 17144] clock_gettime(CLOCK_REALTIME,  <unfinished ...>
<br>[pid 17148] <... close resumed> )       = 0
<br>[pid 17144] <... clock_gettime resumed> {4155469542819979293, 17314723865}) = 0
<br>[pid 17148] clock_gettime(CLOCK_REALTIME,  <unfinished ...>
<br>[pid 17144] _newselect(0, NULL, NULL, NULL, {85899345920, 86034069969} <unfinished ...>
<br>[pid 17148] <... clock_gettime resumed> {4155579120320602141, 598189438530486336}) = 0
<br>[pid 17148] futex(0x18928620, FUTEX_WAKE, 1) = 1
<br>[pid 17146] <... futex resumed> )       = 0
<br>[pid 17146] _newselect(0, NULL, NULL, NULL, {429496729600, 429631460482} <unfinished ...>
<br>[pid 17144] <... _newselect resumed> )  = 0 (Timeout)
<br>[pid 17144] clock_gettime(CLOCK_MONOTONIC, {940046419857770693, 579195224836800512}) = 0
<br>[pid 17144] clock_gettime(CLOCK_REALTIME,  <unfinished ...>
<br>[pid 17148] syscall_4294967295(0x1, 0x18935730, 0, 0, 0, 0xff <unfinished ...>
<br>[pid 17144] <... clock_gettime resumed> {4156106598139125789, 17314723865}) = 0
<br>[pid 17148] <... syscall_4294967295 resumed> ) = -1 (errno 1)
<br>[pid 17144] _newselect(0, NULL, NULL, NULL, {85899345920, 86034069969} <unfinished ...>
<br>[pid 17148] write(1, "==> Failed to start the Serf agent: Error creating Serf: Failed to create memberlist: Failed to start TCP listener. Err: listen tcp <a href="http://0.0.0.0:7946">0.0.0.0:7946</a>: socket: operation not permitted", 177) = 177<br>
...</span></div><span style="font-family:monospace"><br></span><div><span style="font-family:monospace"><br></span></div><div><span style="font-family:monospace">I'm wondering what </span><span style="font-family:monospace">syscall_4294967295 could be, and shouldn't strace know that it's a socket (or similar) call?</span></div><div><span style="font-family:monospace"><br></span></div><div><span style="font-family:monospace"><br></span></div><div><span style="font-family:monospace">Here's a strace from inside the container:</span></div><div><span style="font-family:monospace"><br></span></div><div><span style="font-family:monospace">...</span></div><div><span style="font-family:monospace"><span style="color:rgb(0,0,0)">[pid   151] read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\0"..., 4096) = 118
</span><br>[pid   151] read(3, "", 4096)           = 0
<br>[pid   151] close(3)                    = 0
<br>[pid   151] clock_gettime(CLOCK_REALTIME, {1455331897, 882136632}) = 0
<br>[pid   151] futex(0x189d88e0, FUTEX_WAKE, 1 <unfinished ...>
<br>[pid   155] <... futex resumed> )       = 0
<br>[pid   151] <... futex resumed> )       = 1
<br>[pid   155] select(0, NULL, NULL, NULL, {0, 100} <unfinished ...>
<br>[pid   151] socket(PF_INET6, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, IPPROTO_IP) = 3
<br>[pid   151] setsockopt(3, SOL_IPV6, IPV6_V6ONLY, [0], 4) = 0
<br>[pid   151] setsockopt(3, SOL_SOCKET, SO_BROADCAST, [1], 4 <unfinished ...>
<br>[pid   155] <... select resumed> )      = 0 (Timeout)
<br>[pid   151] <... setsockopt resumed> )  = 0
<br>[pid   155] futex(0x18928620, FUTEX_WAKE, 1 <unfinished ...>
<br>[pid   151] setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4 <unfinished ...>
<br>[pid   155] <... futex resumed> )       = 1
<br>[pid   152] <... futex resumed> )       = 0
<br>[pid   151] <... setsockopt resumed> )  = 0
<br>[pid   155] select(0, NULL, NULL, NULL, {0, 100} <unfinished ...>
<br>[pid   152] select(0, NULL, NULL, NULL, {0, 100} <unfinished ...>
<br>[pid   151] bind(3, {sa_family=AF_INET6, sin6_port=htons(7946), inet_pton(AF_INET6, "::", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = 0
<br>[pid   151] listen(3, 128)              = 0
<br>[pid   151] epoll_create1(EPOLL_CLOEXEC) = 4<br>
...</span></div><div><span style="font-family:monospace"><br></span></div><div><span style="font-family:monospace"><br></span></div><div><span style="font-family:monospace"><br></span></div><div><span style="font-family:monospace">I've tried it on Linux </span><span style="color:rgb(0,0,0);font-family:monospace">4.4.0-4-generic #19-Ubuntu SMP Fri Feb 5 17:39:10 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux, with strace 4.11, and with </span><span style="color:rgb(0,0,0);font-family:monospace">4.11.0.233-0aae</span><span style="color:rgb(0,0,0);font-family:monospace"> build from sources. (Oh, and docker 1.10.1 and systemd 229, maybe they matter for namespaces.)</span></div><div><span style="color:rgb(0,0,0);font-family:monospace"><br></span></div><div><span style="color:rgb(0,0,0);font-family:monospace"><br></span></div><div><span style="color:rgb(0,0,0);font-family:monospace">Thanks for your time!</span></div><div><span style="color:rgb(0,0,0);font-family:monospace"><br></span></div><div><font color="#000000" face="monospace">Pas</font></div><div><span style="color:rgb(0,0,0);font-family:monospace"><br></span></div></div>