Skip to content

Fedora and Ubuntu builds are missing sigc::internal::signal_impl::unreference_exec() symbol #111

Open
@rathann

Description

@rathann

This bug was originally reported in Fedora, but I was asked to report it upstream by Fedora maintainer.

Description of problem:

Fedora 40 build of libsigc++20 is missing the sigc::internal::signal_impl::unreference_exec() symbol. This causes some third-party proprietary applications (like Horizon Client) to segfault because they refer to and expect that symbol to be present.

Version-Release number of selected component (if applicable):

libsigc++20-2.12.1-2.fc40.x86_64

How reproducible:

Always

Steps to Reproduce:

  1. Download Debian build from https://packages.debian.org/sid/amd64/libsigc++-2.0-0v5/download
  2. Extract the libsigc-2.0.so.0.0.0 shared library
  3. dnf install libsigc++20
  4. abidiff libsigc-2.0.so.0.0.0 /usr/lib64/libsigc-2.0.so.0.0.0 |c++filt

Actual results:

Functions changes summary: 0 Removed, 0 Changed, 0 Added function
Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
Function symbols changes summary: 1 Removed, 0 Added function symbol not referenced by debug info
Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info

1 Removed function symbol not referenced by debug info:

  [D] sigc::internal::signal_impl::unreference_exec()

Expected results:

No ABI difference.

Additional info:

This affects all Fedora releases, including rawhide. Ubuntu package (https://packages.ubuntu.com/noble/libsigc++-2.0-0v5) has the same issue. RHEL9 package libsigc++20-2.10.7-2.el9 has the same issue. Oddly, RHEL8's 2.10.0-6.el8 does have this symbol and a bunch of others, too.

I suspect compiler and/or linker issue. The compiler versions are as follows:

Distro GCC
Fedora 40, 41 and rawhide 14.2.1
Fedora 39 13.3.1
RHEL9 11.5.0
RHEL8 8.5.0
Ubuntu 24.04 14.2.0
Debian unstable (Sid) 14.2.0

There seem to be some differences in how Debian and Fedora build libsigc++20. Debian has this in their rules file:

export DEB_BUILD_MAINT_OPTIONS = hardening=+all
export DEB_LDFLAGS_MAINT_APPEND = -Wl,-O1 -Wl,-z,defs

%:
	dh $@ --buildsystem=meson --without autoreconf

override_dh_auto_configure:
	dh_auto_configure -- \
		-Dmaintainer-mode=true \
		-Dwarnings=max \
		-Dbuild-documentation=true

while Fedora simply does this:

%build
%meson -Dbuild-documentation=true
%meson_build

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions