Труды института системного программирования РАН
RUS  ENG    ЖУРНАЛЫ   ПЕРСОНАЛИИ   ОРГАНИЗАЦИИ   КОНФЕРЕНЦИИ   СЕМИНАРЫ   ВИДЕОТЕКА   ПАКЕТ AMSBIB  
Общая информация
Последний выпуск
Архив

Поиск публикаций
Поиск ссылок

RSS
Последний выпуск
Текущие выпуски
Архивные выпуски
Что такое RSS



Труды ИСП РАН:
Год:
Том:
Выпуск:
Страница:
Найти






Персональный вход:
Логин:
Пароль:
Запомнить пароль
Войти
Забыли пароль?
Регистрация


Труды института системного программирования РАН, 2022, том 34, выпуск 4, страницы 63–78
DOI: https://doi.org/10.15514/ISPRAS-2022-34(4)-5
(Mi tisp705)
 

Обнаружение ошибок взаимоисключающей блокировки в программах на языке С# при помощи методов статического анализа

П. И. Рагозинаab, В. Н. Игнатьевab

a Институт системного программирования им. В.П. Иванникова РАН
b Московский государственный университет имени М. В. Ломоносова
Аннотация: В статье рассматриваются алгоритмы статического анализа, которые направлены на поиск трех типов ошибок, связанных с понятием синхронизирующего монитора: переопределение переменной взаимоисключающей блокировки внутри критической секции; использование переменной некорректного типа при входе в монитор; блокировка с задействованием объекта, имеющего методы, которые используют для блокировки ссылку на экземпляр (this). Разработанные алгоритмы опираются на технологию символьного исполнения и опираются на межпроцедурный анализ с применением резюме функций, что обеспечивает масштабируемость, чувствительность к полям, контексту, потоку управления. Полученные методы реализованы в инфраструктуре статического анализатора SharpChecker, использующего элементы компиляторной платформы Roslyn, в виде трёх детекторов. С их помощью при тестировании на проектах с открытым кодом найдено 23 ошибки и получена доля верных срабатываний в 88.5%, в то время как потребление времени каждым детектором составляет от 0.1 до 0.7% от общего времени работы анализатора. Ошибки, для поиска которых были разработаны данные детекторы, сложно обнаружить другими способами, помимо статического анализа, из-за того, что они тесно связаны с понятием многопоточности. При этом находить их необходимо: всего один подобный дефект может привести к нестабильности работы программы и даже сделать её уязвимой для злоумышленников.
Ключевые слова: статический анализ, поиск дефектов, символьное исполнение, язык C#, ошибки синхронизации, критическая секция, межпроцедурный анализ
Тип публикации: Статья
Образец цитирования: П. И. Рагозина, В. Н. Игнатьев, “Обнаружение ошибок взаимоисключающей блокировки в программах на языке С# при помощи методов статического анализа”, Труды ИСП РАН, 34:4 (2022), 63–78
Цитирование в формате AMSBIB
\RBibitem{RagIgn22}
\by П.~И.~Рагозина, В.~Н.~Игнатьев
\paper Обнаружение ошибок взаимоисключающей блокировки в программах на языке С\# при помощи методов статического анализа
\jour Труды ИСП РАН
\yr 2022
\vol 34
\issue 4
\pages 63--78
\mathnet{http://mi.mathnet.ru/tisp705}
\crossref{https://doi.org/10.15514/ISPRAS-2022-34(4)-5}
Образцы ссылок на эту страницу:
  • https://www.mathnet.ru/rus/tisp705
  • https://www.mathnet.ru/rus/tisp/v34/i4/p63
  • Citing articles in Google Scholar: Russian citations, English citations
    Related articles in Google Scholar: Russian articles, English articles
    Труды института системного программирования РАН
    Статистика просмотров:
    Страница аннотации:8
    PDF полного текста:3
     
      Обратная связь:
     Пользовательское соглашение  Регистрация посетителей портала  Логотипы © Математический институт им. В. А. Стеклова РАН, 2024