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

    <tr>
        <th>Summary</th>
        <td>
            ASAN_SYMBOLIZER_PATH doesn't work if __asan_default_options provides a value for external_symbolizer_path
        </td>
    </tr>

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

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

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

<pre>
    Using the following:
```
#include <cstdlib>

extern "C"
__attribute__((no_sanitize("address")))
const char *__asan_default_options() {
  return "external_symbolizer_path=%d/bad-path/llvm-symbolizer";
}

int main() {
  int* x = new int[1];
  x[10] = 11;
}
```

Compiled with -fsanitize=asan, running with ASAN_SYMBOLIZER_PATH=path set doesn't override the compiled-in default. ASAN_OPTIONS=external_symbolizer_path=path can be used as a workaround, but this may not be obvious since a lot of documentation, such as https://clang.llvm.org/docs/AddressSanitizer.html, only mentions the former. This can be a confusing experience when coming into a project that hardcodes default options, I think it's reasonable to expect the env variable to take priority.

This issue is present on master, and seems to go ways back. I think either the code should be changed to apply ASAN_SYMBOLIZER_PATH after __asan_default_options, or the documentation updated. Probably the same needs to happen for other sanitizers.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8VE1v4zYQ_TX0ZRBBJv150MGx1ugC7SZo0kN7EUbiyGJDkQJJ2fH--oK04uy2SQFDgIecxzdv3gx6r46GqGDLe7YsZziGzrpCaetmtZWX4g-vzBFCR9Bare1ZmSMTO5aXLN-xVT79rn-5UKbRoyRgYt_4ILWqmfgynaYvvQZyBhjne8b5NVZVGIJT9RioqhjfML4xtvJoVFDfKQU4SunI-5jDt9MvJTfW-ABNhw4Yj1AeTSWpxVGHyg5BWeMTxBbY-v6aA-AojFcaV0KoK3_pa6vVd3LVgKFjomR8KRk_1CjvUoQftD71d-8XIxsxYbJ1-WOdygToUZn_Pq1MYHwHr8BECYbOKbC8n7NleQMDeI2hnC3LdG0-_-Cdf4mfvnvbD0qThLMKHdy1NxFFGYVhfA9uNCa2NN3YPe2-VU9__nb_8OvXv778Xj3unn9hoozlgqcA0pI3jK8D2BM5pyQlKzTTM3fKwKR1dsV6eHz--vDtiYnyf4RN8A0aqAlGTxLQA8LZuhd0djQy0qzHAKFTHnq8gLEh3rX1SdnRg1emIUDQNoBtQdpm7MkEjM2OuX5suojZhTD46FZ-YPzQaDTHLLYws-7I-EHaxjN-2F2t9TRJ5bIu9DrCWKMvEIGjh6YRcD25DJ4jsakAhMaadkxjQq8DOUWR3bkjE3WKYWWCBYTB2b-piWVhgA6dbKwk_yYg3My6h6-xdPMCKjC-9uAIvTVYa4Jg0yMJhYDMCU7o1NtRwBeCwSnrVLhkPxojMVbejwTKw-DIkwlgDfToQ3TyHtBI8ES9j0hHC2e8eKixeclufEiFjtxkAUngOztqGVVoOjRHkjEVh0FfPnQWYBvIwWdDugd7xf6poTAOEgPJDB6drbHWl3THY09giGSi2-EwkIn9AZsovhnf-WwmCyG3YoszKuarzZyL-Xqdz7pCUoNrsZS0EPVmnm8Wy7wlkdOyRbHgK5qpgudc5Iv5fL5abEWeyWYrcy5ky5E2zUawRU49Kn1z1SxJXKx4vtrONNakfdqsnKdJj4dxaSzLmSvSMqnHo2eLXCsf_DtKUEFT8aGE7xMZ5wVU-4mc0W0nFf2FcEI9JvPCZ0M5G50ufh6XowrdWGeN7afF97b_Jhszfkj1xBFK9f4TAAD__6mrE2M">