-title: Java PathFinder を使った Thread の検証
複数のJava の Thread が共有している文字列 String を調べて、
Thread の実行の様子を調べよう。
ThreadTest on gitlab
Server.stringWork() を実行する。
何回か実行して見て、動作が異なるかどうかを調べよう。
--PathFinder による実行
以下の singularity sif を
singularity shell --shell=/bin/zsh /mnt/ie-virsh/singularity/pathfinder/pathfinder.sif
と実行する
def file は
singluarity def for Java Path Finder
Java PathFinder
https://github.com/javapathfinder/jpf-core
--Java 11 を使用する
Ubuntu ならば
apt install openjdk-11-jre-headless
update-java-alternatives --set java-1.11.0-openjdk-amd64
--実行してみる
% java -cp build/classes/java/main threadTest.TestThread
--JavaPathFinder で bug を見つける
% /opt/jpf-core/bin/jpf +classpath=build/classes/java/main threadTest.TestThread
実行で、どこで、bug を見つけているかを示せ
--bug の修正
このbugが起きないようにthreadTest.TestThreadを修正せよ
--DeadLock
走らせてみる
java -cp build/classes/java/main deadLockTest.TestDeadLock
Dead lock がたまに起きることを確認する
JavaPathFinder で dead lock を見つけた場所を指摘する
/opt/jpf-core/bin/jpf +classpath=build/classes/java/main deadLockTest.TestDeadLock
--bug の修正
このbugが起きないように deadLockTest.TestDeadLock を修正せよ