A performance test that previously worked without issues is now failing with the following error:
[error] Test edu.illinois.ncsa.daffodil.pcap.TestPCAP.test_pcap_simple_outOfBoundsError failed: java.lang.IndexOutOfBoundsException: 1000040
|
[error] at scala.collection.immutable.PagedSeq.apply(PagedSeq.scala:167)
|
[error] at edu.illinois.ncsa.daffodil.processors.DFDLByteReader.getByte(DFDLReader.scala:113)
|
[error] at edu.illinois.ncsa.daffodil.processors.DFDLByteReader$$anonfun$getByteArray$1.apply$mcVI$sp(DFDLReader.scala:151)
|
[error] at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:141)
|
[error] at edu.illinois.ncsa.daffodil.processors.DFDLByteReader.getByteArray(DFDLReader.scala:150)
|
[error] at edu.illinois.ncsa.daffodil.processors.InStreamFromByteChannel.getByteAlignedBytes(InStream.scala:357)
|
[error] at edu.illinois.ncsa.daffodil.processors.InStreamFromByteChannel.getBytes(InStream.scala:329)
|
[error] at edu.illinois.ncsa.daffodil.processors.parsers.HexBinaryLengthInBytesParser.parse(HexBinaryLengthParsers.scala:60)
|
[error] at edu.illinois.ncsa.daffodil.processors.Parser.parse1(Parser.scala:90)
|
[error] at edu.illinois.ncsa.daffodil.processors.SeqCompParser$$anonfun$parse$2.apply(Parser.scala:169)
|
[error] at edu.illinois.ncsa.daffodil.processors.SeqCompParser$$anonfun$parse$2.apply(Parser.scala:167)
|
[error] at scala.collection.immutable.List.foreach(List.scala:318)
|
[error] at edu.illinois.ncsa.daffodil.processors.SeqCompParser.parse(Parser.scala:167)
|
[error] at edu.illinois.ncsa.daffodil.processors.Parser.parse1(Parser.scala:90)
|
[error] at edu.illinois.ncsa.daffodil.processors.StatementElementParserBase$$anonfun$9.apply(ElementCombinator1.scala:136)
|
[error] at edu.illinois.ncsa.daffodil.processors.StatementElementParserBase$$anonfun$9.apply(ElementCombinator1.scala:135)
|
[error] at scala.Option.map(Option.scala:145)
|
[error] at edu.illinois.ncsa.daffodil.processors.StatementElementParserBase.parse(ElementCombinator1.scala:135)
|
[error] at edu.illinois.ncsa.daffodil.processors.Parser.parse1(Parser.scala:90)
|
[error] at edu.illinois.ncsa.daffodil.processors.SeqCompParser$$anonfun$parse$2.apply(Parser.scala:169)
|
[error] at edu.illinois.ncsa.daffodil.processors.SeqCompParser$$anonfun$parse$2.apply(Parser.scala:167)
|
[error] at scala.collection.immutable.List.foreach(List.scala:318)
|
[error] at edu.illinois.ncsa.daffodil.processors.SeqCompParser.parse(Parser.scala:167)
|
[error] at edu.illinois.ncsa.daffodil.processors.Parser.parse1(Parser.scala:90)
|
[error] at edu.illinois.ncsa.daffodil.processors.parsers.SequenceCombinatorParser.parse(ElementKindParsers.scala:227)
|
[error] at edu.illinois.ncsa.daffodil.processors.Parser.parse1(Parser.scala:90)
|
[error] at edu.illinois.ncsa.daffodil.processors.SeqCompParser$$anonfun$parse$2.apply(Parser.scala:169)
|
[error] at edu.illinois.ncsa.daffodil.processors.SeqCompParser$$anonfun$parse$2.apply(Parser.scala:167)
|
[error] at scala.collection.immutable.List.foreach(List.scala:318)
|
[error] at edu.illinois.ncsa.daffodil.processors.SeqCompParser.parse(Parser.scala:167)
|
I created a TDML test with this data. The Simple PCAP schema is a modified version of the original pcap schema (parses the packet as a binary blob, without going into the various layers). It does not use any expressions. The packet sizes are static, along with the byteOrder.
See test test_pcap_simple_outOfBoundsError, which uses the following files:
daffodil-test/src/test/resources/edu/illinois/ncsa/daffodil/pcap/1m.pcap
daffodil-test/src/test/resources/edu/illinois/ncsa/daffodil/pcap/pcap.simple.dfdl.xsd
daffodil-test/src/test/resources/edu/illinois/ncsa/daffodil/pcap/pcap.tdml
daffodil-test/src/test/scala-debug/edu/illinois/ncsa/daffodil/pcap/TestPCAPDebug.scala
daffodil-test/src/test/scala/edu/illinois/ncsa/daffodil/pcap/TestPCAP.scala