[Pkg-erlang-devel] Bug#823248: erlang-base-hipe: Cannot connect to epmd when IPv6 is enabled

Josef Kufner jk at frozen-doe.net
Mon May 2 17:32:40 UTC 2016


Package: erlang-base-hipe
Version: 1:18.3-dfsg-1
Severity: important
Tags: ipv6

Dear Maintainer,

after upgrade to ejabberd 18.3 it won't start. I found that problem is
in connection to epmd, which won't accept the connection.

Run `epmd -d` in one terminal.

Run `strace epmd -names` in second terminal.

The second command will get stuck when connecting to the first epmd,
strace says:

  ...
  socket(PF_INET6, SOCK_STREAM, IPPROTO_IP) = 3                                                                     
  connect(3, {sa_family=AF_INET6, sin6_port=htons(4369), inet_pton(AF_INET6, "::1", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28

... and nothing happens. After few minutes, connect times out and fails.

I'm running only ejabberd 18.3, it worked fine with ejabberd 18.2 and
erlang of the same age.

I disabled IPv6 using `echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6` 
and everything works again, except IPv6 connectivity (luckily I don't
have it anyway). With this workaround `strace epmd -names` says:

  ...
  socket(PF_INET6, SOCK_STREAM, IPPROTO_IP) = 3
  connect(3, {sa_family=AF_INET6, sin6_port=htons(4369), inet_pton(AF_INET6, "::1", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = -1 EADDRNOTAVAIL (Cannot assign requested address)
  close(3)                                = 0
  socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3
  connect(3, {sa_family=AF_INET, sin_port=htons(4369),
  sin_addr=inet_addr("127.0.0.1")}, 16) = 0
  write(3, "\0\1n", 3)                    = 3
  read(3, "\0\0\21\21", 4)                = 4
  fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 4), ...}) = 0
  mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f40ce13b000
  write(1, "epmd: up and running on port 436"..., 45epmd: up and running
  on port 4369 with data:) = 45
  read(3, "", 3060)                       = 0
  close(3)                                = 0
  exit_group(0)                           = ?
  +++ exited with 0 +++

So the IPv6 connect fails instantly and IPv4 connect works fine.


-- System Information:
Debian Release: stretch/sid
  APT prefers stable
  APT policy: (750, 'stable'), (700, 'unstable'), (650, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 4.5.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=cs_CZ.utf8, LC_CTYPE=cs_CZ.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Init: systemd (via /run/systemd/system)

Versions of packages erlang-base-hipe depends on:
ii  adduser              3.114
ii  init-system-helpers  1.31
ii  libc6                2.22-7
ii  libsystemd0          229-5
ii  libtinfo5            6.0+20160319-1
ii  procps               2:3.3.11-3
ii  zlib1g               1:1.2.8.dfsg-2+b1

Versions of packages erlang-base-hipe recommends:
ii  erlang-crypto        1:18.3-dfsg-1
ii  erlang-syntax-tools  1:18.3-dfsg-1
ii  libsctp1             1.0.16+dfsg-3

Versions of packages erlang-base-hipe suggests:
pn  erlang           <none>
pn  erlang-doc       <none>
ii  erlang-edoc      1:18.3-dfsg-1
pn  erlang-gs        <none>
ii  erlang-manpages  1:18.3-dfsg-1
ii  erlang-tools     1:18.3-dfsg-1

-- no debconf information



More information about the Pkg-erlang-devel mailing list