Public bug reported:

gRPC 1.3.2 (bionic) has two shared objects: libgrpc.so.3.0.0 and
libgrpc++.so.1.3.2, where the latter depends on the former, and both
contain many overlapping functions which results in crashes and other
unexpected behavior.

The simplest way to reproduce the crash is to build and run official
gRPC C++ example: https://grpc.io/docs/quickstart/cpp.html#build-the-
example

One particular example that triggers a crash would be
grpc_slice_intern() function that uses initialized global variable
g_shards in libgrpc's BSS section in the first invocation and
uninitialized (zeroed) g_shards variable in libgrpc++'s BSS section in
the second. This is due to "-Bsymbolic-functions" essentially creating
two "worlds" by preventing the code that calls these functions from
consulting the PLT and choosing only one "implementation".

This linkage issue was fixed in the newer gRPC versions. Compare these
two, for example:

* 1.3.x: 
https://github.com/grpc/grpc/blob/70ae8440a2441e8f3e95447a5d645e05bde35921/CMakeLists.txt#L2185-L2356
* 1.15.x: 
https://github.com/grpc/grpc/blob/1a60e6971f428323245a930031ad267bb3142ba4/CMakeLists.txt#L2744-L2787

I guess the likely fix would be to bump gRPC version or define
DEB_LDFLAGS_MAINT_STRIP variable as explained here: http://www.osdir.com
/ubuntu-developers/msg05619.html

** Affects: grpc (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1797000

Title:
  grpc library crashes due to -Wl,-Bsymbolic-functions

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/grpc/+bug/1797000/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to