Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.
Bug 2269811 - libarrow 15.0.1 seems to break ABI
Summary: libarrow 15.0.1 seems to break ABI
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: libarrow
Version: rawhide
Hardware: Unspecified
OS: Linux
unspecified
high
Target Milestone: ---
Assignee: Kaleb KEITHLEY
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks: 2261766
TreeView+ depends on / blocked
 
Reported: 2024-03-16 16:40 UTC by Orion Poplawski
Modified: 2024-03-22 03:02 UTC (History)
5 users (show)

Fixed In Version: libarrow-15.0.2-2.fc41
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2024-03-20 13:14:19 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Github apache arrow issues 40604 0 None open ABI break in patch release 15.0.1 2024-03-16 22:48:19 UTC

Description Orion Poplawski 2024-03-16 16:40:36 UTC
With the update to 15.0.1, vfrnav fails to build with:

/usr/bin/ld: /usr/lib64/libgdal.so: undefined reference to `arrow::KeyValueMetadata::Contains(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const'
/usr/bin/ld: /usr/lib64/libgdal.so: undefined reference to `arrow::KeyValueMetadata::Get(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const'

See https://koschei.fedoraproject.org/package/vfrnav

It has also broken many other builds:

https://koschei.fedoraproject.org/affected-by/libarrow?epoch1=0&version1=15.0.0&release1=3.fc41&epoch2=0&version2=15.0.1&release2=1.fc41&collection=f41

Reproducible: Always

Comment 1 Ben Beasley 2024-03-16 22:00:19 UTC
Looking just at the main library, it looks like upstream changed some string references to string_view without considering that this would break ABI:

$ fedabipkgdiff --from fc40 libarrow-15.0.1-1.fc41.x86_64.rpm 
Comparing the ABI of binaries between libarrow-15.0.0-2.fc40.x86_64.rpm and libarrow-15.0.1-1.fc41.x86_64.rpm:

================ changes of 'libarrow.so.1500.0.0'===============
  Functions changes summary: 6 Removed, 0 Changed (11 filtered out), 6 Added functions
  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable

  6 Removed functions:

    [D] 'method bool arrow::KeyValueMetadata::Contains(const std::string&) const'    {_ZNK5arrow16KeyValueMetadata8ContainsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE}
    [D] 'method arrow::Status arrow::KeyValueMetadata::Delete(const std::string&)'    {_ZN5arrow16KeyValueMetadata6DeleteERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE}
    [D] 'method int arrow::KeyValueMetadata::FindKey(const std::string&) const'    {_ZNK5arrow16KeyValueMetadata7FindKeyERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE}
    [D] 'method arrow::Result<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > arrow::KeyValueMetadata::Get(const std::string&) const'    {_ZNK5arrow16KeyValueMetadata3GetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE}
    [D] 'method arrow::Status arrow::KeyValueMetadata::Set(const std::string&, const std::string&)'    {_ZN5arrow16KeyValueMetadata3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_}
    [D] 'function arrow::Status arrow::compute::internal::FSBFilterExec(arrow::compute::KernelContext*, const arrow::compute::ExecSpan&, arrow::compute::ExecResult*)'    {_ZN5arrow7compute8internal13FSBFilterExecEPNS0_13KernelContextERKNS0_8ExecSpanEPNS0_10ExecResultE}

  6 Added functions:

    [A] 'method bool arrow::KeyValueMetadata::Contains(std::string_view) const'    {_ZNK5arrow16KeyValueMetadata8ContainsESt17basic_string_viewIcSt11char_traitsIcEE}
    [A] 'method arrow::Status arrow::KeyValueMetadata::Delete(std::string_view)'    {_ZN5arrow16KeyValueMetadata6DeleteESt17basic_string_viewIcSt11char_traitsIcEE}
    [A] 'method int arrow::KeyValueMetadata::FindKey(std::string_view) const'    {_ZNK5arrow16KeyValueMetadata7FindKeyESt17basic_string_viewIcSt11char_traitsIcEE}
    [A] 'method arrow::Result<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > arrow::KeyValueMetadata::Get(std::string_view) const'    {_ZNK5arrow16KeyValueMetadata3GetB5cxx11ESt17basic_string_viewIcSt11char_traitsIcEE}
    [A] 'method arrow::Status arrow::KeyValueMetadata::Set(std::string, std::string)'    {_ZN5arrow16KeyValueMetadata3SetENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_}
    [A] 'function arrow::Status arrow::compute::internal::PrimitiveTakeExec(arrow::compute::KernelContext*, const arrow::compute::ExecSpan&, arrow::compute::ExecResult*)'    {_ZN5arrow7compute8internal17PrimitiveTakeExecEPNS0_13KernelContextERKNS0_8ExecSpanEPNS0_10ExecResultE}

================ end of changes of 'libarrow.so.1500.0.0'===============

Most or all of this is due to https://github.com/apache/arrow/commit/91be098b56021b1f9569986b038bd46c3ed53701.

Comment 2 Ben Beasley 2024-03-16 22:48:19 UTC
I went ahead and reported this upstream in https://github.com/apache/arrow/issues/40604.

Comment 3 Ben Beasley 2024-03-19 17:51:28 UTC
This is now affecting F40 due to the update to 15.0.2 in https://bodhi.fedoraproject.org/updates/FEDORA-2024-e075b0f5cf and the buildroot override https://bodhi.fedoraproject.org/overrides/libarrow-15.0.2-1.fc40.

Comment 4 Fedora Update System 2024-03-20 13:10:41 UTC
FEDORA-2024-ab6fe10b51 (libarrow-15.0.2-2.fc41) has been submitted as an update to Fedora 41.
https://bodhi.fedoraproject.org/updates/FEDORA-2024-ab6fe10b51

Comment 5 Fedora Update System 2024-03-20 13:14:19 UTC
FEDORA-2024-ab6fe10b51 (libarrow-15.0.2-2.fc41) has been pushed to the Fedora 41 stable repository.
If problem still persists, please make note of it in this bug report.

Comment 6 nucleo 2024-03-20 13:49:54 UTC
digikam build failed with libarrow 15.0.2-2.fc41 https://koji.fedoraproject.org/koji/taskinfo?taskID=115205076

/usr/bin/ld: /usr/lib64/libgdal.so.34: undefined reference to `arrow::KeyValueMetadata::Get[abi:cxx11](std::basic_string_view<char, std::char_traits<char> >) const'
/usr/bin/ld: /usr/lib64/libgdal.so.34: undefined reference to `arrow::KeyValueMetadata::Contains(std::basic_string_view<char, std::char_traits<char> >) const'
collect2: error: ld returned 1 exit status

Comment 7 nucleo 2024-03-20 13:52:40 UTC
gdal-3.8.4-4.fc41 rebuilt with libarrow 15.0.1-1.fc41
https://koji.fedoraproject.org/koji/buildinfo?buildID=2422900

Comment 8 Ben Beasley 2024-03-20 13:58:49 UTC
Right, it looks like gdal was rebuilt due to the ABI break, and now needs to be re-rebuilt because reverting the ABI break is still an ABI break. There could be others.


Note You need to log in before you can comment on or make changes to this bug.