-force-data-races

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

Синтаксис

-force-data-races

Описание

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

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

Примеры

В этом примере, переменной sharedVar1 совместно используется потоками с функциями запуска thread1_main и thread2_main но операции на sharedVar1 не защищены от параллельного доступа. Если при запуске Средство поиска Ошибки с опцией -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.

  • Средство поиска ошибки:

    polyspace-bug-finder -checkers data_race_all -force-data-races
  • Сервер средства поиска ошибки:

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

Смотрите также