[ https://issues.apache.org/jira/browse/DAFFODIL-2046?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Josh Adams reassigned DAFFODIL-2046: ------------------------------------ Assignee: Josh Adams > Poor handling of missing source attribute on <xs:appinfo> element > ----------------------------------------------------------------- > > Key: DAFFODIL-2046 > URL: https://issues.apache.org/jira/browse/DAFFODIL-2046 > Project: Daffodil > Issue Type: Bug > Components: Diagnostics > Affects Versions: 2.1.0 > Reporter: Brandon Sloane > Assignee: Josh Adams > Priority: Major > Attachments: test.dfdl.xsd > > > When an appinfo element is present inside an empty sequence inside of a > choice, and said appinfo element is missing its source attribute, Daffodil > crashes instead of producing a useful error message. > > A complete schema is attached, but the relevent section is: > > {quote}<xs:element name="a"> > <xs:complexType> > <xs:choice> > <xs:sequence> > <xs:annotation> > <!-- > <xs:appinfo source="http://www.ogf.org/dfdl/"> > --> > <xs:appinfo> > <dfdl:discriminator testKind="pattern" testPattern="."/> > </xs:appinfo> > </xs:annotation> > </xs:sequence> > </xs:choice> > </xs:complexType> > </xs:element> > Actual Output: > !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! > !! An unexpected exception occurred. This is a bug! !! > !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! > Please report this bug and help us fix it: > https://daffodil.apache.org/community/#issue-tracker > Please include the following exception, the command you > ran, and any input, schema, or tdml files used that led > to this bug. > org.apache.daffodil.oolag.CircularDefinition: OOLAG Cycle (of 2) through > groupMembers@253380088, groupMembers@253380088 > at > org.apache.daffodil.oolag.OOLAG$OOLAGValueBase.oolagBefore(OOLAG.scala:492) > at org.apache.daffodil.oolag.OOLAG$OOLAGValue.liftedTree1$1(OOLAG.scala:584) > at > org.apache.daffodil.oolag.OOLAG$OOLAGValue.value$lzycompute(OOLAG.scala:583) > at org.apache.daffodil.oolag.OOLAG$OOLAGValue.value(OOLAG.scala:581) > at > org.apache.daffodil.dsom.GroupDefLike$class.groupMembers(GroupDef.scala:70) > at > org.apache.daffodil.dsom.Choice.groupMembers$lzycompute(ChoiceGroup.scala:267) > at org.apache.daffodil.dsom.Choice.groupMembers(ChoiceGroup.scala:267) > at > org.apache.daffodil.dsom.ModelGroup.sequenceChildren$lzycompute(ModelGroup.scala:201) > at org.apache.daffodil.dsom.ModelGroup.sequenceChildren(ModelGroup.scala:201) > at > org.apache.daffodil.dsom.ModelGroup$$anonfun$sequencePeers$1.apply(ModelGroup.scala:161) > at > org.apache.daffodil.dsom.ModelGroup$$anonfun$sequencePeers$1.apply(ModelGroup.scala:161) > at > org.apache.daffodil.dsom.ModelGroup.sequencePeers$lzycompute(ModelGroup.scala:161) > at org.apache.daffodil.dsom.ModelGroup.sequencePeers(ModelGroup.scala:161) > at > org.apache.daffodil.dsom.SequenceTermBase.myPeers$lzycompute(SequenceGroup.scala:54) > at org.apache.daffodil.dsom.SequenceTermBase.myPeers(SequenceGroup.scala:54) > at > org.apache.daffodil.dsom.ModelGroup$$anonfun$prettyIndex$1.apply(ModelGroup.scala:147) > at > org.apache.daffodil.dsom.ModelGroup$$anonfun$prettyIndex$1.apply(ModelGroup.scala:152) > at org.apache.daffodil.oolag.OOLAG$OOLAGValue.liftedTree1$1(OOLAG.scala:585) > at > org.apache.daffodil.oolag.OOLAG$OOLAGValue.value$lzycompute(OOLAG.scala:583) > at org.apache.daffodil.oolag.OOLAG$OOLAGValue.value(OOLAG.scala:581) > at org.apache.daffodil.dsom.ModelGroup.prettyIndex(ModelGroup.scala:152) > at > org.apache.daffodil.dsom.ModelGroup.diagnosticDebugName$lzycompute(ModelGroup.scala:155) > at > org.apache.daffodil.dsom.ModelGroup.diagnosticDebugName(ModelGroup.scala:155) > at > org.apache.daffodil.dsom.SchemaComponent$class.toString(SchemaComponent.scala:180) > at org.apache.daffodil.dsom.ModelGroup.toString(ModelGroup.scala:129) > at > org.apache.daffodil.exceptions.SchemaFileLocation.<init>(SchemaFileLocatable.scala:52) > at > org.apache.daffodil.exceptions.SchemaFileLocatable$class.schemaFileLocation(SchemaFileLocatable.scala:131) > at > org.apache.daffodil.dsom.ModelGroup.schemaFileLocation$lzycompute(ModelGroup.scala:129) > at > org.apache.daffodil.dsom.ModelGroup.schemaFileLocation(ModelGroup.scala:129) > at > org.apache.daffodil.dsom.ImplementsThrowsOrSavesSDE$class.SDW(SDE.scala:190) > at org.apache.daffodil.dsom.ModelGroup.SDW(ModelGroup.scala:129) > at > org.apache.daffodil.dsom.AnnotatedMixin$$anonfun$11.apply(AnnotatedSchemaComponent.scala:288) > at > org.apache.daffodil.dsom.AnnotatedMixin$$anonfun$11.apply(AnnotatedSchemaComponent.scala:284) > at > scala.collection.TraversableLike$$anonfun$filterImpl$1.apply(TraversableLike.scala:248) > at scala.collection.Iterator$class.foreach(Iterator.scala:893) > at scala.collection.AbstractIterator.foreach(Iterator.scala:1336) > at scala.collection.IterableLike$class.foreach(IterableLike.scala:72) > at scala.collection.AbstractIterable.foreach(Iterable.scala:54) > at > scala.collection.TraversableLike$class.filterImpl(TraversableLike.scala:247) > at scala.collection.TraversableLike$class.filter(TraversableLike.scala:259) > at scala.collection.AbstractTraversable.filter(Traversable.scala:104) > at > org.apache.daffodil.dsom.AnnotatedMixin$class.dfdlAppInfos(AnnotatedSchemaComponent.scala:284) > at > org.apache.daffodil.dsom.ModelGroup.dfdlAppInfos$lzycompute(ModelGroup.scala:129) > at org.apache.daffodil.dsom.ModelGroup.dfdlAppInfos(ModelGroup.scala:129) > at > org.apache.daffodil.dsom.AnnotatedMixin$class.annotationObjs(AnnotatedSchemaComponent.scala:325) > at > org.apache.daffodil.dsom.ModelGroup.annotationObjs$lzycompute(ModelGroup.scala:129) > at org.apache.daffodil.dsom.ModelGroup.annotationObjs(ModelGroup.scala:129) > at > org.apache.daffodil.dsom.AnnotatedMixin$$anonfun$formatAnnotation$1.apply(AnnotatedSchemaComponent.scala:355) > at > org.apache.daffodil.dsom.AnnotatedMixin$$anonfun$formatAnnotation$1.apply(AnnotatedSchemaComponent.scala:354) > at org.apache.daffodil.oolag.OOLAG$OOLAGValue.liftedTree1$1(OOLAG.scala:585) > at > org.apache.daffodil.oolag.OOLAG$OOLAGValue.value$lzycompute(OOLAG.scala:583) > at org.apache.daffodil.oolag.OOLAG$OOLAGValue.value(OOLAG.scala:581) > at > org.apache.daffodil.dsom.AnnotatedMixin$class.formatAnnotation(AnnotatedSchemaComponent.scala:354) > at > org.apache.daffodil.dsom.ModelGroup.formatAnnotation$lzycompute(ModelGroup.scala:129) > at org.apache.daffodil.dsom.ModelGroup.formatAnnotation(ModelGroup.scala:129) > at > org.apache.daffodil.dsom.AnnotatedSchemaComponent$class.nonDefaultFormatChain(AnnotatedSchemaComponent.scala:207) > at > org.apache.daffodil.dsom.ModelGroup.nonDefaultFormatChain$lzycompute(ModelGroup.scala:129) > at > org.apache.daffodil.dsom.ModelGroup.nonDefaultFormatChain(ModelGroup.scala:129) > at > org.apache.daffodil.dsom.AnnotatedSchemaComponent$class.findPropertyOptionThisComponentOnly(AnnotatedSchemaComponent.scala:255) > at > org.apache.daffodil.dsom.SequenceDefMixin$class.hiddenGroupRefOption(SequenceGroup.scala:280) > at > org.apache.daffodil.dsom.Sequence.hiddenGroupRefOption$lzycompute(SequenceGroup.scala:287) > at > org.apache.daffodil.dsom.Sequence.hiddenGroupRefOption(SequenceGroup.scala:287) > at org.apache.daffodil.dsom.ModelGroupFactory$.apply(ModelGroup.scala:53) > at org.apache.daffodil.dsom.TermFactory$.apply(ModelGroup.scala:117) > at > org.apache.daffodil.dsom.GroupDefLike$$anonfun$groupMembers$1$$anonfun$apply$2.apply(GroupDef.scala:80) > at > org.apache.daffodil.dsom.GroupDefLike$$anonfun$groupMembers$1$$anonfun$apply$2.apply(GroupDef.scala:78) > at > scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241) > at > scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241) > at scala.collection.immutable.List.foreach(List.scala:381) > at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:241) > at scala.collection.immutable.List.flatMap(List.scala:344) > at > org.apache.daffodil.dsom.GroupDefLike$$anonfun$groupMembers$1.apply(GroupDef.scala:78) > at > org.apache.daffodil.dsom.GroupDefLike$$anonfun$groupMembers$1.apply(GroupDef.scala:70) > at org.apache.daffodil.oolag.OOLAG$OOLAGValue.liftedTree1$1(OOLAG.scala:585) > at > org.apache.daffodil.oolag.OOLAG$OOLAGValue.value$lzycompute(OOLAG.scala:583) > at org.apache.daffodil.oolag.OOLAG$OOLAGValue.value(OOLAG.scala:581) > at > org.apache.daffodil.dsom.GroupDefLike$class.groupMembers(GroupDef.scala:70) > at > org.apache.daffodil.dsom.Choice.groupMembers$lzycompute(ChoiceGroup.scala:267) > at org.apache.daffodil.dsom.Choice.groupMembers(ChoiceGroup.scala:267) > at > org.apache.daffodil.dsom.ModelGroup.elementChildren$lzycompute(ModelGroup.scala:178) > at org.apache.daffodil.dsom.ModelGroup.elementChildren(ModelGroup.scala:177) > at > org.apache.daffodil.dsom.ElementBase$class.elementChildren(ElementBase.scala:578) > at > org.apache.daffodil.dsom.AbstractElementRef.elementChildren$lzycompute(ElementRef.scala:33) > at > org.apache.daffodil.dsom.AbstractElementRef.elementChildren(ElementRef.scala:33) > at > org.apache.daffodil.dsom.ElementBase$class.checkParseUnparsePolicyCompatibility(ElementBase.scala:1156) > at > org.apache.daffodil.dsom.AbstractElementRef.checkParseUnparsePolicyCompatibility(ElementRef.scala:33) > at > org.apache.daffodil.compiler.ProcessorFactory.x$2$lzycompute(Compiler.scala:89) > at org.apache.daffodil.compiler.ProcessorFactory.x$2(Compiler.scala:82) > at > org.apache.daffodil.compiler.ProcessorFactory.generateUnparser$lzycompute(Compiler.scala:82) > at > org.apache.daffodil.compiler.ProcessorFactory.generateUnparser(Compiler.scala:82) > at > org.apache.daffodil.compiler.ProcessorFactory$$anonfun$unparser$1.apply(Compiler.scala:104) > at > org.apache.daffodil.compiler.ProcessorFactory$$anonfun$unparser$1.apply(Compiler.scala:103) > at org.apache.daffodil.oolag.OOLAG$OOLAGValue.liftedTree1$1(OOLAG.scala:585) > at > org.apache.daffodil.oolag.OOLAG$OOLAGValue.value$lzycompute(OOLAG.scala:583) > at org.apache.daffodil.oolag.OOLAG$OOLAGValue.value(OOLAG.scala:581) > at > org.apache.daffodil.compiler.ProcessorFactory.unparser$lzycompute(Compiler.scala:103) > at org.apache.daffodil.compiler.ProcessorFactory.unparser(Compiler.scala:103) > at > org.apache.daffodil.compiler.ProcessorFactory$$anonfun$4.apply(Compiler.scala:123) > at > org.apache.daffodil.compiler.ProcessorFactory$$anonfun$4.apply(Compiler.scala:123) > at org.apache.daffodil.oolag.OOLAG$OOLAGValue.liftedTree1$1(OOLAG.scala:585) > at > org.apache.daffodil.oolag.OOLAG$OOLAGValue.value$lzycompute(OOLAG.scala:583) > at org.apache.daffodil.oolag.OOLAG$OOLAGValue.value(OOLAG.scala:581) > at org.apache.daffodil.oolag.OOLAG$OOLAGValue.valueAsAny(OOLAG.scala:579) > at > org.apache.daffodil.oolag.OOLAG$OOLAGHost$$anonfun$checkErrors$2.apply$mcV$sp(OOLAG.scala:287) > at > org.apache.daffodil.oolag.OOLAG$OOLAGHost$$anonfun$checkErrors$2.apply(OOLAG.scala:287) > at > org.apache.daffodil.oolag.OOLAG$OOLAGHost$$anonfun$checkErrors$2.apply(OOLAG.scala:287) > at org.apache.daffodil.oolag.OOLAG$.keepGoing(OOLAG.scala:60) > at > org.apache.daffodil.oolag.OOLAG$OOLAGHost$class.checkErrors(OOLAG.scala:287) > at org.apache.daffodil.oolag.OOLAG$OOLAGHost$class.isError(OOLAG.scala:346) > at > org.apache.daffodil.compiler.ProcessorFactory.org$apache$daffodil$compiler$ProcessorFactory$$super$isError(Compiler.scala:137) > at > org.apache.daffodil.compiler.ProcessorFactory$$anonfun$isError$1$$anonfun$apply$mcZ$sp$2.apply$mcZ$sp(Compiler.scala:137) > at > org.apache.daffodil.compiler.ProcessorFactory$$anonfun$isError$1$$anonfun$apply$mcZ$sp$2.apply(Compiler.scala:128) > at > org.apache.daffodil.compiler.ProcessorFactory$$anonfun$isError$1$$anonfun$apply$mcZ$sp$2.apply(Compiler.scala:128) > at org.apache.daffodil.oolag.OOLAG$.keepGoing(OOLAG.scala:60) > at > org.apache.daffodil.compiler.ProcessorFactory$$anonfun$isError$1.apply$mcZ$sp(Compiler.scala:128) > at > org.apache.daffodil.compiler.ProcessorFactory$$anonfun$isError$1.apply(Compiler.scala:128) > at > org.apache.daffodil.compiler.ProcessorFactory$$anonfun$isError$1.apply(Compiler.scala:128) > at scala.util.DynamicVariable.withValue(DynamicVariable.scala:58) > at > org.apache.daffodil.ExecutionMode$$anonfun$usingCompilerMode$1.apply(ExecutionMode.scala:64) > at > org.apache.daffodil.ExecutionMode$$anonfun$usingCompilerMode$1.apply(ExecutionMode.scala:64) > at org.apache.daffodil.compiler.ProcessorFactory.isError(Compiler.scala:128) > at org.apache.daffodil.compiler.Compiler.compileSource(Compiler.scala:333) > at org.apache.daffodil.Main$$anonfun$71.apply(Main.scala:712) > at org.apache.daffodil.Main$$anonfun$71.apply(Main.scala:711) > 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$.createProcessorFromSchema(Main.scala:711) > at org.apache.daffodil.Main$.run(Main.scala:824) > at org.apache.daffodil.Main$.main(Main.scala:1297) > at org.apache.daffodil.Main.main(Main.scala) > {quote} -- This message was sent by Atlassian JIRA (v7.6.3#76005)