Mike Beckerle created DAFFODIL-2664:
---------------------------------------
Summary: 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
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)