ТЕСТИРОВАНИЕ МНОГОПОТОЧНЫХ ПРИЛОЖЕНИЙ С БЛОКИРОВКАМИ НА НЕАТОМАРНЫХ ПЕРЕМЕННЫХ
Аннотация:
Предмет исследования. Исследован существующий алгоритм фаззинг-тестирования для поиска ошибок типа гонки данных в многопоточных программных приложениях, реализованный в инструменте Google TSan. Недостатком исследованного алгоритма является отсутствие возможности тестирования программных приложений, использующих неатомарные переменные. Это исключает возможность применения подобного инструмента для тестирования современных приложений, реализующих совместный доступ программных потоков к данным. Предложен новый алгоритм фаззинг-тестирования многопоточных приложений и способ внедрения его в модуль фаззинг-тестирования инструмента Google TSan. Метод. При фаззинг-тестировании многопоточных приложений входными данными являются различные комбинации исполнения программных потоков. Предложенный метод фаззинг-тестирования многопоточных программных приложений строится на предположении, что ошибки в многопоточных приложениях проявляются только в точках переключения потоков — точках синхронизации. Планировщик потоков реализован максимально просто. Каждому потоку назначается маркер состояния, позволяющий отслеживать его активность в процессе работы программы. Поток может находиться в неизвестном состоянии (до первой точки синхронизации), в состоянии исполнения, в ожидании — в очереди на исполнение, а также в состоянии, когда поток исчерпал свой квант исполнения, но не достиг точки синхронизации. Подобное состояние потока при достижении точки синхронизации автоматически меняется на состояние ожидания. Управление потоками осуществляется с помощью отдельного программного потока, следящего за состояниями всех потоков и выставляющего потокам, исчерпавшим квант исполнения, соответствующий маркер. Механизм поиска ошибок внедряется в программный продукт на этапе компиляции при указании соответствующих опций. Основные результаты. В инструмент Google TSan внедрен новый модуль фаззинг-тестирования, который позволяет находить ошибки типа гонки данных в любых многопоточных приложениях как с синхронизацией доступа к разделяемым данным, так и при совместном доступе программных потоков к данным. Практическая значимость. Верификация многопоточных приложений с совместным доступом к данным, в частности использующих неатомарные переменные, особенно актуальна для высоконагруженных масштабируемых программных систем.
Ключевые слова:
Постоянный URL
Статьи в номере
- АНАЛИТИЧЕСКИЙ ОБЗОР МЕТОДОВ РАСПОЗНАВАНИЯ ЭМОЦИЙ ПО ВЫРАЖЕНИЯМ ЛИЦА ЧЕЛОВЕКА
- ИМПУЛЬСНОЕ ЛАЗЕРНОЕ НАПЫЛЕНИЕ ТОНКИХ ПЛЕНОК НИТРИДА АЛЮМИНИЯ НА САПФИРОВЫЕ ПОДЛОЖКИ
- ЭЛЕКТРОННАЯ СПЕКТРОСКОПИЯ ДИФФУЗНОГО ОТРАЖЕНИЯ В ИССЛЕДОВАНИИ СЫВОРОТКИ КРОВИ С МНОЖЕСТВЕННОЙ МИЕЛОМОЙ
- ИДЕНТИФИКАЦИЯ ЯНТАРЯ ПО СПЕКТРАМ КОМБИНАЦИОННОГО РАССЕЯНИЯ
- НАСТРОЙКА ПАРАМЕТРОВ ДИНАМИЧЕСКОЙ МОДЕЛИ ПИЛОТА В КОНТУРЕ УПРАВЛЕНИЯ ЛЕТАТЕЛЬНЫМ АППАРАТОМ
- СОВРЕМЕННЫЕ ТЕНДЕНЦИИ В РАЗРАБОТКЕ И ПРОИЗВОДСТВЕ НАНОРАЗМЕРНЫХ СИСТЕМ ДЛЯ ДОСТАВКИ ЛЕКАРСТВЕННЫХ СОЕДИНЕНИЙ
- АНАЛИЗ ПРОТОКОЛА MQTT НА АТАКИ «ОТКАЗ В ОБСЛУЖИВАНИИ»
- МЕТОДЫ ПОИСКА АНОМАЛЬНЫХ АКТИВНОСТЕЙ ВЕБ-ПРИЛОЖЕНИЙ
- АНАЛИЗ ДИНАМИКИ МЕР ЦЕНТРАЛЬНОСТИ МАТЕМАТИЧЕСКИХ МОДЕЛЕЙ СЛУЧАЙНЫХ ГРАФОВ
- МЕТОД ТОПОЛОГИЧЕСКОЙ ГРУБОСТИ ДИНАМИЧЕСКИХ СИСТЕМ: ПРИЛОЖЕНИЯЯ К СИНЕРГЕТИЧЕСКИМ СИСТЕМАМ
- ТЕПЛООБМЕННИК ДЛЯ УСТРОЙСТВА ТЕРМАЛИЗАЦИИ НЕЙТРОНОВ НА ПУЧКОВОМ ИССЛЕДОВАТЕЛЬСКОМ КОРПУСНОМ РЕАКТОРЕ
- МОДЕЛИРОВАНИЕ ТЕПЛОВОГО РЕЖИМА ЭЛЕКТРОННОГО ОБОРУДОВАНИЯ НА ОСНОВЕ РЕЗУЛЬТАТОВ ТЕПЛОВИЗИОННОЙ СЪЕМКИ ТЕМПЕРАТУРНЫХ ПОЛЕЙ ЭЛЕМЕНТОВ
- РАСЧЕТ ТЕПЛОФИЗИЧЕСКИХ СВОЙСТВ МНОГОКОМПОНЕНТНОЙ ГАЗОВОЙ СРЕДЫ ЩЕЛЕВОГО ЛАЗЕРА
- МОДЕЛИРОВАНИЕ ПРОЦЕССА НАМОТКИ КОМПОЗИТНЫХ ЦИЛИНДРИЧЕСКИХ ОБОЛОЧЕК
- ИССЛЕДОВАНИЕ СИСТЕМ УПРАВЛЕНИЯ ЭЛЕКТРОПРИВОДАМИ С ПРОГРАММНО-КОНФИГУРИРУЕМЫМ УПРАВЛЕНИЕ В РЕАЛЬНОМ ВРЕМЕНИ
- ПРИМЕНЕНИЕ НЕЙРОННОЙ СЕТИ ДЛЯ ОБНАРУЖЕНИЯ АВАРИЙНО-ОПАСНЫХ СИТУАЦИЙ НА ДОРОГАХ