Java PathFinder を使った Thread の検証
Menu複数の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
実行してみる
以下の gitllab から ThreadTest を落とす
https://gitlab.ie.u-ryukyu.ac.jp/os/ThreadTest.git
% gradle build % 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.TestDeadLockDead lock がたまに起きることを確認する
JavaPathFinder で dead lock を見つけた場所を指摘する
/opt/jpf-core/bin/jpf +classpath=build/classes/java/main deadLockTest.TestDeadLock
bug の修正
このbugが起きないように deadLockTest.TestDeadLock を修正せよ