<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJzVU8tu2zAQ_BrpQljQ29JBB7dBmkMOBVogx4KPlcWEIhU-rDpf36Vct0l7KIqeChCWl-Ts7swsmRHn4fMERGoPlsPipdFEzouCGbR35M548pF6Pkl9JNQRo4GYkXiEeOCTls8BXFIdkvwmyQ-T98sWlbe4jtJPgWXczBgodbp-dos1j8A9hkwZhp-6q9um7Yq-YLRoq7rpO2Bd3XDIWTNSVlUdtKJs8SpmW6QCu7MRr2SEv27-l_DLKnXGlyUpq_u22N339aXTy29k_oZhcOAIJX41O3b2QB7DjND3hGpBLDwHafF8lNZ5VMx5G_gmmDeEQUQRY8lsLJCIdldkVGsM-nJXYgEljxpERh5QIYxUvOHgWuGi_Aw-4qWPiEhJCxDXSpMFKnaOjpC95nNnVjiB3Qr-MJFey2pkekGSiCQiQMy3Wukj99j-1jZxsFBLPajzf-Js2fS7-7JtXmtxcC7MkddBCHTNkU9UI9EXlOftsMdddOQFiQO1yPm7a6i8p0_bPEzyOBFuoglXvw1zYE-wSQ3jiKSv70JQT4mlHPfRi5gt7nJL3RRdwL0zCVrJJ7jUYsET5yVOwWKck0xBloqhEn3V05QGPxk7HBR8_RCwvIRTGqwa_toPiXLEibxtqj6v0mkoOBdl0fSiq_bjXoyiBbRlL0TeQlG0TaooA-WGpHmXlKWGlWwp8H_S3KT_3oEcyrzEVeyLsqjLfSYqUbECxpqXXdHmPKlzmKlUWcyTGXtM7bClZOHo8FBJ593PQ4ra4auCrWHs0EuvYPiD-bgepBZmjUx-eyDrBBi4OAncBCXw6aUbi2Gj8A0Y98Tb>53903</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Address Sanitizer interception on Windows: not thread safe whereas it could be
        </td>
    </tr>

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

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

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

<pre>
    The interception implements Hot Patching as one of the techniques:
https://github.com/llvm/llvm-project/blob/4846568191ba1634598eb845ce0b5fab338e6d26/compiler-rt/lib/interception/interception_win.cpp#L61-L94

The Hot Patching uses a two-byte jump, and requires first instruction to be two or more bytes, and the function is aligned. With all these requirements met, it is intended to be thread-safe.

However the implementation is not thread safe due to writing two bytes separately:
https://github.com/llvm/llvm-project/blob/4846568191ba1634598eb845ce0b5fab338e6d26/compiler-rt/lib/interception/interception_win.cpp#L259-L265

Assuming Address Sanitizer interception initializes early, and it takes a high contention to observe the effect of the data race ever, the crash is very unlikely, but still possible.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzVU01v1DAQ_TXJxdoo300OOSxUpYcekEDiiPwx2bh17NQfG7a_nnGWQAsHxBHJSjK238y89ybMiMvweQIitQfLYfHSaCLnRcEM2jtybzz5SD2fpD4R6ojRQMxIPEI88EnL5wAuqY5Jfpvkx8n7ZYvKO1wn6afAMm5mDJQ676_DYs0jcI8hU4bhq-7qtmm7oi8YLdqqbvoOWFc3HHLWjJRVVQetKFu8itkWqcAebMQrGeGvm_8t_LpKnfFlScrqoS0OD3197fT6jMzfMAwOHKHEr-bALh7IY5gR-p5QLYiF5yAtno_SOo-KOW8D3wTzhjCIKGIsmY0FEtFuR0a1xqCvdyUWUPKkQWTkCyqEkYo3HOwVrsrP4CNe-oiIlLQAsVeaLFBxcHSE7DWfe7PCGexW8KeJdC-rkekVSSKSiAAx32qlj9xj-1vbxMFCLfWgLv-Js2XTHx7KtnmtxdG5MEdeRyHQNUc-UY1EX1Cet8Med9GRFyQO1CLnH66h8p4-bfMwydNEuIkm7H4b5sCeYZMaxhFJ7_-FoJ4SSznuoxcxW9zllropuoB7FxK0kk9wrcWCJ85LnILFOCeZgiwVQyX6qqepl17B8BcKuL5ILcwaHfrD5nUCDFzkw01QAgcoDVYN_2ypREXjUN81VZ9X6TTUdV2UfVExVgjet2NLO0rzvO5EJ9BanirKQLkhad4lZalhJVsK_E6a21QOZV7iKm6KsqjLm0xUomIFjDUvu6LNeVLnMFOpsthHZuwptcPWEgsnh4dKOu9-HVIUD38r2Mphfhr8ZOxwVPDtQ0DnJJzTrf6w9f8d2qKvUA">