Olabusayo Kilo created DAFFODIL-2123: ----------------------------------------
Summary: 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, Debugger, Diagnostics Affects Versions: 2.4.0 Reporter: Olabusayo Kilo 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} -- This message was sent by Atlassian JIRA (v7.6.3#76005)