Comments (8)
You must either compile gRPC with TSAN enabled or set preprocessor variable GRPC_TSAN_SUPPRESSED
. See also grpc/grpc#22325
from asio-grpc.
or set preprocessor variable GRPC_TSAN_SUPPRESSED
Where should I add this definition? I have added it to cmake preset but then I get
CMake Warning:
Manually-specified variables were not used by the project:
GRPC_TSAN_SUPPRESSED
Thanks.
from asio-grpc.
Preprocessor variable means to the compiler. E.g. gcc -DGRPC_TSAN_SUPPRESSED
or in CMake
target_compile_definitions(your_app PUBLIC GRPC_TSAN_SUPPRESSED)
from asio-grpc.
I was expecting the to be able to put this only in our tsan preset not in cmake files for all presets.
from asio-grpc.
By the way, target_compile_definitions is not working. Do you think something like this will be needed?
from asio-grpc.
You are free to elevate the compile definition into a CMake variable. In my code I have this for example:
option(USE_SANITIZER "Compiles with sanitizer flags." off)
target_compile_definitions(grpc-objects PUBLIC "$<$<BOOL:${USE_SANITIZER}>:GRPC_TSAN_SUPPRESSED>"
"$<$<BOOL:${USE_SANITIZER}>:GRPC_ASAN_SUPPRESSED>")
And then in CMakePresets.json:
"configurePresets": [
{
"name": "local",
"cacheVariables": {
"USE_SANITIZER": true,
You must compile that all that includes gRPC files with those definitions, this includes the generated gRPC sources. I cannot try it myself at the moment, but doing it this way has always worked for me (haven't tested it with recent gRPC versions though). If you continue to see issues then you might need to create an issue at gRPC. Note that asio-grpc, has nothing to do with the data race, as you can see in the (abbreviated) logs:
SUMMARY: data race in grpc_event_engine::experimental::Epoll1Poller::DoEpollWait
from asio-grpc.
I have put it on my preset like this
"cacheVariables": {
"CMAKE_CXX_FLAGS": "-fsanitize=thread -DGRPC_TSAN_SUPPRESSED"
}
and can see it being passed to the compilation of all sources. But I still have the warnings.
But thanks you for your help.
from asio-grpc.
I cannot reproduce the issue even without setting GRPC_TSAN_SUPPRESSED using
- gcc 13.1.1
- gRPC 1.15.1 (compiled in RelWithDebInfo)
- asio-grpc v2.6.0
- streaming-server.cpp from the examples (compiled in Debug/Release with -g and -fsanitize=thread)
from asio-grpc.
Related Issues (20)
- Lifetime issue in the docs HOT 2
- Example with small changes crashes HOT 6
- Why I get const correctness problems HOT 16
- Generic server example without manual buffer serializaiton? HOT 4
- Using asynchronous gRPC server and client on same context HOT 9
- How to detect client closed connection HOT 6
- Can I call ServerBuilder::BuildAndStart() after GrpcContext::run() HOT 2
- Questions on how to switch from an GrpcContext to io_context and back HOT 6
- How to shutdown grpc clients HOT 1
- Clarification Needed on Thread Context Switch in writer() Function (example streaming-server.cpp) HOT 8
- assertion failed: !started_ HOT 2
- Can I use asio-grpc inside an existing boost::asio application? HOT 7
- The agrpc::GrpcContext hangs forever HOT 13
- an upgrade from 2.5.1 to 2.9.1 leads to build errors HOT 6
- build fails with latest boost 1.84 HOT 4
- [Question]: Slowly receiveing client in long-lived streaming HOT 1
- InvokeHandler conflicts with Objective-C/C++ defines HOT 1
- Need some basic help! HOT 9
- How to make grPC Client to Establish connection based on IP address? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from asio-grpc.