Uploaded image for project: 'Daffodil'
  1. Daffodil
  2. DAFFODIL-2666

NITF cyclic deadlock regression

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Blocker
    • Resolution: Fixed
    • 3.3.0
    • 3.3.0
    • DFDL Schemas
    • None

    Description

      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:

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

       

      Attachments

        Activity

          People

            mbeckerle Mike Beckerle
            mbeckerle Mike Beckerle
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: