Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Bug#780300: mumble-server: Mumble-server not listening after machine restart

90 views
Skip to first unread message

Erwan JACQ

unread,
Apr 12, 2015, 6:40:02 PM4/12/15
to
I'm sorry but the systemd service file provided didn't change the behavior. The issue is still the same on my machine.

Here are my tests with 2 configurations:

A/with no "host" specified

# systemctl status mumble-server
● mumble-server.service - Mumble VoIP server
Loaded: loaded (/lib/systemd/system/mumble-server.service; enabled)
Active: active (running) since dim 2015-04-12 23:57:15 CEST; 41s ago
Docs: man:murmurd(1)
file:///usr/share/doc/mumble-server/README
http://wiki.mumble.info/wiki/Running_Murmur
Process: 853 ExecStart=/usr/sbin/murmurd -ini /etc/mumble-server.ini
(code=exited, status=0/SUCCESS)
Process: 788 ExecStartPre=/usr/bin/install -o mumble-server -g adm
-d /var/run/mumble-server (code=exited, status=0/SUCCESS)
Main PID: 1362 (murmurd)
CGroup: /system.slice/mumble-server.service
└─1362 /usr/sbin/murmurd -ini /etc/mumble-server.ini

# cat /var/log/mumble-server/mumble-server.log
<W>2015-04-12 23:57:14.916 Initializing settings
from /etc/mumble-server.ini (basepath /etc)
<C>2015-04-12 23:57:14.919 Adding 1 CA certificates from certificate
file.
<W>2015-04-12 23:57:14.919 OpenSSL: OpenSSL 1.0.1k 8 Jan 2015
<C>2015-04-12 23:57:14.920 Successfully switched to uid 126
<W>2015-04-12 23:57:15.135 ServerDB: Opened SQLite
database /var/lib/mumble-server/mumble-server.sqlite
<W>2015-04-12 23:57:15.137 Resource limits were 0 0
<W>2015-04-12 23:57:15.137 Successfully dropped capabilities
<W>2015-04-12 23:57:15.162 Murmur 1.2.8 (1.2.8-2) running on X11: Debian
GNU/Linux 8.0 (jessie): Booting servers
<W>2015-04-12 23:57:15.184 1 => Announcing server via bonjour
<W>2015-04-12 23:57:15.273 1 => Registration needs nonempty
'registername', 'registerpassword' and 'registerurl', must have an empty
'password' and allowed pings.
<W>2015-04-12 23:57:15.273 Object::connect: No such slot
MurmurDBus::userTextMessage(const User *, const TextMessage &)


B/with "host" specified

# systemctl status mumble-server
● mumble-server.service - Mumble VoIP server
Loaded: loaded (/lib/systemd/system/mumble-server.service; enabled)
Active: active (running) since lun 2015-04-13 00:12:21 CEST; 16s ago
Docs: man:murmurd(1)
file:///usr/share/doc/mumble-server/README
http://wiki.mumble.info/wiki/Running_Murmur
Process: 846 ExecStart=/usr/sbin/murmurd -ini /etc/mumble-server.ini (code=exited, status=0/SUCCESS)
Process: 780 ExecStartPre=/usr/bin/install -o mumble-server -g adm -d /var/run/mumble-server (code=exited, status=0/SUCCESS)
Main PID: 1353 (murmurd)
CGroup: /system.slice/mumble-server.service
└─1353 /usr/sbin/murmurd -ini /etc/mumble-server.ini


# cat /var/log/mumble-server/mumble-server.log
<W>2015-04-13 00:12:20.913 Initializing settings
from /etc/mumble-server.ini (basepath /etc)
<W>2015-04-13 00:12:20.914 Binding to address 192.168.1.150
<C>2015-04-13 00:12:20.916 Adding 1 CA certificates from certificate
file.
<W>2015-04-13 00:12:20.916 OpenSSL: OpenSSL 1.0.1k 8 Jan 2015
<C>2015-04-13 00:12:20.917 Successfully switched to uid 126
<W>2015-04-13 00:12:21.121 ServerDB: Opened SQLite
database /var/lib/mumble-server/mumble-server.sqlite
<W>2015-04-13 00:12:21.123 Resource limits were 0 0
<W>2015-04-13 00:12:21.124 Successfully dropped capabilities
<W>2015-04-13 00:12:21.143 Murmur 1.2.8 (1.2.8-2) running on X11: Debian
GNU/Linux 8.0 (jessie): Booting servers
<W>2015-04-13 00:12:21.203 1 => Server: TCP Listen on
192.168.1.150:64738 failed: The address is not available
<W>2015-04-13 00:12:21.301 1 => Stopped


I've seen ssh uses 2 systemd files : "ssh.socket" and "ssh.service",
shouldn't mumble use also a ".socket"? I don't know how the ssh systemd
socket handle the fact the user can choose the SSH port is a separate
config file.

Thanks a lot for the help !


--
To UNSUBSCRIBE, email to debian-bugs-...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listm...@lists.debian.org

Chris Knadle

unread,
Apr 13, 2015, 1:20:03 AM4/13/15
to
On 04/12/2015 06:37 PM, Erwan JACQ wrote:
> I'm sorry but the systemd service file provided didn't change the
> behavior. The issue is still the same on my machine.

Ugh. Okay. Thanks much for reporting this... at minimum it's
good to know that a systemd service file likely isn't a fix
for this.

I have one last suggestion: in /etc/mumble-server.ini, try a
setting of:

host=0.0.0.0

This is the "any" interface and should therefore listen on any
local IPs, regardless of what they are, and therefore regardless
of whether the local IPs change. That's suggested at the bottom
of:

http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/

So as long as you want murmurd to listen to all local interfaces,
this might be a good workaround. [I /thought/ murmurd started by
listening to 0.0.0.0 by default, but my local testing seems to show
it doesn't.]

> Here are my tests with 2 configurations:
>
> A/with no "host" specified

[...]
Result looks like murmurd running but not listening to any IPs.

> B/with "host" specified

[...]
<W>2015-04-13 00:12:21.203 1 => Server: TCP Listen on
> 192.168.1.150:64738 failed: The address is not available
> <W>2015-04-13 00:12:21.301 1 => Stopped

murmurd then starts then quits because the network still isn't
up. Ugh. Okay.

> I've seen ssh uses 2 systemd files : "ssh.socket" and "ssh.service",
> shouldn't mumble use also a ".socket"? I don't know how the ssh
> systemd socket handle the fact the user can choose the SSH port is a
> separate config file.

See 'man systemd.socket'. These .socket files are for
"socket-based activation", similar to starting services via
inetd. In other words: systemd itself would listen on the port
that murmurd would normally use, and would only start murmurd
when the port was accessed -- but for this to work murmurd would
have to have a way of accepting a socket passed to it, and I
don't think it can do that currently.

So I think what this would do would be to have systemd take the
port murmurd would normally use, then it wouldn't be available
for murmurd and it would likely quit with an error.

If you decide to experiment with this, let me know if the above
is what actually happens.

> Thanks a lot for the help !

You're welcome. ;-) Thank you for yours.

-- Chris

--
Chris Knadle
Chris....@coredump.us

Tuxicoman

unread,
Apr 13, 2015, 3:50:03 AM4/13/15
to
Thanks, this works !

Maybe having "host=0.0.0.0" as default value in the mumble-server.ini
example file would be a good solution to fix this bug in the meanwhile?

# systemctl status mumble-server
● mumble-server.service - Mumble VoIP server
Loaded: loaded (/lib/systemd/system/mumble-server.service; enabled)
Active: active (running) since lun 2015-04-13 09:25:19 CEST; 1min 16s
ago
Docs: man:murmurd(1)
file:///usr/share/doc/mumble-server/README
http://wiki.mumble.info/wiki/Running_Murmur
Process: 852 ExecStart=/usr/sbin/murmurd -ini /etc/mumble-server.ini
(code=exited, status=0/SUCCESS)
Process: 784 ExecStartPre=/usr/bin/install -o mumble-server -g adm
-d /var/run/mumble-server (code=exited, status=0/SUCCESS)
Main PID: 1346 (murmurd)
CGroup: /system.slice/mumble-server.service
└─1346 /usr/sbin/murmurd -ini /etc/mumble-server.ini

# cat /var/log/mumble-server/mumble-server.log
<W>2015-04-13 09:25:19.345 Initializing settings
from /etc/mumble-server.ini (basepath /etc)
<W>2015-04-13 09:25:19.346 Binding to address 0.0.0.0
<C>2015-04-13 09:25:19.348 Adding 1 CA certificates from certificate
file.
<W>2015-04-13 09:25:19.348 OpenSSL: OpenSSL 1.0.1k 8 Jan 2015
<C>2015-04-13 09:25:19.349 Successfully switched to uid 126
<W>2015-04-13 09:25:19.512 ServerDB: Opened SQLite
database /var/lib/mumble-server/mumble-server.sqlite
<W>2015-04-13 09:25:19.514 Resource limits were 0 0
<W>2015-04-13 09:25:19.514 Successfully dropped capabilities
<W>2015-04-13 09:25:19.554 Murmur 1.2.8 (1.2.8-2) running on X11: Debian
GNU/Linux 8.0 (jessie): Booting servers
<W>2015-04-13 09:25:19.602 1 => Server listening on 0.0.0.0:64738
<W>2015-04-13 09:25:19.690 1 => Failed to set IPV6_RECVPKTINFO for
0.0.0.0:64738
<W>2015-04-13 09:25:19.719 1 => Announcing server via bonjour
<W>2015-04-13 09:25:19.741 1 => Registration needs nonempty
'registername', 'registerpassword' and 'registerurl', must have an empty
'password' and allowed pings.
<W>2015-04-13 09:25:19.741 Object::connect: No such slot
MurmurDBus::userTextMessage(const User *, const TextMessage &)


Chris Knadle

unread,
Apr 13, 2015, 8:20:03 AM4/13/15
to
On 04/13/2015 03:33 AM, Tuxicoman wrote:
> Thanks, this works !

Thank goodness. ;-)
Not quite done with this bug yet though; you'll see why below.

> Maybe having "host=0.0.0.0" as default value in the mumble-server.ini
> example file would be a good solution to fix this bug in the meanwhile?

Well yes but I realize there's a catch; this specific setting is IPv4
only, and mumble-server can work on IPv6. Try the following and see
what happens:

host=::

That's supposed to be the "Any" address for IPv6 (but the communication
works for IPv4 too). Then (as root) run 'netstat -tpln' and if it
starts correctly you should see something like this (with a different
PID for murmurd):

tcp6 0 0 :::64738 :::* LISTEN 806/murmurd

but if it doesn't start correctly then the result will be that murmurd
is running but not listening, like it has been before using host=0.0.0.0.




The thing is that "host=" (i.e. empty setting, which is supposedly the
default if the setting isn't specified or commented out) is supposed to
mean "all interfaces". I've looked in the code for murmur and I think
it's setting it here (note the QHostAddress lines):

src/murmur/Meta.cpp:234:
---------------------------------------------------------------------
if (hasipv6) {
qlBind << QHostAddress(QHostAddress::AnyIPv6);
#ifdef Q_OS_UNIX
if (hasipv4) {
int s = ::socket(AF_INET6, SOCK_STREAM, 0);
if (s != -1) {
int ipv6only = 0;
socklen_t optlen = sizeof(ipv6only);
if (getsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY,
&ipv6only, &optlen) == 0) {
if (ipv6only == 0)
hasipv4 = false;
}
close(s);
}
}
#endif
}
if (hasipv4)
qlBind << QHostAddress(QHostAddress::Any);
}
---------------------------------------------------------------------


The "Any" and "AnyIPv6" addresses are supposed to mean "0.0.0.0" and
"::" like one would expect:

http://doc.qt.io/qt-4.8/qhostaddress.html#SpecialAddress-enum



Right now I'm thinking there might be a subtle bug in the way murmur is
setting the "AnyIPv6" address, perhaps in that section of code above.
Thanks for including the log output, because it helps verify the
warnings that aren't directly related to this bug.



After we get to understand the full behavior concerning host=0.0.0.0 vs
host=:: I'll need to report the results to the Ubuntu bug concerning
mumble-server startup with upstart, and discuss this issue with Mumble
upstream.

Thanks!

-- Chris

--
Chris Knadle
Chris....@coredump.us


Tuxicoman

unread,
Apr 13, 2015, 2:50:03 PM4/13/15
to
# systemctl status mumble-server
● mumble-server.service - Mumble VoIP server
Loaded: loaded (/lib/systemd/system/mumble-server.service; enabled)
Active: active (running) since lun 2015-04-13 20:32:21 CEST; 1min 28s
ago
Docs: man:murmurd(1)
file:///usr/share/doc/mumble-server/README
http://wiki.mumble.info/wiki/Running_Murmur
Process: 850 ExecStart=/usr/sbin/murmurd -ini /etc/mumble-server.ini
(code=exited, status=0/SUCCESS)
Process: 783 ExecStartPre=/usr/bin/install -o mumble-server -g adm
-d /var/run/mumble-server (code=exited, status=0/SUCCESS)
Main PID: 1360 (murmurd)
CGroup: /system.slice/mumble-server.service
└─1360 /usr/sbin/murmurd -ini /etc/mumble-server.ini


# cat /var/log/mumble-server/mumble-server.log
<W>2015-04-13 20:32:21.001 Initializing settings
from /etc/mumble-server.ini (basepath /etc)
<W>2015-04-13 20:32:21.002 Binding to address ::
<C>2015-04-13 20:32:21.004 Adding 1 CA certificates from certificate
file.
<W>2015-04-13 20:32:21.004 OpenSSL: OpenSSL 1.0.1k 8 Jan 2015
<C>2015-04-13 20:32:21.004 Successfully switched to uid 126
<W>2015-04-13 20:32:21.184 ServerDB: Opened SQLite
database /var/lib/mumble-server/mumble-server.sqlite
<W>2015-04-13 20:32:21.186 Resource limits were 0 0
<W>2015-04-13 20:32:21.186 Successfully dropped capabilities
<W>2015-04-13 20:32:21.203 Murmur 1.2.8 (1.2.8-2) running on X11: Debian
GNU/Linux 8.0 (jessie): Booting servers
<W>2015-04-13 20:32:21.245 1 => Server listening on [::]:64738
<W>2015-04-13 20:32:21.276 1 => Announcing server via bonjour
<W>2015-04-13 20:32:21.374 1 => Registration needs nonempty
'registername', 'registerpassword' and 'registerurl', must have an empty
'password' and allowed pings.
<W>2015-04-13 20:32:21.374 Object::connect: No such slot
MurmurDBus::userTextMessage(const User *, const TextMessage &)

# netstat -tpln
tcp6 0 0 :::64738 :::*
LISTEN 1360/murmurd

# ifconfig
eth0 Link encap:Ethernet HWaddr d8:60:c6:3a:a0:f1
inet adr:192.168.1.150 Bcast:192.168.1.255
Masque:255.255.255.0
adr inet6: fe80::da50:e6ff:fe3a:f0f7/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2873 errors:0 dropped:0 overruns:0 frame:0
TX packets:3262 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:726940 (709.9 KiB) TX bytes:2383246 (2.2 MiB)

Now it seems to listen to ipv6 ONLY. Other services like sshd have both
0.0.0.0:22 and :::22 services listening in netstat.

I have only an ipv4 network access so the host=0.0.0.0 is a better
solution for me right now.

Tuxicoman

unread,
Apr 13, 2015, 3:00:03 PM4/13/15
to
sorry, in fact, I can access it in ipv4.

Chris Knadle

unread,
Apr 13, 2015, 8:10:02 PM4/13/15
to
On 04/13/2015 02:49 PM, Tuxicoman wrote:
> sorry, in fact, I can access it in ipv4.

meaning if you use host=:: that you can access it in ipv4? Yes that's
expected.

The test I'm looking for results for is if host=:: has murmurd listen on
bootup correctly, but host= (i.e. nothing, or commented out) doesn't.

-- Chris

--
Chris Knadle
Chris....@coredump.us


Chris Knadle

unread,
Apr 13, 2015, 11:30:03 PM4/13/15
to
On 04/13/2015 02:43 PM, Tuxicoman wrote:
[...]
> # netstat -tpln
> tcp6 0 0 :::64738 :::* LISTEN 1360/murmurd

Good.

[...]
> Now it seems to listen to ipv6 ONLY. Other services like sshd have both
> 0.0.0.0:22 and :::22 services listening in netstat.
>
> I have only an ipv4 network access so the host=0.0.0.0 is a better
> solution for me right now.


On 04/13/2015 02:49 PM, Tuxicoman wrote:
> sorry, in fact, I can access it in ipv4.

Yeah I know this looks weird -- it /looks/ like it isn't listening on
ipv4, but it is.


I've reported this workaround to the Ubuntu Launchpad bug for the same
issue; hopefully this workaround works there too. (It should.) I've
also reported the issue to Mumble upstream. (#1629)

https://github.com/mumble-voip/mumble/issues/1629


Hopefully a study of the code path when setting host=:: vs host=
(i.e. empty) will reveal a reason why the empty setting is failing under
systemd and upstart. Probably some kind of race condition.

-- Chris

--
Chris Knadle
Chris....@coredump.us


0 new messages