[
https://issues.apache.org/jira/browse/DAFFODIL-2664?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17495798#comment-17495798
]
Dave Thompson commented on DAFFODIL-2664:
-----------------------------------------
Additional information:
This issue was introduced in commit 9043425760dae277eff36087a2e715c70793db9c.
It affected PNG unparsing tests in the full performance test suite run over the
weekends.
> PNG DFDL Schema fails regression testing on 3.3.0-SNAPSHOT
> ----------------------------------------------------------
>
> Key: DAFFODIL-2664
> URL: https://issues.apache.org/jira/browse/DAFFODIL-2664
> Project: Daffodil
> Issue Type: Bug
> Components: DFDL Schemas, QA
> Affects Versions: 3.3.0
> Reporter: Mike Beckerle
> Priority: Blocker
>
> Just noticed that PNG fails its tests now on 3.3.0-SNAPSHOT as of git hash
> 62d7bbe69847d85c780f40855c5cfef29a5a7c23
>
> First, it gets a million SDWs, so needs changes to suppress them, or have the
> things causing all these warnings fixed.
> One example SDW is this, but there are tons of others also:
> {code:java}
> [error] SchemaDefinitionWarning: Schema Definition Warning: Counterintuitive
> placement detected. Wrap the discriminator or assert in an empty sequence to
> evaluate before the contents.{code}
> The real backtrace is a Runtime SDE at unparse time:
> {code:java}
> [error] SuspensionDeadlockException: Runtime Schema Definition Error:
> Expressions/Unparsers are circularly deadlocked (mutually defined):
> [error] - SuspendableExpression(Length, expr={ if
> (fn:exists(../IHDR)) then dfdl:valueLength(../IHDR, 'bytes') else if
> (fn:exists(../PLTE)) then fn:count(../PLTE/Entry) * 3 else if
> (fn:exists(../IDAT)) then dfdl:valueLength(../IDAT/Data, 'bytes') else if
> (fn:exists(../IEND)) then dfdl:valueLength(../IEND, 'bytes') else if
> (fn:exists(../cHRM)) then 32 else if (fn:exists(../gAMA)) then
> dfdl:valueLength(../gAMA/Image_Gamma, 'bytes') else if
> (fn:exists(../iCCP)) then dfdl:valueLength(../iCCP/Profile_Name, 'bytes') +
> dfdl:valueLength(../iCCP/Compressed_Profile, 'bytes') + 2 else if
> (fn:exists(../sBIT)) then ( if
> (fn:exists(../sBIT/Color_Type/Color_Type_0)) then 1 else if
> (fn:exists(../sBIT/Color_Type/Color_Types_2_and_3)) then 3 else if
> (fn:exists(../sBIT/Color_Type/Color_Type_4)) then 4 else if
> (fn:exists(../sBIT/Color_Type/Color_Type_6)) then 4 else fn:error('png',
> 'fn:error called.', .) ) else if (fn:exists(../sRGB)) then 1 else
> if (fn:exists(../tEXt)) then dfdl:valueLength(../tEXt/Keyword, 'bytes') +
> dfdl:valueLength(../tEXt/Text, 'bytes') + 1 else if (fn:exists(../zTXt))
> then dfdl:valueLength(../zTXt/Keyword, 'bytes') +
> dfdl:valueLength(../zTXt/Compressed_Text_Datastream, 'bytes') + 2 else if
> (fn:exists(../iTXt)) then dfdl:valueLength(../iTXt/Keyword, 'bytes') +
> dfdl:valueLength(../iTXt/Language_Tag, 'bytes') +
> dfdl:valueLength(../iTXt/Translated_Keyword, 'bytes') +
> dfdl:valueLength(../iTXt/Text, 'bytes') + 5 else if (fn:exists(../bKGD))
> then ( if (fn:exists(../bKGD/Color_Types_0_and_4)) then 2 else if
> (fn:exists(../bKGD/Color_Types_2_and_6)) then 6 else if
> (fn:exists(../bKGD/Color_Type_3)) then 1 else fn:error('png', 'fn:error
> called.', .) ) else if (fn:exists(../hIST)) then
> fn:count(../hIST/Frequency) * 2 else if (fn:exists(../tRNS)) then (
> if (fn:exists(../tRNS/Grey)) then 2 else if (fn:exists(../tRNS/Red))
> then 6 else if (fn:exists(../tRNS/Alpha)) then fn:count(../tRNS/Alpha)
> else fn:error('png', 'fn:error called.', .) ) else if
> (fn:exists(../pHYs)) then 9 else if (fn:exists(../sPLT)) then ( if
> (../sPLT/Sample_Depth eq 8) then
> (fn:count(../sPLT/Palette_Entries/Eight_bit_Sample_Depth) * 6) +
> dfdl:valueLength(../sPLT/Palette_Name, 'bytes') + 2 else
> (fn:count(../sPLT/Palette_Entries/Sixteen_bit_Sample_Depth) * 10) +
> dfdl:valueLength(../sPLT/Palette_Name, 'bytes') + 2 ) else if
> (fn:exists(../tIME)) then 7 else fn:error('png', 'fn:error called.', .)
> })
> [error] - target length for element reference {}IEND expr
> <EvaluatableExpression eName='Chunk/element reference {}IEND' expr='{
> ../Length }' />
> [error] - AlignmentFillUnparserSuspendableOperation for sequence[1]
> [error] Schema context: Length Location line 53 column 14 in
> file:/home/mbeckerle/Documents/dataiti/git/dfdl-regression-test/dfdl-png/target/classes/com/mitre/png/xsd/png.dfdl.xsd
> [error] Data location was preceding byte 212, took 0.262 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)
>
> {code}
>
>
>
--
This message was sent by Atlassian Jira
(v8.20.1#820001)