Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Missing symbol in frr-10 for CentOS 7 #15894

Open
2 tasks done
keeperofdakeys opened this issue May 1, 2024 · 1 comment
Open
2 tasks done

Missing symbol in frr-10 for CentOS 7 #15894

keeperofdakeys opened this issue May 1, 2024 · 1 comment
Labels
triage Needs further investigation

Comments

@keeperofdakeys
Copy link

Description

Libyang missing symbol needed for FRR, leading it to crash on CentOS 7. Frr depends on libyang1/libyang2 which don't have the symbol, but the libyang package (also from FRR repo) does have this symbol.

Perhaps the spec file should be updated to depend on the libyang package instead? Or the version of libyang2 should be bumped?

When installing the frr-10.0-01.el7.x86_64 RPM on CentOS 7, it crashes with the following error:

Failed to start mgmtd!
/usr/lib/frr/bgpd: symbol lookup error: /usr/lib64/libfrr.so.0: undefined symbol: ly_temp_log_options
Failed to start bgpd!
/usr/lib/frr/staticd: symbol lookup error: /usr/lib64/libfrr.so.0: undefined symbol: ly_temp_log_option
Failed to start staticd!
/etc/frr/frr.conf does not exist; skipping config apply

The frr package depends on libyang1 and libyang2 (packages libyang1-1.0.184-0.x86_64 and libyang2-2.0.7-1.el7.x86_64), which appear to be missing the symbol "ly_temp_log_options".

# nm -gD /usr/lib64/libyang.so.1 | grep log_options
000000000000f190 T ly_log_options
# nm -gD /usr/lib64/libyang.so.2 | grep log_options
000000000000da00 T ly_log_options

When forcefully removing libyang1 and libyang2 and installing libyang (libyang-2.1.128-1.el7.x86_64), FRR works correctly and the missing symbol exists.

# nm -gD /usr/lib64/libyang.so.2.41.0 | grep log_options
000000000000f300 T ly_log_options
000000000000f310 T ly_temp_log_options

Version

FRRouting 10.0 (...) on Linux(3.10.0-1160.108.1.el7.x86_64).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
configured with:
    '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--program-prefix=' '--disable-dependency-tracking' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--sharedstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--sbindir=/usr/lib/frr' '--sysconfdir=/etc' '--localstatedir=/var' '--disable-static' '--disable-werror' '--enable-multipath=256' '--enable-vtysh' '--enable-ospfclient' '--enable-ospfapi' '--enable-rtadv' '--enable-ldpd' '--enable-pimd' '--enable-pim6d' '--enable-pbrd' '--enable-nhrpd' '--enable-eigrpd' '--enable-babeld' '--enable-vrrpd' '--enable-user=frr' '--enable-group=frr' '--enable-vty-group=frrvty' '--enable-fpm' '--enable-watchfrr' '--disable-bgp-vnc' '--enable-isisd' '--enable-rpki' '--enable-bfdd' '--enable-pathd' '--enable-snmp' 'build_alias=x86_64-redhat-linux-gnu' 'host_alias=x86_64-redhat-linux-gnu' 'PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig'

How to reproduce

Install frr-10 package on centos 7 and attempt to run.

Expected behavior

Program should run.

Actual behavior

Some daemons fail with missing symbol error.

/usr/lib/frr/bgpd: symbol lookup error: /usr/lib64/libfrr.so.0: undefined symbol: ly_temp_log_options
Failed to start bgpd!

Additional context

No response

Checklist

  • I have searched the open issues for this bug.
  • I have not included sensitive information in this report.
@keeperofdakeys keeperofdakeys added the triage Needs further investigation label May 1, 2024
@keeperofdakeys
Copy link
Author

After some testing this issue appears to only affect older installations. The frr rpm depends on libyang.so.2()(64bit), which is provided by both libyang2 and libyang. So new installs will get the correct libyang package.

On systems with an older installation they may incorrectly keep using libyang2 if it was already in use. At least for older systems force installing libyang over libyang1/2 will fix this until an upstream fix is made.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
triage Needs further investigation
Projects
None yet
Development

No branches or pull requests

1 participant