Что означает TSAN_OPTIONS = "force_seq_cst_atomics = 1"? - PullRequest
0 голосов
/ 22 апреля 2020

Я не понимаю описания опции force_seq_cst_atomics в документации.

force_seq_cst_atomics Этот флаг превращает все операции atomi c в последовательно согласованные операции. Это полезно, чтобы проверить, вызвана ли гонка неправильным упорядочением памяти.

- https://github.com/google/sanitizers/wiki/ThreadSanitizerFlags

TSan должен понимать блокировку свободная синхронизация и атоми c операции по умолчанию. Тогда почему эта опция полезна?

Что такое последовательно последовательная операция? Не правда ли, что любое параллельное выполнение программы может быть линеаризовано в последовательное выполнение?

Как может быть вызвано состязание чем-либо else , но неправильным упорядочением доступа к памяти? Гонка происходит, если существует пара чтения и записи, у которой нет определенного события, предшествующего взаимосвязи.

Влияет ли установка force_seq_cst_atomics только на отчеты TSan, или это влияет на ход программы?

...