Steps to reproduce:
1.) Hello, I'm attempting to develop a static datarace detection pass using Soot, and Spark but I would like sound analysis (e.g. reasoning conservatively about reflection). I've found Soot crashes when running Spark on a simple program if "types-for-invoke" and safe-newinstance are both enabled.
I've enabled the safe-forename, safe-newinstance, and types-for-invoke options of the cg. However, it appears that this bug occurs with the combination of the safe-newinstance and types-for-invoke flags both enabled.
Files used to reproduce:
Test java file contents below:
class Simple1 {
static int a = 0;
public static void main(String[] args) {
Thread t1 = new Thread() {
public void run() {
a = 7;
System.out.println("a is: " + a);
}
};
Thread t2 = new Thread() {
public void run() {
a = 10;
System.out.println("a is: " + a);
}
};
t1.start();
try {
t1.join();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
t2.start();
try {
t2.join();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
a = 0;
t1 = new Thread() {
public void run() {
a = 2;
System.out.println("a is: " + a);
}
};
t2 = new Thread() {
public void run() {
a = 3;
System.out.println("a is: " + a);
}
};
t1.start();
t2.start();
try {
t2.join();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
try {
t1.join();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
java.lang.RuntimeException: Type mask not found for type sun.nio.cs.AbstractCharsetProvider
at soot.jimple.spark.internal.TypeManager.get(TypeManager.java:137)
at soot.jimple.spark.sets.HybridPointsToSet.nativeAddAll(HybridPointsToSet.java:67)
at soot.jimple.spark.sets.HybridPointsToSet.addAll(HybridPointsToSet.java:98)
at soot.jimple.spark.sets.PointsToSetInternal.addAll(PointsToSetInternal.java:56)
at soot.jimple.spark.sets.HybridPointsToSet.superAddAll(HybridPointsToSet.java:50)
at soot.jimple.spark.sets.HybridPointsToSet.addAll(HybridPointsToSet.java:93)
at soot.jimple.spark.sets.DoublePointsToSet.addAll(DoublePointsToSet.java:73)
at soot.jimple.spark.solver.PropWorklist.handleVarNode(PropWorklist.java:170)
at soot.jimple.spark.solver.PropWorklist.propagate(PropWorklist.java:81)
at soot.jimple.spark.SparkTransformer.propagatePAG(SparkTransformer.java:238)
at soot.jimple.spark.SparkTransformer.internalTransform(SparkTransformer.java:155)
at soot.SceneTransformer.transform(SceneTransformer.java:36)
at soot.Transform.apply(Transform.java:102)
at soot.RadioScenePack.internalApply(RadioScenePack.java:68)
at soot.jimple.toolkits.callgraph.CallGraphPack.internalApply(CallGraphPack.java:58)
at soot.Pack.apply(Pack.java:117)
at soot.PackManager.runWholeProgramPacks(PackManager.java:613)
at soot.PackManager.runPacksNormally(PackManager.java:497)
at soot.PackManager.runPacks(PackManager.java:421)
at soot.Main.run(Main.java:269)
at soot.Main.main(Main.java:141)
Steps to reproduce: 1.) Hello, I'm attempting to develop a static datarace detection pass using Soot, and Spark but I would like sound analysis (e.g. reasoning conservatively about reflection). I've found Soot crashes when running Spark on a simple program if "types-for-invoke" and safe-newinstance are both enabled.
I've enabled the safe-forename, safe-newinstance, and types-for-invoke options of the cg. However, it appears that this bug occurs with the combination of the safe-newinstance and types-for-invoke flags both enabled.
Files used to reproduce: Test java file contents below:
Soot version:
Command line:
Max Memory:
Stack trace: