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

Build failure (Undefined symbols "InternalMetadata::~InternalMetadata()" ) with latest protobuf #2029

Closed
yingsu00 opened this issue Jul 17, 2022 · 4 comments
Labels
bug Something isn't working

Comments

@yingsu00
Copy link
Collaborator

make debug fails with "Undefined symbols" error. This happens on the latest protobuf.

protobuf is installed as a dependency by scripts/setup-macos.sh:

+ for pkg in '${MACOS_DEPS}'
+ [[ protobuf =~ ^([0-9a-z-]*):([0-9](\.[0-9])*)$ ]]
+ brew install --formula protobuf
==> Downloading https://ghcr.io/v2/homebrew/core/protobuf/manifests/21.2
Already downloaded: /Users/yingsu/Library/Caches/Homebrew/downloads/16a917a6c1f6597097f7faa945dae0ad04add35239d163eeb4d48650f16a0ae5--protobuf-21.2.bottle_manifest.json
==> Downloading https://ghcr.io/v2/homebrew/core/protobuf/blobs/sha256:c1731ca98919d87f8598ef295f36f9b1455e50fa9a7b3e8a56917c4331798f93
Already downloaded: /Users/yingsu/Library/Caches/Homebrew/downloads/4fbb39b4313b49ae6a6f44932dcb04fca757778f606896e6485ae580cd612853--protobuf--21.2.big_sur.bottle.tar.gz
==> Pouring protobuf--21.2.big_sur.bottle.tar.gz
==> Caveats
Emacs Lisp files have been installed to:
  /usr/local/share/emacs/site-lisp/protobuf
==> Summary
🍺  /usr/local/Cellar/protobuf/21.2: 279 files, 19.1MB
==> Running `brew cleanup protobuf`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
+ echo 'Installation of protobuf is successful'
Installation of protobuf is successful

Then run make (successful), but make debug throws the following error:

-- Found Protobuf: /Users/distiller/deps/lib/libprotobuf.dylib (found suitable version "3.21.2", minimum required is "3.0.0") 
...
...
FAILED: velox/dwio/dwrf/utils/test/velox_dwio_dwrf_utils_test 
: && /Applications/Xcode-11.7.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -mavx2 -mfma -mavx -mf16c -mlzcnt -std=c++17 -D USE_VELOX_COMMON_BASE -D HAS_UNCAUGHT_EXCEPTIONS -Werror -Wall -Wextra -Wno-unused        -Wno-unused-parameter        -Wno-sign-compare        -Wno-ignored-qualifiers        -Wno-nullability-completeness        -Wno-range-loop-analysis -Wno-mismatched-tags -g -isysroot /Applications/Xcode-11.7.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names -Wl,-flat_namespace velox/dwio/dwrf/utils/test/CMakeFiles/velox_dwio_dwrf_utils_test.dir/ProtoUtilsTests.cpp.o velox/dwio/dwrf/utils/test/CMakeFiles/velox_dwio_dwrf_utils_test.dir/BitIteratorTests.cpp.o -o velox/dwio/dwrf/utils/test/velox_dwio_dwrf_utils_test -L/usr/local/opt/icu4c/include/../lib -Wl,-rpath,/usr/local/opt/icu4c/include/../lib -Wl,-rpath,/Users/distiller/deps/lib  velox/dwio/common/libvelox_dwio_common.a  velox/dwio/dwrf/utils/libvelox_dwio_dwrf_utils.a  velox/dwio/common/exception/libvelox_dwio_common_exception.a  velox/dwio/type/libvelox_dwio_type_fbhive.a  lib/libgtestd.a  lib/libgtest_maind.a  /Users/distiller/deps/lib/libglog.dylib  velox/dwio/dwrf/proto/libvelox_dwio_dwrf_proto.a  /Users/distiller/deps/lib/libprotobuf.dylib  velox/type/libvelox_type.a  velox/type/tz/libvelox_type_tz.a  velox/common/encode/libvelox_encode.a  velox/common/serialization/libvelox_serialization.a  velox/external/date/libvelox_external_date.a  velox/dwio/common/libvelox_dwio_common.a  velox/buffer/libvelox_buffer.a  velox/common/base/libvelox_common_base.a  velox/common/caching/libvelox_caching.a  velox/common/file/libvelox_file.a  velox/common/time/libvelox_time.a  velox/dwio/common/encryption/libvelox_dwio_common_encryption.a  velox/dwio/common/compression/libvelox_dwio_common_compression.a  velox/common/memory/libvelox_memory.a  velox/common/base/libvelox_exception.a  velox/common/process/libvelox_process.a  /Users/distiller/deps/lib/libglog.dylib  /Users/distiller/deps/lib/libfmt.a  /Users/distiller/deps/lib/libgflags.2.2.2.dylib  /Users/distiller/deps/lib/libfolly.a  /Users/distiller/deps/lib/libgflags.2.2.2.dylib  /Users/distiller/deps/lib/libboost_regex-mt.dylib  /Users/distiller/deps/lib/libfmt.a  /Users/distiller/deps/lib/libdouble-conversion.a  /Users/distiller/deps/lib/libglog.dylib  /Applications/Xcode-11.7.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/lib/libz.tbd  /Users/distiller/deps/opt/[email protected]/lib/libssl.dylib  /Users/distiller/deps/opt/[email protected]/lib/libcrypto.dylib  /Users/distiller/deps/lib/liblz4.dylib  /Users/distiller/deps/lib/libzstd.dylib  -lc++abi  /Users/distiller/deps/lib/libboost_context-mt.dylib  /Users/distiller/deps/lib/libboost_filesystem-mt.dylib  /Users/distiller/deps/lib/libboost_atomic-mt.dylib  /Users/distiller/deps/lib/libboost_program_options-mt.dylib  /Users/distiller/deps/lib/libboost_system-mt.dylib  /Users/distiller/deps/lib/libboost_thread-mt.dylib  /Users/distiller/deps/lib/libevent.dylib  /Users/distiller/deps/lib/libsnappy.dylib  /Applications/Xcode-11.7.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/lib/libbz2.tbd  lib/libgtestd.a && :
Undefined symbols for architecture x86_64:
  "google::protobuf::internal::InternalMetadata::~InternalMetadata()", referenced from:
      google::protobuf::MessageLite::~MessageLite() in libvelox_dwio_dwrf_proto.a(dwrf_proto.pb.cc.o)
ld: symbol(s) not found for architecture x86_64

Please see examples at #2027 and #2026

The temp workaround is to add add_definitions(-DNDEBUG) in CMakeLists.txt

@yingsu00
Copy link
Collaborator Author

cc @mbasmanova @pedroerp

@kevinwilfong
Copy link
Contributor

kevinwilfong commented Jul 18, 2022

This seems to be a known and accepted issue with protobuf
protocolbuffers/protobuf#9947

Unless there's one available to brew, I think we'll need to build a debug version of the protobuf library to link against.

@kevinwilfong
Copy link
Contributor

I think #2042 will fix this

@Yuhta Yuhta added the bug Something isn't working label Jul 20, 2022
@kevinwilfong
Copy link
Contributor

With the latest release of Protobuf this issue is fixed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants