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

Summary: libarrow 15.0.1 seems to break ABI
Product: [Fedora] Fedora Reporter: Orion Poplawski <orion>
Component: libarrowAssignee: Kaleb KEITHLEY <kkeithle>
Status: CLOSED ERRATA QA Contact:
Severity: high Docs Contact:
Priority: unspecified    
Version: rawhideCC: alekcejk, benson_muite, code, kkeithle, neil
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Linux   
Whiteboard:
Fixed In Version: libarrow-15.0.2-2.fc41 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2024-03-20 13:14:19 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 2261766    

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.