Bug 1556888

Summary: relocation error: /usr/sbin/dnsmasq: symbol nettle_get_hashes, version NETTLE_6
Product: [Fedora] Fedora Reporter: Lukas Slebodnik <lslebodn>
Component: dnsmasqAssignee: Petr Menšík <pemensik>
Status: CLOSED DUPLICATE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 27CC: code, dougsland, itamar, jima, laine, marcelo.barbosa, mr.marcelo.barbosa, p, pemensik, thozza, veillard
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2018-03-15 15:00:03 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Lukas Slebodnik 2018-03-15 12:49:37 UTC
Description of problem:
libvirt uses dnsmasq by default and I noticed failures when starting dnsmasq.
There was a missing symbol from libnettle which is added in newer version of nettle. It would be good if you could add explicit requires to minimal version of nettle.

sh# journalctl -u libvirtd
-- Logs begin at Thu 2018-03-15 04:11:50 EDT, end at Thu 2018-03-15 08:12:36 EDT. --
Mar 15 04:17:05 host.example.com systemd[1]: Starting Virtualization daemon...
Mar 15 04:17:05 host.example.com systemd[1]: Started Virtualization daemon.
Mar 15 04:17:05 host.example.com libvirtd[7759]: 2018-03-15 08:17:05.770+0000: 7776: info : libvirt version: 3.7.0, package: 4.fc27 (Fedora Project, 2018-02-13-19:29:35, buildvm-27.phx2.fedoraproject.org)
Mar 15 04:17:05 host.example.com libvirtd[7759]: 2018-03-15 08:17:05.770+0000: 7776: info : hostname: host.example.com
Mar 15 04:17:05 host.example.com libvirtd[7759]: 2018-03-15 08:17:05.770+0000: 7776: error : virCommandWait:2583 : internal error: Child process (LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin /usr/sbin/dnsmasq --version) unexpected exit status 127: /usr/sbin/dnsmasq: relocation error: /usr/sbin/dnsmasq: symbol nettle_get_hashes, version NETTLE_6 not defined in file libnettle.so.6 with link time reference
Mar 15 04:17:05 host.example.com libvirtd[7759]: 2018-03-15 08:17:05.770+0000: 7776: error : dnsmasqCapsRefreshInternal:764 : failed to run '/usr/sbin/dnsmasq --version': : Success


Version-Release number of selected component (if applicable):
sh$ rpm -q nettle dnsmasq
nettle-3.3-5.fc27.x86_64
dnsmasq-2.78-6.fc27.x86_64

How reproducible:
Deterministic

Steps to Reproduce:
1. dnf install -y dnsmasq binutils
2. nm --dynamic --undefined-only /usr/sbin/dnsmasq | grep nettle_get_hashes
3. nm --dynamic --defined-only /usr/lib64/libnettle.so.6 | grep nettle_get_hashes
4. echo $?

Actual results:
sh-4.4# nm --dynamic --undefined-only /usr/sbin/dnsmasq | grep nettle_get_hashes
                 U nettle_get_hashes
sh-4.4# nm --dynamic --defined-only /usr/lib64/libnettle.so.6 | grep nettle_get_hashes
sh-4.4# echo $?
1


Expected results:
sh-4.4# nm --dynamic --undefined-only /usr/sbin/dnsmasq | grep nettle_get_hashes
                 U nettle_get_hashes
sh-4.4# nm --dynamic --defined-only /usr/lib64/libnettle.so.6 | grep nettle_get_hashes
0000000000018460 T nettle_get_hashes

Additional info:
It works well with nettle from updates-testing

sh-4.4# dnf update -e0 -d0 -y --enablerepo=updates-testing nettle
install-info: No such file or directory for /usr/share/info/nettle.info
sh-4.4# rpm -q nettle dnsmasq
nettle-3.4-1.fc27.x86_64
dnsmasq-2.78-6.fc27.x86_64
sh-4.4# nm --dynamic --undefined-only /usr/sbin/dnsmasq | grep nettle_get_hashes
                 U nettle_get_hashes
sh-4.4# nm --dynamic --defined-only /usr/lib64/libnettle.so.6 | grep nettle_get_hashes
0000000000018460 T nettle_get_hashes

Comment 1 Lukas Slebodnik 2018-03-15 14:03:54 UTC
Note: It is not required to enable updates-testing for installing nettle-3.4-1.fc27.x86_64. It is already in updates for quite a log. The issue is that Vm needn't be updated and installing dnsmasq will not update nettle due to missing requirement on new version.

Comment 2 Petr Menšík 2018-03-15 14:31:37 UTC
I think main problem here is that nettle changes its API, but did not change its soversion. This recompilation should be with different soversion, making automatic dependencies handle this problem. Dnsmasq does not have explicit dependency on nettle, I had no place to add version. I filled bug #1549190 for it.

But since it is already broken, I will add version dependency on it. I did not realize selective updates can be broken by it.

Comment 3 Petr Menšík 2018-03-15 15:00:03 UTC
I think this is exactly the same issue as bug #1548060, closing it as duplicate.

*** This bug has been marked as a duplicate of bug 1548060 ***