Bug 282060

Summary: devel/protobuf-c: 1.4.1_6 breaks dig
Product: Ports & Packages Reporter: Niall.oReilly+freebsd
Component: Individual Port(s)Assignee: Don Lewis <truckman>
Status: New ---    
Severity: Affects Some People CC: Niall.oReilly+freebsd, edgar.wiesmann, nomad, pi, rcbell.N51, sr, stb
Priority: --- Flags: bugzilla: maintainer-feedback? (truckman)
Version: Latest   
Hardware: amd64   
OS: Any   

Description Niall.oReilly+freebsd 2024-10-13 16:38:55 UTC
After upgrading to protobuf-c 1.4.1_6, dig fails, apparently because version exposed by /usr/local/lib/libprotobuf-c.so.1 does not match what is required.

Observed after upgrade:

grab(maint)$ uname -a
FreeBSD grab.no8.be 14.1-RELEASE-p5 FreeBSD 14.1-RELEASE-p5 GENERIC amd64
grab(maint)$ pkg info protobuf-c | grep -i ^version
Version        : 1.4.1_6
grab(maint)$ dig -v
ld-elf.so.1: /usr/local/lib/libprotobuf-c.so.1: version LIBPROTOBUF_C_1.0.0 required by /usr/local/lib/bind-tools/libdns-9.20.2.so not defined
grab(maint)$ 


Observed on sibling system after reverting to 1.4.1_5:

rock(maint)$ uname -a
FreeBSD rock.no8.be 14.1-RELEASE-p5 FreeBSD 14.1-RELEASE-p5 GENERIC amd64
rock(maint)$ pkg info protobuf-c | grep -i ^version
Version        : 1.4.1_5
rock(maint)$ dig -v
DiG 9.20.2
rock(maint)$
Comment 1 Niall.oReilly+freebsd 2024-10-13 16:41:31 UTC
I have no idea whether this affects many people, some, or only me.
I have also no idea whether this presents on hardware other than amd64.
Comment 2 nomad 2024-10-14 05:04:22 UTC
This bug also impacts the bind-918 package, any I'm guessing any other package with a dependency on protobuf-c.

broken host:
: || nomad@armoury ~ [87] ; sudo /usr/local/etc/rc.d/named start
ld-elf.so.1: /usr/local/lib/libprotobuf-c.so.1: version LIBPROTOBUF_C_1.0.0 required by /usr/local/lib/libdns-9.18.30.so not defined
/usr/local/etc/rc.d/named: ERROR: named-checkconf for /usr/local/etc/namedb/named.conf failed
>> sudo: 3
: || nomad@armoury ~ [88] ; strings /usr/local/lib/libprotobuf-c.so.1.0.0 | grep LIBPROTOBUF_C
>> strings: 1
: || nomad@armoury ~ [89] ; pkg info protobuf-c | grep -i ^version
Version        : 1.4.1_6


working host:
: || nomad@castle ~ [156] ; strings /usr/local/lib/libprotobuf-c.so.1.0.0 | grep LIBPROTOBUF_C
LIBPROTOBUF_C_1.0.0
LIBPROTOBUF_C_1.3.0
: || nomad@castle ~ [157] ; pkg info protobuf-c | grep -i ^version
Version        : 1.4.1_2

IMHO, This makes fixing the package kind of urgent since nameservice is a fairly critical service.
Comment 3 Edgar Wiesmann 2024-10-14 12:54:37 UTC
Here with us reinstalling bind-tools-9.20.2 fixed the problem:

# pkg install -f -y bind-tools-9.20.2
Comment 4 Steve Rikli 2024-10-14 13:30:11 UTC
I can confirm this protobuf[-c] pkg upgrade affects both bind and bind-tools, on i386 as well as amd64.

$ sudo pkg upgrade -y
...
Installed packages to be UPGRADED:
...
        protobuf: 28.1,1 -> 28.2,1
        protobuf-c: 1.4.1_5 -> 1.4.1_6


$ /usr/local/bin/dig -v
ld-elf.so.1: /usr/local/lib/libprotobuf-c.so.1: version LIBPROTOBUF_C_1.0.0 required by /usr/local/lib/bind-tools/libdns-9.20.2.so not defined

$ /usr/local/sbin/named -v
ld-elf.so.1: /usr/local/lib/libprotobuf-c.so.1: version LIBPROTOBUF_C_1.0.0 required by /usr/local/sbin/named not defined

$ uname -a
FreeBSD raptor.home.genyosha.net 14.1-STABLE FreeBSD 14.1-STABLE stable/14-n268238-4f5440f2abe9 GENERIC i386

I can likewise confirm that re-installing bind[-tools] resolves the issue:

$ sudo pkg install -f bind918
...
$ /usr/local/sbin/named -v
BIND 9.18.30 (Extended Support Version) <id:>

I don't quite understand why that works, but I'm glad it does. I ran into this on amd64 servers a couple days ago before Niall's report, tried re-installing first since it was simple and quick, and was pleasantly surprised to have working bind918 again.

Perhaps bind and bind-tools should be marked for re-install when protobuf[-c] pkgs are upgraded?
Comment 5 nomad 2024-10-14 20:15:50 UTC
Confirmed, reinstall worked for me as well.

: || nomad@armoury ~ [90] ; please pkg install -f -y bind-tools bind918
Password:
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
The following 2 package(s) will be affected (of 0 checked):

Installed packages to be REINSTALLED:
	bind-tools-9.20.2
	bind918-9.18.30

Number of packages to be reinstalled: 2

7 MiB to be downloaded.
[1/1] Fetching bind918-9.18.30.pkg: 100%    7 MiB   7.2MB/s    00:01    
Checking integrity... done (0 conflicting)
[1/2] Reinstalling bind-tools-9.20.2...
[1/2] Extracting bind-tools-9.20.2: 100%
[2/2] Reinstalling bind918-9.18.30...
[2/2] Extracting bind918-9.18.30: 100%
You may need to manually remove /usr/local/etc/namedb/named.conf if it is no longer needed.
: || nomad@armoury ~ [91] ; please /usr/local/etc/rc.d/named start
Starting named.
: || nomad@armoury ~ [92] ; ps ax | grep name
4026  -  Ss      0:00.34 /usr/local/sbin/named -u bind -c /usr/local/etc/namedb/named.conf
4028  0  S+      0:00.00 grep name
Comment 6 Stefan Bethke 2024-11-23 08:16:07 UTC
Reinstall of bind918 did not fix it for me. I'm continuing to investigate.
Comment 7 Stefan Bethke 2024-11-23 08:20:26 UTC
(In reply to Stefan Bethke from comment #6)
Removing protobuf-28.3,1 (and dependencies) and then installing bind918-9.18.30 did the trick for me. This pulled in:

New packages to be INSTALLED:
	bind-tools: 9.20.2 [zs64]
	bind918: 9.18.30 [zs64]
	protobuf: 28.3,1 [zs64]
	protobuf-c: 1.4.1_7 [zs64]

So there shouldn't have been any change?