Skip to content

[arrow] port missing mimalloc in ARROW_BUNDLED_STATIC_LIBS when mimalloc feature is enabled #50738

@marcin-krystianc

Description

@marcin-krystianc

Describe the bug
The 0007-use-vcpkg-mimalloc.patch in the arrow port replaces Arrow's vendored mimalloc build with a find_package(mimalloc) call, but does not add mimalloc::mimalloc to ARROW_BUNDLED_STATIC_LIBS. This causes unresolved mimalloc symbols when a consumer links against Arrow::arrow_static.

Environment

  • Linux x64

To Reproduce
Steps to reproduce the behavior:

  1. download: arrow23_mimalloc_linking.zip
  2. run ./build.sh

Expected behavior
Build succeeds (as it did for arrow v21.0.0#2)

Failure logs

All requested installations completed successfully in: 18 s
-- Running vcpkg install - done
-- The CXX compiler identification is GNU 13.3.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Found SnappyAlt: /workspace/tmp/issue_2/build/vcpkg_installed/x64-linux/debug/lib/libsnappy.a
-- Checking for modules 'libbrotlicommon;libbrotlienc;libbrotlidec'
--   Found libbrotlicommon, version 1.2.0
--   Found libbrotlienc, version 1.2.0
--   Found libbrotlidec, version 1.2.0
-- Found BrotliAlt: /workspace/tmp/issue_2/build/vcpkg_installed/x64-linux/debug/lib/libbrotlicommon.a
-- Found OpenSSL: /workspace/tmp/issue_2/build/vcpkg_installed/x64-linux/debug/lib/libcrypto.a (found version "3.6.1")
-- Found ZLIB: optimized;/workspace/tmp/issue_2/build/vcpkg_installed/x64-linux/lib/libz.a;debug;/workspace/tmp/issue_2/build/vcpkg_installed/x64-linux/debug/lib/libz.a (found version "1.3.1")
-- Found BZip2: optimized;/workspace/tmp/issue_2/build/vcpkg_installed/x64-linux/lib/libbz2.a;debug;/workspace/tmp/issue_2/build/vcpkg_installed/x64-linux/debug/lib/libbz2d.a (found version "1.0.8")
-- Looking for BZ2_bzCompressInit
-- Looking for BZ2_bzCompressInit - found
-- Arrow version: 23.0.0
-- Found the Arrow shared library:
-- Found the Arrow import library:
-- Found the Arrow static library: /workspace/tmp/issue_2/build/vcpkg_installed/x64-linux/lib/libarrow.a
-- Found thrift: /workspace/tmp/issue_2/build/vcpkg_installed/x64-linux
-- Found libevent: /workspace/tmp/issue_2/build/vcpkg_installed/x64-linux/lib/libevent.a
-- Parquet version: 23.0.0
-- Found the Parquet shared library:
-- Found the Parquet import library:
-- Found the Parquet static library: /workspace/tmp/issue_2/build/vcpkg_installed/x64-linux/lib/libparquet.a
-- Configuring done (208.9s)
-- Generating done (0.1s)
-- Build files have been written to: /workspace/tmp/issue_2/build
Change Dir: '/workspace/tmp/issue_2/build'

Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile
/usr/bin/cmake -S/workspace/tmp/issue_2 -B/workspace/tmp/issue_2/build --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start /workspace/tmp/issue_2/build/CMakeFiles /workspace/tmp/issue_2/build//CMakeFiles/progress.marks
/usr/bin/gmake  -f CMakeFiles/Makefile2 all
gmake[1]: Entering directory '/workspace/tmp/issue_2/build'
/usr/bin/gmake  -f CMakeFiles/mylib.dir/build.make CMakeFiles/mylib.dir/depend
gmake[2]: Entering directory '/workspace/tmp/issue_2/build'
cd /workspace/tmp/issue_2/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /workspace/tmp/issue_2 /workspace/tmp/issue_2 /workspace/tmp/issue_2/build /workspace/tmp/issue_2/build /workspace/tmp/issue_2/build/CMakeFiles/mylib.dir/DependInfo.cmake "--color="
gmake[2]: Leaving directory '/workspace/tmp/issue_2/build'
/usr/bin/gmake  -f CMakeFiles/mylib.dir/build.make CMakeFiles/mylib.dir/build
gmake[2]: Entering directory '/workspace/tmp/issue_2/build'
[ 50%] Building CXX object CMakeFiles/mylib.dir/mylib.cpp.o
/usr/bin/c++ -Dmylib_EXPORTS -isystem /workspace/tmp/issue_2/build/vcpkg_installed/x64-linux/include -isystem /workspace/tmp/issue_2/build/vcpkg_installed/x64-linux/debug/lib/pkgconfig/../../../include -g -std=gnu++20 -fPIC -MD -MT CMakeFiles/mylib.dir/mylib.cpp.o -MF CMakeFiles/mylib.dir/mylib.cpp.o.d -o CMakeFiles/mylib.dir/mylib.cpp.o -c /workspace/tmp/issue_2/mylib.cpp
[100%] Linking CXX shared library libmylib.so
/usr/bin/cmake -E cmake_link_script CMakeFiles/mylib.dir/link.txt --verbose=1
/usr/bin/c++ -fPIC -g -Wl,--no-undefined -shared -Wl,-soname,libmylib.so -o libmylib.so CMakeFiles/mylib.dir/mylib.cpp.o  vcpkg_installed/x64-linux/debug/lib/libparquet.a vcpkg_installed/x64-linux/debug/lib/libarrow.a vcpkg_installed/x64-linux/debug/lib/libbrotlienc.a vcpkg_installed/x64-linux/debug/lib/libbrotlidec.a vcpkg_installed/x64-linux/debug/lib/libbrotlicommon.a vcpkg_installed/x64-linux/debug/lib/libbz2d.a vcpkg_installed/x64-linux/debug/lib/liblz4d.a vcpkg_installed/x64-linux/debug/lib/libsnappy.a vcpkg_installed/x64-linux/debug/lib/libz.a vcpkg_installed/x64-linux/debug/lib/libzstd.a -lrt vcpkg_installed/x64-linux/debug/lib/libthriftd.a vcpkg_installed/x64-linux/debug/lib/libssl.a vcpkg_installed/x64-linux/debug/lib/libcrypto.a -ldl -lpthread
/usr/bin/ld: vcpkg_installed/x64-linux/debug/lib/libarrow.a(memory_pool.cc.o): in function `arrow::(anonymous namespace)::MimallocAllocator::AllocateAligned(long, long, unsigned char**)':
/workspace/tmp/issue_1/build/vcpkg/buildtrees/arrow/src/e-arrow-23-2cc4f57052.clean/cpp/src/arrow/memory_pool.cc:404:(.text+0x1c42): undefined reference to `mi_malloc_aligned'
/usr/bin/ld: vcpkg_installed/x64-linux/debug/lib/libarrow.a(memory_pool.cc.o): in function `arrow::(anonymous namespace)::MimallocAllocator::ReleaseUnused()':
/workspace/tmp/issue_1/build/vcpkg/buildtrees/arrow/src/e-arrow-23-2cc4f57052.clean/cpp/src/arrow/memory_pool.cc:411:(.text+0x1cac): undefined reference to `mi_collect'
/usr/bin/ld: vcpkg_installed/x64-linux/debug/lib/libarrow.a(memory_pool.cc.o): in function `arrow::(anonymous namespace)::MimallocAllocator::ReallocateAligned(long, long, long, unsigned char**)':
/workspace/tmp/issue_1/build/vcpkg/buildtrees/arrow/src/e-arrow-23-2cc4f57052.clean/cpp/src/arrow/memory_pool.cc:426:(.text+0x1dea): undefined reference to `mi_realloc_aligned'
/usr/bin/ld: vcpkg_installed/x64-linux/debug/lib/libarrow.a(memory_pool.cc.o): in function `arrow::(anonymous namespace)::MimallocAllocator::DeallocateAligned(unsigned char*, long, long)':
/workspace/tmp/issue_1/build/vcpkg/buildtrees/arrow/src/e-arrow-23-2cc4f57052.clean/cpp/src/arrow/memory_pool.cc:438:(.text+0x1f49): undefined reference to `mi_free'
/usr/bin/ld: vcpkg_installed/x64-linux/debug/lib/libarrow.a(memory_pool.cc.o): in function `arrow::(anonymous namespace)::MimallocAllocator::PrintStats()':
/workspace/tmp/issue_1/build/vcpkg/buildtrees/arrow/src/e-arrow-23-2cc4f57052.clean/cpp/src/arrow/memory_pool.cc:442:(.text+0x1fb2): undefined reference to `mi_stats_print_out'
collect2: error: ld returned 1 exit status
gmake[2]: *** [CMakeFiles/mylib.dir/build.make:113: libmylib.so] Error 1
gmake[2]: Leaving directory '/workspace/tmp/issue_2/build'
gmake[1]: *** [CMakeFiles/Makefile2:86: CMakeFiles/mylib.dir/all] Error 2
gmake[1]: Leaving directory '/workspace/tmp/issue_2/build'
gmake: *** [Makefile:94: all] Error 2

Additional context
Add any other context about the problem here.

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