[ https://issues.apache.org/jira/browse/DAFFODIL-2123?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Olabusayo Kilo reassigned DAFFODIL-2123: ---------------------------------------- Assignee: Olabusayo Kilo > Exception on error when parsing hex data with trace on > ------------------------------------------------------ > > Key: DAFFODIL-2123 > URL: https://issues.apache.org/jira/browse/DAFFODIL-2123 > Project: Daffodil > Issue Type: Bug > Components: Back End, Diagnostics > Affects Versions: 2.4.0 > Reporter: Olabusayo Kilo > Assignee: Olabusayo Kilo > Priority: Major > Attachments: tcp.dfdl.xsd, test.dump > > > When trying to parse hex data with an xsd than causes an error with trace on, > I get the error below. > {code:java} > org.apache.daffodil.exceptions.Abort: Invariant broken: nConsumedBytes.>(0) > org.apache.daffodil.exceptions.Assert$.abort(Assert.scala:129) > org.apache.daffodil.io.DataDumper.convertToChar(Dump.scala:489) > org.apache.daffodil.io.DataDumper.textDump(Dump.scala:150) > org.apache.daffodil.io.DataDumper.$anonfun$dumpHexAndTextBytes$2(Dump.scala:297) > at org.apache.daffodil.exceptions.Assert$.abort(Assert.scala:129) > at org.apache.daffodil.io.DataDumper.convertToChar(Dump.scala:489) > at org.apache.daffodil.io.DataDumper.textDump(Dump.scala:150) > at > org.apache.daffodil.io.DataDumper.$anonfun$dumpHexAndTextBytes$2(Dump.scala:297) > at scala.runtime.java8.JFunction1$mcVJ$sp.apply(JFunction1$mcVJ$sp.java:12) > at scala.collection.immutable.NumericRange.foreach(NumericRange.scala:71) > at org.apache.daffodil.io.DataDumper.dumpHexAndTextBytes(Dump.scala:264) > at org.apache.daffodil.io.DataDumper.dump(Dump.scala:129) > at org.apache.daffodil.processors.DataLoc.dumpStream(DataLoc.scala:144) > at org.apache.daffodil.processors.DataLoc.dump(DataLoc.scala:104) > at > org.apache.daffodil.debugger.InteractiveDebugger$DebugCommandBase$Info$InfoData$.printData(InteractiveDebugger.scala:1313) > at > org.apache.daffodil.debugger.InteractiveDebugger$DebugCommandBase$Info$InfoData$.act(InteractiveDebugger.scala:1346) > at > org.apache.daffodil.debugger.InteractiveDebugger$DebugCommandBase$Info$.$anonfun$act$20(InteractiveDebugger.scala:1202) > at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:32) > at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:29) > at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:38) > at > org.apache.daffodil.debugger.InteractiveDebugger$DebugCommandBase$Info$.act(InteractiveDebugger.scala:1200) > at > org.apache.daffodil.debugger.InteractiveDebugger$DebugCommandBase$.act(InteractiveDebugger.scala:682) > at > org.apache.daffodil.debugger.InteractiveDebugger$DebugCommand.apply(InteractiveDebugger.scala:472) > at > org.apache.daffodil.debugger.InteractiveDebugger.runCommand(InteractiveDebugger.scala:433) > at > org.apache.daffodil.debugger.InteractiveDebugger.$anonfun$debugStep$4(InteractiveDebugger.scala:174) > at scala.collection.immutable.List.foreach(List.scala:389) > at > scala.collection.generic.TraversableForwarder.foreach(TraversableForwarder.scala:35) > at > scala.collection.generic.TraversableForwarder.foreach$(TraversableForwarder.scala:35) > at scala.collection.mutable.ListBuffer.foreach(ListBuffer.scala:44) > at > org.apache.daffodil.debugger.InteractiveDebugger.$anonfun$debugStep$1(InteractiveDebugger.scala:173) > at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12) > at scala.util.DynamicVariable.withValue(DynamicVariable.scala:58) > at > org.apache.daffodil.ExecutionMode$.$anonfun$usingUnrestrictedMode$1(ExecutionMode.scala:66) > at > org.apache.daffodil.debugger.InteractiveDebugger.debugStep(InteractiveDebugger.scala:153) > at > org.apache.daffodil.debugger.InteractiveDebugger.startElement(InteractiveDebugger.scala:209) > at > org.apache.daffodil.events.MultipleEventHandler.$anonfun$startElement$1(ParseEventHandler.scala:117) > at > org.apache.daffodil.events.MultipleEventHandler.$anonfun$startElement$1$adapted(ParseEventHandler.scala:117) > at scala.collection.immutable.List.foreach(List.scala:389) > at > org.apache.daffodil.events.MultipleEventHandler.startElement(ParseEventHandler.scala:117) > at > org.apache.daffodil.events.MultipleEventHandler.startElement$(ParseEventHandler.scala:115) > at org.apache.daffodil.processors.DataProcessor.startElement(Runtime.scala:92) > at > org.apache.daffodil.processors.parsers.ElementParserBase.parse(ElementCombinator1.scala:141) > at org.apache.daffodil.processors.parsers.Parser.parse1(Parser.scala:76) > at org.apache.daffodil.processors.parsers.Parser.parse1$(Parser.scala:70) > at > org.apache.daffodil.processors.parsers.CombinatorParser.parse1(Parser.scala:154) > at org.apache.daffodil.processors.DataProcessor.doParse(Runtime.scala:223) > at > org.apache.daffodil.processors.DataProcessor.$anonfun$parse$1(Runtime.scala:196) > at scala.util.DynamicVariable.withValue(DynamicVariable.scala:58) > at > org.apache.daffodil.ExecutionMode$.$anonfun$usingRuntimeMode$1(ExecutionMode.scala:65) > at org.apache.daffodil.processors.DataProcessor.parse(Runtime.scala:188) > at org.apache.daffodil.processors.DataProcessor.parse(Runtime.scala:184) > at org.apache.daffodil.Main$.$anonfun$run$1(Main.scala:862) > at org.apache.daffodil.util.Timer$.getTimeResult(Timer.scala:76) > at org.apache.daffodil.util.Timer$.getResult(Timer.scala:35) > at org.apache.daffodil.Main$.run(Main.scala:862) > at org.apache.daffodil.Main$.main(Main.scala:1361) > at org.apache.daffodil.Main.main(Main.scala) > {code} > To replicate the error, the following can be done > {code:java} > daffodil --trace parse -Dtransport:Protocol=6 transport:DataLength=79 -s > tcp.dfdl.xsd test.dump{code} > If run without --trace, one gets the error below > {code:java} > [warning] Schema Definition Warning: Expression result type (Decimal) should > be manually cast to the expected type (UnsignedInt) with the appropriate > constructor. Performing deprecated automatic conversion. > Schema context: DataOffset Location line 136 column 16 in file:tcp.dfdl.xsd > [error] Parse Error: Insufficient bits in data. Needed 96 bit(s). > Schema context: Options Location line 143 column 16 in file:tcp.dfdl.xsd > Data location was preceding byte 20 > {code} > Attached is the extracted form of tcp from the public PCAP schema: > [https://github.com/DFDLSchemas/PCAP/blob/master/src/main/resources/com/tresys/pcap/xsd/pcap.dfdl.xsd] -- This message was sent by Atlassian JIRA (v7.6.3#76005)