<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/96786>96786</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Replace pipe with internal_pipe in compiler-rt sanitizer common
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          Lancern
      </td>
    </tr>
</table>

<pre>
    Here in `compiler-rt` sanitizer common code:

https://github.com/llvm/llvm-project/blob/586114510c5fa71d1377c7f53e68a3b12c472aa2/compiler-rt/lib/sanitizer_common/sanitizer_posix_libcdep.cpp#L291-L310

On line 296, the code calls `pipe`, which could be intercepted by sanitizers such as TSAN and make them produce false positives. This can be reproduced by the following example, which mixes UBSan and TSan:

```cpp
// test.cpp
// g++ -std=c++17 -fsanitize=undefined -fsanitize=thread -o test test.cpp

#include <thread>

class Foo {
public:
  void produce(int) {}
  void consume() {}

  void run() {
    w1_ = std::thread{&Foo::produce, this, 0};
    w2_ = std::thread{&Foo::consume, this};
    w1_.join();
    w2_.join();
  }

private:
 std::thread w1_;
  std::thread w2_;
};

int main() {
  Foo f;
  f.run();
  return 0;
}

```

Should we replace this `pipe` call with something like `internal_pipe`? I can draft a patch for this if necessary. Or this is not a considered scenario?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUVV2PqzYQ_TXOyygIbD6SBx42N0WttOqVutvnyJgh-F5jI9sku_31lSEfJHcfWikCZeb4zJljxubOyaNGLEm2I9l-xUffGVu-ci3Q6lVtms_yd7QIUgPJY2H6QSq0a-tJHoPjWnr5D1oQpu-NBmEaJOyFxHsSX56d94MLMVoRWh2l78Y6EqYntFLqdH2tB2t-oPCEVrUyNaFVtsmTJM2SWGQtL5ImYUUhijZjmG84qxMq0oJyTgmtlqpopWRYfpN2mKU9hAbj5MdByVo0OERiGAhlr3SbrF9ZEi_Ff9egpEag25zQb-A7nFoEwZVywZBBDkjyOCTPnRQdCDOqBupgmEcrcPDYQP15t8qBG0UH3MH728ufwHUDPf-JgbuHwZpmFAgtVw4hyPTyhC6C9046EFwHZosX2EQcNLVGKXOW-gj4wftB4V1PLz_Qwd-7N66nWu9vXD_tUNA__YIRc2TaK_DofPQcPBK6I3QHa-cbwvZi_psUsG6vPRK2H3WDrdTYPIZ9Z5E3sDYT93OBSxkmtVBjg0DYt3kBYb8tIUJx56AyBkixm0PDWCspbo0BnIxsrnYSupHaE7qd8MX-ASOMdmMfMM-AB5gd9QJyyQCckwMQtofJjBfCXi6Cix2heWXMHLzpCJ-QdOEdhzJsyUT_C9NN7YXpmSQ5RD-MvEh95v869dTvYOWJ-_sUPwsKNRarf8nSe3apbn5K7aHn8gsrw262C942ujm-iFr0o9UQP5T46lNeBt-6aSbP0-QoLnCybjG90zjDWfoOnOnRd2GSlPyJATPNsebqcB11VsEf0yg2lrceOAzciw5aY2de2YJGgc5x-xnB92vUgTYBHXZQNmixASdQcysNYdWqKVmzZVu-wjIpkm2a5FnOVl1J2xypqLebOElR5EXapjzNarGtaR1vks1KljSmaZzTPMlSmrIoa7O2FjTNaV5gUnCSxthzqaJwzkbGHlfSuRHLbV5s8pXiNSo3Hf-UajzDlCSUhtvAltPZXI9HR9JYSefdncVLr7D862JpcGe28MGwcG8sjudfbozVaFX5v6-ISaMjtJp7OJX03wAAAP__4qEMqQ">