grpc: grpc-ruby 1.42.0 fails with dyld[]: missing symbol called
What version of gRPC and what language are you using?
grpc - 1.42.0 language - ruby
What operating system (Linux, Windows,…) and version?
MacOS - 12.0.1 MacBook Pro (16-inch, 2019) Processor 2.6 GHz 6-Core Intel Core i7
What runtime / compiler are you using (e.g. python version or version of gcc)
Ruby - 2.7.0, 3.0.0, 3.0.3
What did you do?
Run acceptance for the spanner ruby client library. https://github.com/googleapis/google-cloud-ruby/tree/main/google-cloud-spanner
# some random test project and key, just so that test starts
export SPANNER_TEST_PROJECT="test"
export SPANNER_TEST_KEYFILE=~/test.json
bundle exec rake acceptance
What did you expect to see?
All test runs fine without any crash by GRPC
What did you see instead?
Fails while making an rpc call. The same works fine when we downgrade to 1.41.1.
D1203 18:48:33.343635000 4538004992 ev_posix.cc:172] Using polling engine: poll
D1203 18:48:33.343708000 4538004992 lb_policy_registry.cc:42] registering LB policy factory for "grpclb"
D1203 18:48:33.343717000 4538004992 lb_policy_registry.cc:42] registering LB policy factory for "priority_experimental"
D1203 18:48:33.343724000 4538004992 lb_policy_registry.cc:42] registering LB policy factory for "weighted_target_experimental"
D1203 18:48:33.343730000 4538004992 lb_policy_registry.cc:42] registering LB policy factory for "pick_first"
D1203 18:48:33.343734000 4538004992 lb_policy_registry.cc:42] registering LB policy factory for "round_robin"
D1203 18:48:33.343740000 4538004992 lb_policy_registry.cc:42] registering LB policy factory for "ring_hash_experimental"
D1203 18:48:33.343746000 4538004992 dns_resolver_ares.cc:495] Using ares dns resolver
D1203 18:48:33.343784000 4538004992 certificate_provider_registry.cc:33] registering certificate provider factory for "file_watcher"
D1203 18:48:33.343789000 4538004992 lb_policy_registry.cc:42] registering LB policy factory for "cds_experimental"
D1203 18:48:33.343795000 4538004992 lb_policy_registry.cc:42] registering LB policy factory for "xds_cluster_impl_experimental"
D1203 18:48:33.343803000 4538004992 lb_policy_registry.cc:42] registering LB policy factory for "xds_cluster_resolver_experimental"
D1203 18:48:33.343808000 4538004992 lb_policy_registry.cc:42] registering LB policy factory for "xds_cluster_manager_experimental"
D1203 18:48:33.343882000 4538004992 rb_grpc.c:291] GRPC_RUBY: grpc_ruby_init - prev g_grpc_ruby_init_count:0
D1203 18:48:33.343906000 4538004992 rb_grpc.c:291] GRPC_RUBY: grpc_ruby_init - prev g_grpc_ruby_init_count:1
D1203 18:48:33.343916000 4538004992 rb_grpc.c:291] GRPC_RUBY: grpc_ruby_init - prev g_grpc_ruby_init_count:2
D1203 18:48:33.343922000 4538004992 rb_grpc.c:291] GRPC_RUBY: grpc_ruby_init - prev g_grpc_ruby_init_count:3
D1203 18:48:33.343931000 4538004992 rb_channel.c:708] GRPC_RUBY: wait for channel polling thread to start
D1203 18:48:33.343940000 123145478193152 rb_grpc.c:291] GRPC_RUBY: grpc_ruby_init - prev g_grpc_ruby_init_count:4
D1203 18:48:33.343968000 123145481912320 rb_channel.c:697] GRPC_RUBY: run_poll_channels_loop - create connection polling thread
D1203 18:48:33.343977000 123145481912320 rb_grpc.c:291] GRPC_RUBY: grpc_ruby_init - prev g_grpc_ruby_init_count:5
D1203 18:48:33.343982000 123145481912320 rb_channel.c:621] GRPC_RUBY: run_poll_channels_loop_no_gil - begin
dyld[60801]: missing symbol called
rake aborted!
SignalException: SIGABRT
About this issue
- Original URL
- State: closed
- Created 3 years ago
- Reactions: 10
- Comments: 28 (14 by maintainers)
Commits related to this issue
- test: reproduce compiler-rt missing symbols issue See https://github.com/grpc/grpc/issues/28271 — committed to flavorjones/rake-compiler-dock by flavorjones 3 years ago
- test: reproduce issues with missing compiler-rt symbols See https://github.com/grpc/grpc/issues/28271 — committed to flavorjones/rake-compiler-dock by flavorjones 3 years ago
- test: reproduce issues with missing compiler-rt symbols See https://github.com/grpc/grpc/issues/28271 — committed to flavorjones/rake-compiler-dock by flavorjones 3 years ago
- test: reproduce issues with missing compiler-rt symbols See https://github.com/grpc/grpc/issues/28271 — committed to flavorjones/rake-compiler-dock by flavorjones 3 years ago
@brodock’s suggestion did not work for me. Instead, what did the trick for me was adding this into my
Gemfile
:Considerations:
ruby -e 'puts Gem::Platform.local'
returnsx86_64-darwin-20
for meto anyone who needs to get
grpc
working on their development machines, you can temporarily set bundlerplatform
toruby
which ignores any OS specific pre-built binary and rebuild directly from source:Just for anyone else who is looking for a (temporary) solve, downgrading
grcp
to1.41.1
in my gemfile fixed my issue. I was trying to use thegoogle-cloud-firestore
gem and it was failing due to the error listed in this issue.OK, that seems to narrow things down to the new x86_64 package build from https://github.com/grpc/grpc/pull/25794.
cc @flavorjones
@apolcyn see https://github.com/rake-compiler/rake-compiler-dock/pull/60 for upstream progress.
If you’d like to cherry-pick the fix, here it is: https://github.com/rake-compiler/rake-compiler-dock/pull/60/commits/655f8acae058ac7a17b6b550f7b1bb15f1da0c9d
A good explanation of what’s happening is in this series of blog posts:
And some prior instances of this exact problem (cross-compiling via osxcross):
It doesn’t look like the rake-compiler-dock installation of osxcross has the compiler-rt libraries installed. I’m going to explore doing that next.
(and can confirm downgrading to 1.41 fixes it)