plume-oss / plume

Plume is a code representation benchmarking library with options to extract the AST from Java bytecode and store the result in various graph databases.
https://plume-oss.github.io/plume-docs/
Apache License 2.0
70 stars 9 forks source link

Cache seems to cause null error if limited on Unknown File Node #211

Closed DavidBakerEffendi closed 3 years ago

DavidBakerEffendi commented 3 years ago

Describe the bug and, if possible, what you should expect When running Plume with a limited cache - an error can be expected when the unknown node is queried.

To Reproduce Steps to reproduce the behavior:

  1. Configure Benchmarks for guava on update benchmarks
  2. Limit cache to 5000
  3. Run benchmarks
  4. See error

Screenshots and/or Stacktraces

[INFO ] 2021-09-24 14:04:51.424 [run-main-0] Main$ - ---------------------------------------------------------------------------
[INFO ] 2021-09-24 14:04:51.424 [run-main-0] Main$ - guava @ 37a7c77daae1f58bd31c262243ad3d2bb478a2f4
[INFO ] 2021-09-24 14:04:51.424 [run-main-0] Main$ - ---------------------------------------------------------------------------
[INFO ] 2021-09-24 14:04:51.663 [run-main-0] Extractor$logger$1 - Preparing 2056 class and 0 source file(s). Ignoring 3 unsupported file(s).
[INFO ] 2021-09-24 14:04:52.250 [run-main-0] Extractor$logger$1 - Loading all classes into Soot
[INFO ] 2021-09-24 14:05:05.357 [run-main-0] Extractor$logger$1 - Checking any classes already in the database require updates
[INFO ] 2021-09-24 14:05:11.250 [run-main-0] Extractor$logger$1 - Building internal program structure and type information
[INFO ] 2021-09-24 14:05:40.879 [run-main-0] Extractor$logger$1 - Building UnitGraphs
[INFO ] 2021-09-24 14:05:40.911 [run-main-0] Extractor$logger$1 - Obtaining class hierarchy
[INFO ] 2021-09-24 14:05:41.466 [run-main-0] Extractor$logger$1 - Building primitive type information
[ERROR] 2021-09-24 14:05:41.473 [run-main-0] Main$ - null
java.lang.NullPointerException: null
        at io.github.plume.oss.passes.type.GlobalTypePass.runPass(GlobalTypePass.kt:51) ~[plume-0.6.1.jar:0.6.1]
        at io.github.plume.oss.Extractor$project$16$1.invoke(Extractor.kt:292) ~[plume-0.6.1.jar:?]
        at io.github.plume.oss.Extractor$project$16$1.invoke(Extractor.kt:88) ~[plume-0.6.1.jar:?]
        at io.github.plume.oss.Extractor$pipeline$1.invoke(Extractor.kt:504) ~[plume-0.6.1.jar:?]
        at io.github.plume.oss.Extractor$project$16.invoke(Extractor.kt:293) ~[plume-0.6.1.jar:?]
        at io.github.plume.oss.Extractor$project$16.invoke(Extractor.kt:88) ~[plume-0.6.1.jar:?]
        at io.github.plume.oss.metrics.PlumeTimer.measureFunctionTime(PlumeTimer.kt:32) ~[plume-0.6.1.jar:0.6.1]
        at io.github.plume.oss.metrics.PlumeTimer.measure(PlumeTimer.kt:43) ~[plume-0.6.1.jar:0.6.1]
        at io.github.plume.oss.Extractor.project(Extractor.kt:290) ~[plume-0.6.1.jar:?]
        at io.github.plume.oss.Extractor.project$default(Extractor.kt:190) ~[plume-0.6.1.jar:?]
        at io.github.plume.oss.Extractor.project(Extractor.kt) ~[plume-0.6.1.jar:?]
        at io.github.plume.oss.Main$.runBenchmark(Main.scala:182) ~[classes/:?]
        at io.github.plume.oss.RunBenchmark$.runInitBuild(RunBenchmark.scala:62) ~[classes/:?]
        at io.github.plume.oss.RunBenchmark$.runLiveUpdates(RunBenchmark.scala:71) ~[classes/:?]
        at io.github.plume.oss.Main$.runExperiment(Main.scala:86) ~[classes/:?]
        at io.github.plume.oss.Main$.$anonfun$new$5(Main.scala:56) ~[classes/:?]
        at scala.collection.immutable.List.foreach(List.scala:333) ~[scala-library-2.13.4.jar:?]
        at io.github.plume.oss.Main$.$anonfun$new$3(Main.scala:54) ~[classes/:?]
        at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:190) ~[scala-library-2.13.4.jar:?]
        at io.github.plume.oss.Main$.$anonfun$new$2(Main.scala:51) ~[classes/:?]
        at io.github.plume.oss.Main$.$anonfun$new$2$adapted(Main.scala:42) ~[classes/:?]
        at scala.collection.immutable.List.foreach(List.scala:333) ~[scala-library-2.13.4.jar:?]
        at io.github.plume.oss.Main$.delayedEndpoint$io$github$plume$oss$Main$1(Main.scala:42) ~[classes/:?]
        at io.github.plume.oss.Main$delayedInit$body.apply(Main.scala:20) ~[classes/:?]
        at scala.Function0.apply$mcV$sp(Function0.scala:39) ~[scala-library-2.13.4.jar:?]
        at scala.Function0.apply$mcV$sp$(Function0.scala:39) ~[scala-library-2.13.4.jar:?]
        at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:17) ~[scala-library-2.13.4.jar:?]
        at scala.App.$anonfun$main$1(App.scala:76) ~[scala-library-2.13.4.jar:?]
        at scala.App.$anonfun$main$1$adapted(App.scala:76) ~[scala-library-2.13.4.jar:?]
        at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:563) ~[scala-library-2.13.4.jar:?]
        at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:561) ~[scala-library-2.13.4.jar:?]
        at scala.collection.AbstractIterable.foreach(Iterable.scala:919) ~[scala-library-2.13.4.jar:?]
        at scala.App.main(App.scala:76) ~[scala-library-2.13.4.jar:?]
        at scala.App.main$(App.scala:74) ~[scala-library-2.13.4.jar:?]
        at io.github.plume.oss.Main$.main(Main.scala:20) ~[classes/:?]
        at io.github.plume.oss.Main.main(Main.scala) ~[classes/:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
        at sbt.Run.invokeMain(Run.scala:133) ~[?:?]
        at sbt.Run.execute$1(Run.scala:82) ~[?:?]
        at sbt.Run.$anonfun$runWithLoader$5(Run.scala:110) ~[?:?]
        at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23) [scala-library.jar:?]
        at sbt.util.InterfaceUtil$$anon$1.get(InterfaceUtil.scala:17) [util-logging_2.12-1.4.7.jar:1.4.7]
        at sbt.TrapExit$App.run(TrapExit.scala:258) [run_2.12-1.4.7.jar:1.4.7]
        at java.lang.Thread.run(Thread.java:829) [?:?]

Desktop (please complete the following information):

DavidBakerEffendi commented 3 years ago

Benchmark suite was not cleaning up properly after one of the experiments.