We are using only seastar synchronization mechanisms, nothing from pthread or stl.
The main reason we wanted to enable tsan was that we do have intershard communication to carry some operations to one dedicated shard and business logic on others. We aware of seastar::foreign_ptr but as we recently discover we are not using it everywhere we should use it. And there may be other problems that we have not noticed yet. To detect these problems, we tried to use tsan. Do you think this could help? Maybe there is a better way to solve problems like this?
As for sacrifices, I'm sure it's possible to build seastar with tsan as a separate library and run tests against it in a separate CI pipeline. But this only makes sense if it brings at least some help.
We had some success with running seastar application with tsan - after modifying exception_hack.cpp and thread_impl.hh files. But tsan outputs a lot of messages even in simplest examples. I guess it detects false positives and that messages can be suppressed by using suppression files. It seems that integrating tsan correctly into seastar is quite a difficult task. And it is not entirely clear whether this will bring any useful results. What do you think about this?