group.of.nepali.translators team mailing list archive
-
group.of.nepali.translators team
-
Mailing list archive
-
Message #12518
[Bug 1634989] Re: Segfault on rabbitmq-server start
This bug was fixed in the package rabbitmq-server -
3.5.7-1ubuntu0.16.04.1
---------------
rabbitmq-server (3.5.7-1ubuntu0.16.04.1) xenial; urgency=medium
* debian/patches/0001-Remove-custom-stderr-formatting.patch: [PATCH]
Remove custom stderr formatting. Thanks to Alexey Lebedeff
<alebedev@xxxxxxxxxxxx>. Closes LP: #1634989.
-- Jon Grimm <jon.grimm@xxxxxxxxxxxxx> Tue, 28 Mar 2017 15:59:39 -0700
** Changed in: rabbitmq-server (Ubuntu Xenial)
Status: Fix Committed => Fix Released
--
You received this bug notification because you are a member of नेपाली
भाषा समायोजकहरुको समूह, which is subscribed to Xenial.
Matching subscriptions: Ubuntu 16.04 Bugs
https://bugs.launchpad.net/bugs/1634989
Title:
Segfault on rabbitmq-server start
Status in rabbitmq-server package in Ubuntu:
Fix Released
Status in rabbitmq-server source package in Xenial:
Fix Released
Status in rabbitmq-server source package in Yakkety:
Fix Released
Bug description:
[Impact]
* rabbitmq-server can segfault along codepath which happens to "open
a port with the same fd multiple times". Doing so is undefined (and
unsafe in erlang, though segfaulting is unintentinal).
* This only happens on specific versions of erlang, but the rabbitmq-
server code is agreeably incorrect per erlang and has been fixed
upstream.
* This only affects xenial & yakkety.
* The codepath belongs to an internal helper for writing to stderr,
this prevents useful diagnostic information from being provided to a
user.
[Test Case]
* Make sure your hostname resolves to something unreachable, I've
selected 192.168.2.2, install rabbitmq-server, witness segfault.
* # hostname blah
* # echo "192.168.2.22 blah" >> /etc/hosts
* # ping blah
PING blah (192.168.122.2) 56(84) bytes of data.
From x1 (192.168.122.90) icmp_seq=1 Destination Host Unreachable
* # apt install rabbitmq-server
...
Mar 22 22:12:41 blah systemd[1]: Starting RabbitMQ Messaging Server...
Mar 22 22:12:42 blah rabbitmq[17995]: Waiting for rabbit@blah ...
Mar 22 22:12:42 blah rabbitmq[17995]: pid is 18025 ...
Mar 22 22:12:45 blah systemd[1]: rabbitmq-server.service: Main process exited, code=exited, status=1/FAILURE
Mar 22 22:12:46 blah rabbitmq[17995]: Segmentation fault (core dumped)
...
* Expected behavior would be not to segfault, and consequently print
out a diagnostic message to stderr:
* # dpkg -i rabbitmq-server_3.5.7-1ubuntu16.04.1_all.deb
...
Mar 22 22:15:16 blah systemd[1]: Starting RabbitMQ Messaging Server...
Mar 22 22:15:16 blah rabbitmq[18365]: Waiting for rabbit@blah ...
Mar 22 22:15:16 blah rabbitmq[18365]: pid is 18386 ...
Mar 22 22:15:19 blah systemd[1]: rabbitmq-server.service: Main process exited, code=exited, status=1/FAILURE
Mar 22 22:15:20 blah rabbitmq[18365]: Error: process_not_running
...
* Note: This just happens to be one error path that happens to hit the format_stderr() helper function.
[Regression Potential]
* Limited to diagnostic messages path, so its really only seen when
something is configured incorrectly. That being said, any execution
through this path today will segfault and without any diagnostic
information to figure out what, so seems infinitely better.
* This fix from upstream has been in place over a year without any
issue, and was originally code that was working around buggy/flaking
erlang library that has (according to upstream reports) been fixed
since erlang 17, thus uneeded.
[Other Info]
* While the rabbitmq-server in trusty has this offending code, the version of erlang does not segfault. Additionally, the fix provided by upstream is not necessarily sufficient on erlang < 17 that is in trusty, so I have not fixed it there.
* Zesty if already fixed.
---Problem Description---
Starting rabbitmq-server triggers segfault.
The segfault happens when the host is not reachable, for instance, which breaks the installation of rabbitmq-server package.
It is comprehensible that an error must occur, but segfault should not be a default behaviour.
This has been tested on 16.04 and 16.10, archs ppc64el and x86_64
---uname output---
Linux vm1 4.8.0-22-generic #24-Ubuntu SMP Sat Oct 8 09:14:41 UTC 2016 ppc64le ppc64le ppc64le GNU/Linux
---Steps to Reproduce---
#Better reproducible on a machine with 1 cpu
root@yakkety:~# echo "192.168.1.1 blah" >> /etc/hosts
root@yakkety:~# hostname blah
root@yakkety:~# apt-get install rabbitmq-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
rabbitmq-server
0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
Need to get 0 B/4,251 kB of archives.
After this operation, 5,243 kB of additional disk space will be used.
Selecting previously unselected package rabbitmq-server.
(Reading database ... 63962 files and directories currently installed.)
Preparing to unpack .../rabbitmq-server_3.5.7-1_all.deb ...
Unpacking rabbitmq-server (3.5.7-1) ...
Processing triggers for ureadahead (0.100.0-19) ...
Setting up rabbitmq-server (3.5.7-1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service ? /lib/systemd/system/rabbitmq-server.service.
Job for rabbitmq-server.service failed because the control process exited with error code.
See "systemctl status rabbitmq-server.service" and "journalctl -xe" for details.
invoke-rc.d: initscript rabbitmq-server, action "start" failed.
? rabbitmq-server.service - RabbitMQ Messaging Server
Loaded: loaded (/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2016-10-19 11:13:46 EDT; 7ms ago
Process: 2818 ExecStartPost=/usr/lib/rabbitmq/bin/rabbitmq-server-wait (code=exited, status=139)
Process: 2817 ExecStart=/usr/sbin/rabbitmq-server (code=exited, status=1/FAILURE)
Main PID: 2817 (code=exited, status=1/FAILURE)
Oct 19 11:13:13 blah systemd[1]: Starting RabbitMQ Messaging Server...
Oct 19 11:13:13 blah rabbitmq[2818]: Waiting for rabbit@blah ...
Oct 19 11:13:13 blah rabbitmq[2818]: pid is 2826 ...
Oct 19 11:13:43 blah systemd[1]: rabbitmq-server.service: Main process exited, code=exited, status=1/FAILURE
Oct 19 11:13:46 blah rabbitmq[2818]: Segmentation fault
Oct 19 11:13:46 blah systemd[1]: rabbitmq-server.service: Control process exited, code=exited status=139
Oct 19 11:13:46 blah systemd[1]: Failed to start RabbitMQ Messaging Server.
Oct 19 11:13:46 blah systemd[1]: rabbitmq-server.service: Unit entered failed state.
Oct 19 11:13:46 blah systemd[1]: rabbitmq-server.service: Failed with result 'exit-code'.
dpkg: error processing package rabbitmq-server (--configure):
subprocess installed post-installation script returned error exit status 1
Processing triggers for systemd (231-9git1) ...
Processing triggers for man-db (2.7.5-1) ...
Processing triggers for ureadahead (0.100.0-19) ...
Errors were encountered while processing:
rabbitmq-server
E: Sub-process /usr/bin/dpkg returned an error code (1)
root@yakkety:~# dmesg -T
[Wed Oct 19 11:11:55 2016] async_10[2334]: unhandled signal 11 at 0000000000000000 nip 00000000206867bc lr 0000000020635648 code 30001
[Wed Oct 19 11:13:02 2016] random: crng init done
[Wed Oct 19 11:13:02 2016] systemd[1]: apt-daily.timer: Adding 3h 37min 32.381328s random time.
[Wed Oct 19 11:13:02 2016] systemd[1]: apt-daily.timer: Adding 11h 5min 8.314218s random time.
[Wed Oct 19 11:13:02 2016] systemd[1]: apt-daily.timer: Adding 11h 7min 37.045127s random time.
[Wed Oct 19 11:13:03 2016] systemd[1]: apt-daily.timer: Adding 8h 43min 50.771575s random time.
[Wed Oct 19 11:13:03 2016] systemd[1]: apt-daily.timer: Adding 2h 31min 33.179443s random time.
[Wed Oct 19 11:13:04 2016] systemd[1]: apt-daily.timer: Adding 4h 22min 42.585438s random time.
[Wed Oct 19 11:13:04 2016] systemd[1]: apt-daily.timer: Adding 36min 58.644429s random time.
[Wed Oct 19 11:13:04 2016] systemd[1]: apt-daily.timer: Adding 9h 16min 4.769857s random time.
[Wed Oct 19 11:13:12 2016] systemd[1]: apt-daily.timer: Adding 7h 48min 614.372ms random time.
[Wed Oct 19 11:13:12 2016] systemd[1]: apt-daily.timer: Adding 3h 13min 41.779132s random time.
[Wed Oct 19 11:13:12 2016] systemd[1]: apt-daily.timer: Adding 9h 39min 46.023823s random time.
[Wed Oct 19 11:13:45 2016] async_10[2912]: unhandled signal 11 at 0000000000000000 nip 000000004f0d67bc lr 000000004f085648 code 30001
[Wed Oct 19 11:13:45 2016] systemd[1]: apt-daily.timer: Adding 9h 5min 5.067674s random time.
Userspace tool common name: rabbitmq-server
The userspace tool has the following bit modes: 64
Userspace package: rabbitmq-server
I have just tested the patch in https://github.com/rabbitmq/rabbitmq-common/pull/54, which is present on v3.6.1 and prevents the segfault. The patch works and can be easily backported.
Thanks
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/rabbitmq-server/+bug/1634989/+subscriptions