http://demsky.eecs.uci.edu/publications/c11modelcheck.pdf
Один из первых stateless модел-чекеров, проверяющих атомики С11. Он исследует программу, обходя сами исполнения, и по пути строя rf, mo, sc, hb с помощью векторных часов.
В основе - DPOR. Но внутри цикла DPOR появляется цикл по behaviours - т.е. по тем значениям, которые может прочесть читающая операция.
Эффективность получается за счет номера разных оптимизаций, описанных в статье. В основном это просто то наблюдение, что обновления можно делать локально, и отбрасывать исполнения, не попадающие под модель памяти С++.
loom (https://github.com/tokio-rs/loom) ссылается именно на эту имплементацию.
#model_checking #loom #dpor
Один из первых stateless модел-чекеров, проверяющих атомики С11. Он исследует программу, обходя сами исполнения, и по пути строя rf, mo, sc, hb с помощью векторных часов.
В основе - DPOR. Но внутри цикла DPOR появляется цикл по behaviours - т.е. по тем значениям, которые может прочесть читающая операция.
Эффективность получается за счет номера разных оптимизаций, описанных в статье. В основном это просто то наблюдение, что обновления можно делать локально, и отбрасывать исполнения, не попадающие под модель памяти С++.
loom (https://github.com/tokio-rs/loom) ссылается именно на эту имплементацию.
#model_checking #loom #dpor