-force-data-races

Обнаружите гонки данных, включающие только атомарные операции, даже когда не заданы критические разделы

Синтаксис

-force-data-races

Описание

-force-data-races обеспечивает обнаружение рас данных, включающих только атомарные операции, даже если не заданы критические разделы.

По умолчанию Bug Finder обнаруживает гонки данных только в том случае, если одна или обе операции, обращающиеся к общей переменной, неатомны. Вы можете явным образом разрешить обнаружение гонок данных, связанных только с атомарными операциями. См. Data race including atomic operations. Однако, если вы вообще не используете критические разделы в коде, чтобы избежать маркировки слишком многих операций, то такого рода обнаружение гонки данных все еще отключено. Чтобы принудительно обнаружить гонки данных с использованием атомарных операций даже при отсутствии критических разделов, используйте опцию -force-data-races.

Примеры

В этом примере переменная sharedVar1 совместно используется потоками с начальными функциями thread1_main и thread2_main но операции над sharedVar1 не защищены от параллельного доступа. Если вы запускаете Bug Finder с опцией -checkers data_race_all, вы не видите гонки данных, потому что код вообще не использует критические разделы. Критический раздел, для образца, будет включать использование pthread_mutex_lock- pthread_mutex_unlock пара.

Вы также видите предупреждение в журнале:

Warning: Checker 'Data Race' is activated but no protection have been defined
Warning: Checker 'Data Race including atomic operations' is disabled because no critical sections, temporal exclusions or routines to disable/enable all interrupts have been defined.
|        To force activation of this checker use option -force-data-races

 Пример кода

Чтобы увидеть гонки данных, несмотря на отсутствие критических разделов, используйте опцию -force-data-races.

  • Bug Finder:

    polyspace-bug-finder -checkers data_race_all -force-data-races
  • Сервер Bug Finder:

    polyspace-bug-finder-server -checkers data_race_all -force-data-races

Совет

Эта опция не используется в анализе Polyspace во время You Code.