[
https://issues.apache.org/jira/browse/DAFFODIL-2666?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17496864#comment-17496864
]
Mike Beckerle commented on DAFFODIL-2666:
-----------------------------------------
Cyclic deadlocks also occur when testing the related dfdl-raster schema, which
has NITF as a dependency.
> 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
> Priority: Major
>
> 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)