[ 
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)

Reply via email to