Аннотация

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

Аннотация

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