Mike Beckerle created DAFFODIL-2666:
---------------------------------------

             Summary: NITF cyclic deadlock regression 
                 Key: DAFFODIL-2666
                 URL: https://issues.apache.org/jira/browse/DAFFODIL-2666
             Project: Daffodil
          Issue Type: Bug
          Components: DFDL Schemas
    Affects Versions: 3.3.0
            Reporter: Mike Beckerle


The public NITF schema fails.

It gets a bunch of warnings that need to be suppressed via a config file, but 
it also gets this deadlock:
{code:java}
[error] SuspensionDeadlockException: Runtime Schema Definition Error: 
Expressions/Unparsers are circularly deadlocked (mutually defined):
[error]  - AlignmentFillUnparserSuspendableOperation for choice[1]
[error]  - AlignmentFillUnparserSuspendableOperation for sequence[1]
[error]  - SuspendableExpression(ImageExtendedSubheaderDataLength, expr={       
                if (fn:exists(../ImageExtendedSubheaderData)) then 
dfdl:valueLength(../ImageExtendedSubheaderData[1]/nitf:TaggedRecordExtensions, 
'bytes') + 3 else 0                       })
[error]  - ElementUnusedUnparserSuspendableOperation for UserDefinedData
[error]  - target length for Data expr <EvaluatableExpression 
eName='ImageSegment/Data' expr='{ 
../../Header/ImageSegmentLengths[dfdl:occursIndex()]/DataLength }' />
[error]  - SuspendableExpression(HeaderLength, expr={                       259 
+                       (if ($nitf:nitfVersion eq '02.00') then 
dfdl:valueLength(../../../ImageSegment[dfdl:occursIndex()]/Header/ClassificationInformation,
 'bytes') else 167) +                       (60 * 
fn:count(../../../ImageSegment[dfdl:occursIndex()]/Header/ImageGeographicLocation))
 +                       (80 * 
fn:count(../../../ImageSegment[dfdl:occursIndex()]/Header/ImageComment)) +      
                 (4  * 
fn:count(../../../ImageSegment[dfdl:occursIndex()]/Header/CompressionRateCode)) 
+                       (5  * 
fn:count(../../../ImageSegment[dfdl:occursIndex()]/Header/NumberOfMultispectralBands))
 +                       (3  * 
fn:count(../../../ImageSegment[dfdl:occursIndex()]/Header/UserDefinedOverflow)) 
+                       (3  * 
fn:count(../../../ImageSegment[dfdl:occursIndex()]/Header/ImageExtendedSubheaderOverflow))
 +                       (if 
(fn:exists(../../../ImageSegment[dfdl:occursIndex()]/Header/Bands)) then 
dfdl:valueLength(../../../ImageSegment[dfdl:occursIndex()]/Header/Bands, 
'bytes') else 0) +                       (if 
(fn:exists(../../../ImageSegment[dfdl:occursIndex()]/Header/UserDefinedImageData))
 then 
dfdl:valueLength(../../../ImageSegment[dfdl:occursIndex()]/Header/UserDefinedImageData[1],
 'bytes') else 0) +                       (if 
(fn:exists(../../../ImageSegment[dfdl:occursIndex()]/Header/ImageExtendedSubheaderData))
 then 
dfdl:valueLength(../../../ImageSegment[dfdl:occursIndex()]/Header/ImageExtendedSubheaderData[1],
 'bytes') else 0)                       })
[error]  - ElementUnusedUnparserSuspendableOperation for Header
[error]  - target length for ImageExtendedSubheaderData expr 
<EvaluatableExpression eName='ImageSegment/Header/ImageExtendedSubheaderData' 
expr='{ ../ImageExtendedSubheaderDataLength - 3 }' />
[error]  - AlignmentFillUnparserSuspendableOperation for sequence[1]
[error]  - SuspendableExpression(DataLength, expr={ 
dfdl:valueLength(../../../ImageSegment[dfdl:occursIndex()]/Data, 'bytes') })
[error]  - AlignmentFillUnparserSuspendableOperation for sequence[1]
[error] Schema context: ImageExtendedSubheaderDataLength Location line 533 
column 22 in 
file:/home/mbeckerle/Documents/dataiti/git/dfdl-regression-test/dfdl-nitf/target/classes/com/tresys/nitf/xsd/nitf.dfdl.xsd
[error] Data location was preceding byte 2337, took 0.313 sec
[error]     at 
org.apache.daffodil.tdml.TDMLException$.apply(TDMLException.scala:33)
[error]     at 
org.apache.daffodil.tdml.ParserTestCase.doOnePassRoundTripUnparseExpectSuccess(TDMLRunner.scala:1146)
[error]     at 
org.apache.daffodil.tdml.ParserTestCase.runParseExpectSuccess(TDMLRunner.scala:1281)
[error]     at 
org.apache.daffodil.tdml.ParserTestCase.$anonfun$runProcessor$2(TDMLRunner.scala:963)
[error]     at 
org.apache.daffodil.tdml.ParserTestCase.$anonfun$runProcessor$2$adapted(TDMLRunner.scala:960)
[error]     at scala.util.Either$RightProjection.foreach(Either.scala:652)
[error]     at 
org.apache.daffodil.tdml.ParserTestCase.runProcessor(TDMLRunner.scala:960) 
{code}
 



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to