Skip to content

Large files from command line fail #1425

@bmccar

Description

@bmccar

PItest is failing from the command line when running against larger files, whereas the same file run from Maven works. The runtime error is:

  Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 59575 out of bounds for length 43045
	at org.objectweb.asm.ClassReader.<init>(Unknown Source)
	at org.objectweb.asm.ClassReader.<init>(Unknown Source)
	at org.pitest.bytecode.analysis.ClassTree.fromBytes(ClassTree.java:39)
	at org.pitest.classpath.DefaultCodeSource.lambda$codeTrees$1(DefaultCodeSource.java:35)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1602)

The cutoff point in terms of number of lines is about 900. That is, files smaller than that work in all cases but larger files fail when run from the command line.

An example run is with Flink's FineGrainedSlotManager which has 909 lines. The Maven configuration (that works) is standard:

  <plugin>
      <groupId>org.pitest</groupId>
      <artifactId>pitest-maven</artifactId>
      <version>1.20.2</version>
      <configuration>
          <targetClasses>
              <param>org.apache.flink.runtime.resourcemanager.slotmanager.FineGrainedSlotManager</param>
          </targetClasses>
          <targetTests>
              <param>org.apache.flink.runtime.resourcemanager.slotmanager.FineGrainedSlotManager.FineGrainedSlotManagerTest</param>
          </targetTests>
      </configuration>
  </plugin> 

I run in "verbose" mode in both Maven and command line but there is no discernible difference.

The command line (which fails) is as follows, though for readability I've broken out the classpath and filtered out most entries which have nothing to do with pitest:

/opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home/bin/java "-javaagent:/Applications/IntelliJ IDEA CE.app/Contents/lib/idea_rt.jar=54711" -Dfile.encoding=UTF-8 -classpath
/Users/bpm/.m2/repository/org/pitest/pitest-command-line/1.20.2/pitest-command-line-1.20.2.jar:
/Users/bpm/.m2/repository/org/pitest/pitest-entry/1.20.2/pitest-entry-1.20.2.jar:
/Users/bpm/.m2/repository/org/pitest/pitest/1.20.2/pitest-1.20.2.jar:
/Users/bpm/.m2/repository/org/ow2/asm/asm-commons/9.8/asm-commons-9.8.jar:
/Users/bpm/.m2/repository/org/ow2/asm/asm/9.8/asm-9.8.jar:
/Users/bpm/.m2/repository/org/ow2/asm/asm-util/9.8/asm-util-9.8.jar:
/Users/bpm/.m2/repository/org/ow2/asm/asm-tree/9.8/asm-tree-9.8.jar:
/Users/bpm/.m2/repository/org/ow2/asm/asm-analysis/9.8/asm-analysis-9.8.jar:
/Users/bpm/.m2/repository/org/pitest/pitest-html-report/1.20.2/pitest-html-report-1.20.2.jar:
/Users/bpm/.m2/repository/org/antlr/stringtemplate/3.2.1/stringtemplate-3.2.1.jar:
/Users/bpm/.m2/repository/antlr/antlr/2.7.7/antlr-2.7.7.jar:
/Users/bpm/.m2/repository/net/sf/jopt-simple/jopt-simple/4.9/jopt-simple-4.9.jar:
/Users/bpm/.m2/repository/org/pitest/pitest-junit5-plugin/1.2.3/pitest-junit5-plugin-1.2.3.jar:
/Users/bpm/.m2/repository/org/junit/jupiter/junit-jupiter/5.11.4/junit-jupiter-5.11.4.jar:
/Users/bpm/.m2/repository/org/junit/jupiter/junit-jupiter-params/5.11.4/junit-jupiter-params-5.11.4.jar:
/Users/bpm/.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.11.4/junit-jupiter-engine-5.11.4.jar:
/Users/bpm/.m2/repository/org/junit/vintage/junit-vintage-engine/5.11.4/junit-vintage-engine-5.11.4.jar:
/Users/bpm/.m2/repository/org/junit/platform/junit-platform-engine/1.11.4/junit-platform-engine-1.11.4.jar:
/Users/bpm/.m2/repository/junit/junit/4.13.2/junit-4.13.2.jar:
/Users/bpm/Library/Application Support/JetBrains/IdeaIC2025.2/plugins/pitest-idea/lib/ifc-junit-jupiter-api/5.11.0/junit-platform-launcher-1.11.4.jar"
org.pitest.mutationtest.commandline.MutationCoverageReport
--reportDir /Users/bpm/dev/flink/flink-runtime/target/pit-idea-reports/org256633674 --targetClasses org.apache.flink.runtime.resourcemanager.slotmanager.FineGrainedSlotManager --targetTests org.apache.flink.runtime.resourcemanager.slotmanager.FineGrainedSlotManagerTest --mutableCodePaths /Users/bpm/dev/flink/flink-runtime/target/classes --sourceDirs /Users/bpm/dev/flink/flink-runtime/src/main/java --outputFormats XML,HTML --exportLineCoverage true 

I've also tried increasing the heap size by adding --jvmArgs, but it makes no difference. Previous versions of PItest also had this issue.

Bug, or am I doing something wrong?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions