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

Reply via email to