question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

grpc compile error on RHEL 7: TCP_USER_TIMEOUT

See original GitHub issue

Description of the problem / feature request:

Similar to #7890 I am having a problem building Bazel on RHEL 7.1 ppc64le. I looked at the headers on the system and TCP_USER_TIMEOUT is not present in tcp.h even though the glibc version is 2.17. I downloaded the sources from http://ftp.gnu.org/gnu/glibc/ and it looks like the symbol wasn’t defined until 2.18 actually.

I changed that __GLIBC_PREREQ check to 2.18 and then Bazel builds successfully but I’m not sure if that’s the correct solution so I wanted to open this issue to see if there is some else going on and that 2.17 is actually the right value.

Bugs: what’s the simplest, easiest way to reproduce this bug? Please provide a minimal example if possible.

bazel build  --host_javabase=@local_jdk//:jdk         --java_toolchain=@bazel_tools//tools/jdk:toolchain_hostjdk8         --host_java_toolchain=@bazel_tools//tools/jdk:toolchain_hostjdk8     //src:bazel
...
ERROR: /home/geoff.mishkin/bazel/third_party/grpc/BUILD:560:1: C++ compilation of rule '//third_party/grpc:grpc_base_c' failed (Exit 1) gcc failed: error executing command /usr/bin/gcc -U_FORTIFY_SOURCE -fstack-protector -Wall -Wunused-but-set-parameter -Wno-free-nonheap-object -fno-omit-frame-pointer '-std=c++0x' -MD -MF ... (remaining 37 argument(s) skipped)

Use --sandbox_debug to see verbose messages from the sandbox
third_party/grpc/src/core/lib/iomgr/socket_utils_common_posix.cc: In function 'grpc_error* grpc_set_socket_tcp_user_timeout(int, const grpc_channel_args*, bool)':
third_party/grpc/src/core/lib/iomgr/socket_utils_common_posix.cc:301:42: error: 'TCP_USER_TIMEOUT' was not declared in this scope
     if (0 != setsockopt(fd, IPPROTO_TCP, TCP_USER_TIMEOUT, &timeout,
                                          ^
third_party/grpc/src/core/lib/iomgr/socket_utils_common_posix.cc:306:42: error: 'TCP_USER_TIMEOUT' was not declared in this scope
     if (0 != getsockopt(fd, IPPROTO_TCP, TCP_USER_TIMEOUT, &newval, &len)) {
                                          ^
Target //src:bazel failed to build
Use --verbose_failures to see the command lines of failed build steps.
INFO: Elapsed time: 2302.831s, Critical Path: 1281.57s
INFO: 1439 processes: 1 local, 1317 processwrapper-sandbox, 121 worker.
FAILED: Build did NOT complete successfully

What operating system are you running Bazel on?

RHEL 7.1 on PowerPC

What’s the output of bazel info release?

release 0.23.2- (@non-git)

If bazel info release returns “development version” or “(@non-git)”, tell us how you built Bazel.

Bootstrapped on the same machine.

Have you found anything relevant by searching the web?

Found #7890 found glibc sources indicating that TCP_USER_TIMEOUT was not added til 2.18.

Issue Analytics

  • State:closed
  • Created 4 years ago
  • Comments:5 (3 by maintainers)

github_iconTop GitHub Comments

1reaction
emidlncommented, Jun 18, 2019

This was fixed by an update to grpc. In the meantime, you can hack grpc like this prior to bazel build:

# Patch bazel's grpc to work on pre-glibc-2.17
sed -i'' 's|<netinet/tcp.h>|<linux/tcp.h>|' third_party/grpc/src/core/lib/iomgr/socket_utils_common_posix.cc
0reactions
katrecommented, May 13, 2020

Closed for lack of activity. Please ping the reviewers to reopen if this is still a problem.

Read more comments on GitHub >

github_iconTop Results From Across the Web

TCP and gRPC Failed Connection Timeouts (evanjones.ca)
gRPC Go: If the connection drops after sending a request, it will fail after TCP gives up retrying the request, which is about...
Read more >
grpc tests compile error · Issue #10073 · FRRouting/frr - GitHub
I've tried to build the released 8.1 version in Fedora and I got the following error: /usr/bin/ld: grpc/.libs/libfrrgrpc_pb.so: undefined ...
Read more >
Quick start | C++ - gRPC
This guide gets you started with gRPC in C++ with a simple working example. Contents. Build and locally install gRPC and Protocol Buffers....
Read more >
C++ gRPC TCP error Protocol not available - Stack Overflow
I successfully compiled the grpc example helloworld, but when I run the following error appears(then the server starts anyway):
Read more >
Deadlines, lies and videotape: The tale of a gRPC bug
In order to address this issue, the gRPC introduced the following proposal: TCP user timeout. This proposal would simply take advantage of the ......
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found